configs/aarch64_efi: bump kernel version and update

- Bump kernel to version 5.11.16.

We remove the hardcoded ttyAMA0 and rely on the firmware to discover our
console. This enables serial console on systems, which do not have an Arm
pl011 UART.

We switch to GPT disklabel and discover our root filesystem using its
PARTLABEL. This enables booting from more media, such as HDD, SD card or
USB.

We update the readme, which hinted that ACPI was mandatory. This is not
strictly the case as we can also boot with a dtb and/or a U-Boot based
firmware, with no ACPI. While at it, mention EBBR, SystemReady and explain
how to build and use a U-Boot-based qemu firmware.

Signed-off-by: Vincent Stehlé <vincent.stehle@arm.com>
Cc: Erico Nunes <nunes.erico@gmail.com>
Reviewed-by: Erico Nunes <nunes.erico@gmail.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
This commit is contained in:
Vincent Stehlé 2021-04-23 10:28:33 +02:00 committed by Arnout Vandecappelle (Essensium/Mind)
parent 0b09d6feaa
commit f01b0b1a3d
4 changed files with 29 additions and 9 deletions

View File

@ -14,17 +14,19 @@ image efi-part.vfat {
} }
image disk.img { image disk.img {
hdimage { hdimage {
gpt = true
} }
partition boot { partition boot {
partition-type = 0xEF
image = "efi-part.vfat" image = "efi-part.vfat"
partition-type-uuid = c12a7328-f81f-11d2-ba4b-00a0c93ec93b
offset = 32768
bootable = true
} }
partition root { partition root {
partition-type = 0x83 partition-type-uuid = b921b045-1df0-41c3-af44-4c6f280d3fae
image = "rootfs.ext2" image = "rootfs.ext2"
} }
} }

View File

@ -2,5 +2,5 @@ set default="0"
set timeout="5" set timeout="5"
menuentry "Buildroot" { menuentry "Buildroot" {
linux /Image root=/dev/vda2 rootwait console=ttyAMA0 linux /Image root=PARTLABEL=root rootwait
} }

View File

@ -1,6 +1,10 @@
The aarch64_efi_defconfig allows to build a minimal Linux system that The aarch64_efi_defconfig allows to build a minimal Linux system that
can boot on all AArch64 servers providing an EFI firmware and ACPI. 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 Building and booting
==================== ====================
@ -32,3 +36,18 @@ Note that </path/to/QEMU_EFI.fd> needs to point to a valid aarch64 UEFI
firmware image for qemu. firmware image for qemu.
It may be provided by your distribution as a edk2-aarch64 or AAVMF 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 . 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

View File

@ -5,7 +5,6 @@ BR2_aarch64=y
BR2_TOOLCHAIN_BUILDROOT_WCHAR=y BR2_TOOLCHAIN_BUILDROOT_WCHAR=y
# System # System
BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
## Required tools to create bootable media ## Required tools to create bootable media
@ -23,13 +22,13 @@ BR2_TARGET_ROOTFS_EXT2_SIZE="200M"
BR2_ROOTFS_POST_IMAGE_SCRIPT="board/aarch64-efi/post-image.sh support/scripts/genimage.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/aarch64-efi/post-image.sh support/scripts/genimage.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/aarch64-efi/genimage-efi.cfg" BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/aarch64-efi/genimage-efi.cfg"
# Linux headers same as kernel, a 5.9 series # Linux headers same as kernel, a 5.11 series
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_9=y BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_11=y
# Kernel # Kernel
BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.9.11" BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.11.16"
BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y