Skip to content

efi64boot v0.3 — 32→64 OVMF64 handoff, boots Windows

Choose a tag to compare

@devtinoimao devtinoimao released this 27 Oct 08:41
· 10 commits to main since this release

efi64boot v0.3: a 32-bit IA32 BOOTIA32.EFI that relocates a 64-bit EDK2 OVMF64 build below 4 GiB, switches to long mode, and hands off to OVMF64's SEC entry. Verified booting win10ltc.iso under QEMU with -accel tcg -cpu qemu64 and -accel kvm -cpu core2duo.

Chain: BOOTIA32.EFI (32-bit) -> OVMF64 SEC (64-bit) -> PEI -> DXE -> BdsDxe -> DVD boot -> Windows Setup.

Key mechanics:

  • Reserve the full OVMF64 MEMFD region (0x800000, 0xF80000) at its build address so no PCD patching is needed.
  • Zero the staging region so OVMF64 takes the native (non-TDX) SEC path (byte at 0x80B000 must be 0).
  • Pre-handoff MTRR hygiene (IA32_MTRR_DEF_TYPE = E=1, FE=0, type=WB) so OVMF64 PlatformPei MemDetect asserts pass.
  • Delete BOOTIA32.EFI from the ESP before handoff so BdsDxe cannot re-select it.

Companion repo efi32boot does the reverse direction (64-bit host -> 32-bit OVMF32). Both are AI-assisted experimental projects, not production-safe.