1 2The aarch64_efi_defconfig allows to build a minimal Linux system that 3can boot on all AArch64 servers providing an EFI firmware. 4 5This includes all Arm EBBR[1] compliant systems, and all Arm SystemReady[2] 6compliant systems for example. 7 8 9Building and booting 10==================== 11 12$ make aarch64_efi_defconfig 13$ make 14 15The file output/images/disk.img is a complete disk image that can be 16booted, it includes the grub2 bootloader, Linux kernel and root 17filesystem. 18 19Testing under Qemu 20================== 21 22This image can also be tested using Qemu: 23 24qemu-system-aarch64 \ 25 -M virt \ 26 -cpu cortex-a57 \ 27 -m 512 \ 28 -nographic \ 29 -bios </path/to/QEMU_EFI.fd> \ 30 -drive file=output/images/disk.img,if=none,format=raw,id=hd0 \ 31 -device virtio-blk-device,drive=hd0 \ 32 -netdev user,id=eth0 \ 33 -device virtio-net-device,netdev=eth0 34 35Note that </path/to/QEMU_EFI.fd> needs to point to a valid aarch64 UEFI 36firmware image for qemu. 37It may be provided by your distribution as a edk2-aarch64 or AAVMF 38package, in path such as /usr/share/edk2/aarch64/QEMU_EFI.fd . 39 40U-Boot based qemu firmware 41========================== 42 43A qemu firmware with support for UEFI based on U-Boot can be built following 44the instructions in [3], with qemu_arm64_defconfig. 45 46This should give you a nor_flash.bin, which you can use with qemu as an 47alternative to QEMU_EFI.fd. You will also need to change the machine 48specification to "-M virt,secure" on qemu command line, to enable TrustZone 49support, and you will need to increase the memory with "-m 1024". 50 51[1]: https://github.com/ARM-software/ebbr 52[2]: https://developer.arm.com/architectures/system-architectures/arm-systemready 53[3]: https://github.com/glikely/u-boot-tfa-build 54