hc
2024-03-22 619f0f87159c5dbd2755b1b0a0eb35784be84e7a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 
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