Feature #9664

Updated by Joshua M. Clulow about 1 year ago

Some hardware (like intel atom based) have UEFI32 firmware but can start 64-bit kernel, would like to be able to boot from such systems.

For code base it means we need to provide multiboot2 trampoline for 32-bit code, which is not that hard; we still only load the 64-bit kernels. The interesting part is later on, when we are implementing access to EFI Runtime Services from kernel - then we need to switch to 32-bit mode and back. EFI System table accesses are also to be done using native (32-bit) pointers.

As a an visible change, we will build following binaries:

The current @/boot/boot1.efi@ /boot/boot1.efi will be replaced by two new files: by:

* @/boot/bootia32.efi@ /boot/bootia32.efi
* @/boot/bootx64.efi@ /boot/bootx64.efi

The current @/boot/loader.efi@ /boot/loader.efi will also be replaced, replaced by:

* @/boot/loader32.efi@

* @/boot/loader64.efi@ /boot/loader32.efi

For users of the current @boot1.efi@, boot1.efi this change is a flag day because we have no automated ESP update and boot code in ESP will need to should be updated manually.