Skip to content

Instantly share code, notes, and snippets.

@mihalicyn
Created January 6, 2026 12:00
Show Gist options
  • Select an option

  • Save mihalicyn/0dd2bbdf944f3b4db630143bac5520f0 to your computer and use it in GitHub Desktop.

Select an option

Save mihalicyn/0dd2bbdf944f3b4db630143bac5520f0 to your computer and use it in GitHub Desktop.
replace-edk2-logo.sh
#!/bin/bash
# Example:
# cd edk2
# ../edk2-logo-replacement/replace-logo.sh ~/storage/dev/edk2-logo-replacement/out-alt/share/qemu/OVMF_CODE.4MB.fd ../edk2-logo-replacement/edk2-0002-logo-alt.bmp ../edk2-logo-replacement/output.4MB.fd
# ../edk2-logo-replacement/replace-logo.sh /usr/share/ovmf/OVMF.fd ../edk2-logo-replacement/edk2-0002-logo-alt.bmp ../edk2-logo-replacement/output.4MB.fd
set -ex
# must be run from edk2 tree
[ -f "edksetup.sh" ]
#cd ~/storage/dev/edk2
SOURCE_FD="$1"
shift
SOURCE_BMP="$1"
shift
TARGET_FD="$1"
shift
[ "${TARGET_FD}" != "${SOURCE_FD}" ]
rm -f "${TARGET_FD}"
cp "${SOURCE_BMP}" MdeModulePkg/Logo/Logo.bmp
# Arch-specific logic
ARCH="X64"
PKG="OvmfPkg/OvmfPkgX64.dsc"
if [ "$(uname -m)" = "aarch64" ]; then
ARCH="AARCH64"
PKG="ArmVirtPkg/ArmVirtQemu.dsc"
fi
# see edk2/MdeModulePkg/Logo/LogoDxe.inf
LOGO_DXE_GUID="F74D20EE-37E7-48FC-97F7-9B1047749C69"
. ./edksetup.sh
make -C BaseTools ARCH=${ARCH}
build -m MdeModulePkg/Logo/LogoDxe.inf \
-a ${ARCH} -t GCC5 -b RELEASE -p ${PKG}
LOGO_DXE_FFS=Build/*/*/FV/Ffs/${LOGO_DXE_GUID}LogoDxe/${LOGO_DXE_GUID}.ffs
#file ${LOGO_DXE_FFS}
export PYTHONPATH=$(pwd)/BaseTools/Source/Python
# Extract the existing LogoDxe module from the firmware
# python3 BaseTools/Source/Python/FMMT/FMMT.py -e "${SOURCE_FD}" "${LOGO_DXE_GUID}" LogoDxe.extracted.ffs
# ls -lah LogoDxe.extracted.ffs
# ls -lah ${LOGO_DXE_FFS}
# Replace the LogoDxe module in the firmware
python3 BaseTools/Source/Python/FMMT/FMMT.py -r "${SOURCE_FD}" "${LOGO_DXE_GUID}" ${LOGO_DXE_FFS} "${TARGET_FD}"
# Ensure that we can unpack the modified firmware
# python3 BaseTools/Source/Python/FMMT/FMMT.py -v "${TARGET_FD}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment