3efb5e31fc
The startup.nsh file is useless to boot EFI payloads. We just need to follow the naming detection specified in the UEFI spec. The EFI payload need to be placed in the boot/efi folder in the EFI partition and follow the architecture naming as described below: 32bit : bootia32.efi x64 : bootx64.efi aarch32 : bootarm.efi aarch64 : bootaa64.efi This naming is already right in the packages involved (systemd, grub2, gummiboot), therefore we just need to drop the generation of the startup.nsh file. The usage of the startup.nsh in genimage is also dropped to avoid errors in the image generation. Signed-off-by: Kory Maincent <kory.maincent@bootlin.com> Tested-by: Erico Nunes <nunes.erico@gmail.com> Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> |
||
---|---|---|
.. | ||
genimage-efi.cfg | ||
grub.cfg | ||
post-image.sh | ||
readme.txt |
The aarch64_efi_defconfig allows to build a minimal Linux system that can boot on all AArch64 servers providing an EFI firmware. This includes all Arm EBBR[1] compliant systems, and all Arm SystemReady[2] compliant systems for example. Building and booting ==================== $ make aarch64_efi_defconfig $ make The file output/images/disk.img is a complete disk image that can be booted, it includes the grub2 bootloader, Linux kernel and root filesystem. Testing under Qemu ================== This image can also be tested using Qemu: qemu-system-aarch64 \ -M virt \ -cpu cortex-a57 \ -m 512 \ -nographic \ -bios </path/to/QEMU_EFI.fd> \ -drive file=output/images/disk.img,if=none,format=raw,id=hd0 \ -device virtio-blk-device,drive=hd0 \ -netdev user,id=eth0 \ -device virtio-net-device,netdev=eth0 Note that </path/to/QEMU_EFI.fd> needs to point to a valid aarch64 UEFI firmware image for qemu. It may be provided by your distribution as a edk2-aarch64 or AAVMF package, in path such as /usr/share/edk2/aarch64/QEMU_EFI.fd . U-Boot based qemu firmware ========================== A qemu firmware with support for UEFI based on U-Boot can be built following the instructions in [3], with qemu_arm64_defconfig. This should give you a nor_flash.bin, which you can use with qemu as an alternative to QEMU_EFI.fd. You will also need to change the machine specification to "-M virt,secure" on qemu command line, to enable TrustZone support, and you will need to increase the memory with "-m 1024". [1]: https://github.com/ARM-software/ebbr [2]: https://developer.arm.com/architectures/system-architectures/arm-systemready [3]: https://github.com/glikely/u-boot-tfa-build