name : edk2-ovmf version : 202405 release : 11 source : - git|https://github.com/tianocore/edk2 : edk2-stable202405 # Reference aarch64 compiler provided by ARM (Solus does not have a usable ARM stack that works with this package) # https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads - https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x86_64-aarch64-none-linux-gnu.tar.xz#arm-gnu-toolchain.tar.xz : 12fcdf13a7430655229b20438a49e8566e26551ba08759922cdaf4695b0d4e23 license : - BSD-2-Clause - BSD-3-Clause - MIT - Python-2.0 - Zlib homepage : https://github.com/tianocore/tianocore.github.io/wiki/EDK-II component : - virt - aarch64 : virt - i386 : virt summary : - UEFI support for Virtual Machines - aarch64 : UEFI support for Virtual Machines - aarch64 firmware - i386 : UEFI support for Virtual Machines - i386 firmware description: | OVMF is an EDK II based project to enable UEFI support for Virtual Machines. OVMF contains UEFI firmware for QEMU and KVM. replaces : - ovmf builddeps : - pkgconfig(python3) - acpica-unix setup : | mkdir gcc-aarch64 tar --strip-components=1 -xf $sources/arm-gnu-toolchain.tar.xz -C gcc-aarch64 build : | export GCC5_AARCH64_PREFIX="$workdir/gcc-aarch64/bin/aarch64-none-linux-gnu-" ARCH=AARCH64 make -C BaseTools make %JOBS% -C BaseTools . edksetup.sh # Options that should be used by every build, including the shells CC_OPTS=('-b RELEASE' '-n %YJOBS%' '-t GCC5') # Options that should be used for all EFI binaries OVMF_OPTS=('-D NETWORK_IP6_ENABLE' '-D TPM_CONFIG_ENABLE' '-D TPM1_ENABLE' '-D TPM2_ENABLE') # Options that should be used for x86_64/i686 builds OVMF_X86_OPTS=('-D FD_SIZE_2MB' '-D TPM_CONFIG_ENABLE' '-D TPM1_ENABLE' '-D TPM2_ENABLE') # Options that should only be used by secure boot builds - excluding AARCH64 OVMF_SB_OPTS=('-D SECURE_BOOT_ENABLE' '-D SMM_REQUIRE' '-D BUILD_SHELL=FALSE' '-D EXCLUDE_SHELL_FROM_FD') ## X64 BaseTools/BinWrappers/PosixLike/build -p ShellPkg/ShellPkg.dsc \ -a "X64" \ ${CC_OPTS[@]} # X64 - Secure Boot BaseTools/BinWrappers/PosixLike/build -p "OvmfPkg/OvmfPkgX64.dsc" \ -a "X64" \ ${CC_OPTS[@]} \ ${OVMF_OPTS[@]} \ ${OVMF_X86_OPTS[@]} \ ${OVMF_SB_OPTS[@]} mv -v Build/OvmfX64{,-secure} # X64 - No Secure Boot BaseTools/BinWrappers/PosixLike/build -p "OvmfPkg/OvmfPkgX64.dsc" \ -a "X64" \ ${CC_OPTS[@]} \ ${OVMF_OPTS[@]} \ ${OVMF_X86_OPTS[@]} ## IA32 BaseTools/BinWrappers/PosixLike/build -p ShellPkg/ShellPkg.dsc \ -a "IA32" \ ${CC_OPTS[@]} \ ${OVMF_OPTS[@]} \ ${OVMF_X86_OPTS[@]} \ -D LOAD_X64_ON_IA32_ENABLE # IA32 - Secure Boot BaseTools/BinWrappers/PosixLike/build -p "OvmfPkg/OvmfPkgIa32.dsc" \ -a "IA32" \ ${CC_OPTS[@]} \ ${OVMF_OPTS[@]} \ ${OVMF_X86_OPTS[@]} \ ${OVMF_SB_OPTS[@]} \ -D LOAD_X64_ON_IA32_ENABLE mv -v Build/Ovmf{Ia32,IA32-secure} # IA32 - No Secure Boot BaseTools/BinWrappers/PosixLike/build -p "OvmfPkg/OvmfPkgIa32.dsc" \ -a "IA32" \ ${CC_OPTS[@]} \ ${OVMF_OPTS[@]} \ ${OVMF_X86_OPTS[@]} \ -D LOAD_X64_ON_IA32_ENABLE mv -v Build/Ovmf{Ia32,IA32} ## ARMVIRT # AARCH64 - Secure Boot only BaseTools/BinWrappers/PosixLike/build -p "ArmVirtPkg/ArmVirtQemu.dsc" \ -a "AARCH64" \ ${CC_OPTS[@]} \ ${OVMF_OPTS[@]} \ -D SECURE_BOOT_ENABLE \ -D NETWORK_HTTP_BOOT_ENABLE \ -D NETWORK_TLS_ENABLE dd if="/dev/zero" \ of="Build/ArmVirtQemu-AARCH64/RELEASE_GCC5/FV/QEMU_CODE.fd" \ bs=1M count=64 dd if="Build/ArmVirtQemu-AARCH64/RELEASE_GCC5/FV/QEMU_EFI.fd" \ of="Build/ArmVirtQemu-AARCH64/RELEASE_GCC5/FV/QEMU_CODE.fd" \ conv=notrunc dd if="/dev/zero" \ of="Build/ArmVirtQemu-AARCH64/RELEASE_GCC5/FV/QEMU_VARS.fd" \ bs=1M count=64 install : | install -dm 0755 $installdir/usr/share/qemu/firmware/ install -Dm 0644 $pkgfiles/*-edk2-ovmf-*.json $installdir/usr/share/qemu/firmware/ install -Dm 0644 $workdir/Build/OvmfX64-secure/RELEASE_GCC5/FV/OVMF_CODE.fd $installdir/usr/share/edk2-ovmf/x64/OVMF_CODE.secboot.fd install -Dm 0644 $workdir/Build/OvmfX64/RELEASE_GCC5/FV/*.fd $installdir/usr/share/edk2-ovmf/x64/ install -Dm 0644 $workdir/Build/OvmfIA32-secure/RELEASE_GCC5/FV/OVMF_CODE.fd $installdir/usr/share/edk2-ovmf/i386/OVMF_CODE.secboot.fd install -Dm 0644 $workdir/Build/OvmfIA32/RELEASE_GCC5/FV/*.fd $installdir/usr/share/edk2-ovmf/i386/ install -dm 0755 $installdir/usr/share/edk2-ovmf/aarch64/ install -Dm 0644 $workdir/Build/ArmVirtQemu-AARCH64/RELEASE_GCC5/FV/*.fd $installdir/usr/share/edk2-ovmf/aarch64/ install -Dm 0644 $workdir/License.txt $installdir/usr/share/edk2-ovmf/edk2_License.txt install -Dm 0644 $workdir/OvmfPkg/License.txt $installdir/usr/share/edk2-ovmf/OvmfPkg_License.txt patterns : - aarch64 : - /usr/share/edk2-ovmf/aarch64/ - /usr/share/qemu/firmware/*aarch64*.json - i386 : - /usr/share/edk2-ovmf/i386/ - /usr/share/qemu/firmware/*i386*.json