die("Couldn't find QEMU/KVM binary")
-def find_qemu_firmware() -> Tuple[Path, bool]:
+def find_qemu_firmware(args: MkosiArgs) -> Tuple[Path, bool]:
FIRMWARE_LOCATIONS = [
# UEFI firmware blobs are found in a variety of locations,
# depending on distribution and package.
*{
"x86_64": ["/usr/share/ovmf/x64/OVMF_CODE.secboot.fd"],
- "i386": ["/usr/share/edk2/ovmf-ia32/OVMF_CODE.secboot.fd"],
- }.get(platform.machine(), []),
+ "i386": [
+ "/usr/share/edk2/ovmf-ia32/OVMF_CODE.secboot.fd",
+ "/usr/share/OVMF/OVMF32_CODE_4M.secboot.fd"
+ ],
+ }.get(args.architecture, []),
"/usr/share/edk2/ovmf/OVMF_CODE.secboot.fd",
"/usr/share/edk2-ovmf/OVMF_CODE.secboot.fd", # GENTOO:
"/usr/share/qemu/OVMF_CODE.secboot.fd",
"/usr/share/qemu/ovmf-x86_64.bin",
],
"i386": ["/usr/share/ovmf/ovmf_code_ia32.bin", "/usr/share/edk2/ovmf-ia32/OVMF_CODE.fd"],
- }.get(platform.machine(), []),
+ "aarch64": ["/usr/share/AAVMF/AAVMF_CODE.fd"],
+ "armhfp": ["/usr/share/AAVMF/AAVMF32_CODE.fd"],
+ }.get(args.architecture, []),
# After that, we try some generic paths and hope that if they exist,
# they’ll correspond to the current architecture, thanks to the package manager.
"/usr/share/edk2/ovmf/OVMF_CODE.fd",
die("Couldn't find OVMF UEFI firmware blob.")
-def find_ovmf_vars() -> Path:
+def find_ovmf_vars(args: MkosiArgs) -> Path:
OVMF_VARS_LOCATIONS = []
- if platform.machine() == "x86_64":
+ if args.architecture == "x86_64":
OVMF_VARS_LOCATIONS += ["/usr/share/ovmf/x64/OVMF_VARS.fd"]
- elif platform.machine() == "i386":
- OVMF_VARS_LOCATIONS += ["/usr/share/edk2/ovmf-ia32/OVMF_VARS.fd"]
+ elif args.architecture == "i386":
+ OVMF_VARS_LOCATIONS += [
+ "/usr/share/edk2/ovmf-ia32/OVMF_VARS.fd",
+ "/usr/share/OVMF/OVMF32_VARS_4M.fd",
+ ]
+ elif args.architecture == "armhfp":
+ OVMF_VARS_LOCATIONS += ["/usr/share/AAVMF/AAVMF32_VARS.fd"]
+ elif args.architecture == "aarch64":
+ OVMF_VARS_LOCATIONS += ["/usr/share/AAVMF/AAVMF_VARS.fd"]
OVMF_VARS_LOCATIONS += ["/usr/share/edk2/ovmf/OVMF_VARS.fd",
"/usr/share/edk2-ovmf/OVMF_VARS.fd", # GENTOO:
else:
mode = "uefi"
- firmware, fw_supports_sb = find_qemu_firmware()
+ firmware, fw_supports_sb = find_qemu_firmware(args)
smm = "on" if fw_supports_sb and mode == "uefi" else "off"
cmdline = [
with contextlib.ExitStack() as stack:
if mode == "uefi" and fw_supports_sb:
- ovmf_vars = stack.enter_context(copy_file_temporary(src=find_ovmf_vars(), dir=tmp_dir()))
+ ovmf_vars = stack.enter_context(copy_file_temporary(src=find_ovmf_vars(args), dir=tmp_dir()))
cmdline += [
"-global",
"ICH9-LPC.disable_s3=1",