aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--board/aarch64-efi/genimage-efi.cfg30
-rw-r--r--board/aarch64-efi/grub.cfg6
-rwxr-xr-xboard/aarch64-efi/post-image.sh5
-rw-r--r--board/aarch64-efi/readme.txt34
-rw-r--r--configs/aarch64_efi_defconfig33
5 files changed, 108 insertions, 0 deletions
diff --git a/board/aarch64-efi/genimage-efi.cfg b/board/aarch64-efi/genimage-efi.cfg
new file mode 100644
index 0000000000..f93ab9d64f
--- /dev/null
+++ b/board/aarch64-efi/genimage-efi.cfg
@@ -0,0 +1,30 @@
+image efi-part.vfat {
+ vfat {
+ file startup.nsh {
+ image = "efi-part/startup.nsh"
+ }
+ file EFI {
+ image = "efi-part/EFI"
+ }
+ file Image {
+ image = "Image"
+ }
+ }
+ size = 32M
+}
+
+image disk.img {
+
+ hdimage {
+ }
+
+ partition boot {
+ partition-type = 0xEF
+ image = "efi-part.vfat"
+ }
+
+ partition root {
+ partition-type = 0x83
+ image = "rootfs.ext2"
+ }
+}
diff --git a/board/aarch64-efi/grub.cfg b/board/aarch64-efi/grub.cfg
new file mode 100644
index 0000000000..ab88da91b9
--- /dev/null
+++ b/board/aarch64-efi/grub.cfg
@@ -0,0 +1,6 @@
+set default="0"
+set timeout="5"
+
+menuentry "Buildroot" {
+ linux /Image root=/dev/vda2 rootwait console=ttyAMA0
+}
diff --git a/board/aarch64-efi/post-image.sh b/board/aarch64-efi/post-image.sh
new file mode 100755
index 0000000000..f0214dc866
--- /dev/null
+++ b/board/aarch64-efi/post-image.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+BOARD_DIR="$(dirname $0)"
+
+cp -f ${BOARD_DIR}/grub.cfg ${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg
diff --git a/board/aarch64-efi/readme.txt b/board/aarch64-efi/readme.txt
new file mode 100644
index 0000000000..65a6345b6c
--- /dev/null
+++ b/board/aarch64-efi/readme.txt
@@ -0,0 +1,34 @@
+
+The aarch64_efi_defconfig allows to build a minimal Linux system that
+can boot on all AArch64 servers providing an EFI firmware and ACPI.
+
+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 .
diff --git a/configs/aarch64_efi_defconfig b/configs/aarch64_efi_defconfig
new file mode 100644
index 0000000000..e4e20b09ba
--- /dev/null
+++ b/configs/aarch64_efi_defconfig
@@ -0,0 +1,33 @@
+# Architecture
+BR2_aarch64=y
+
+# Toolchain, required for eudev and grub
+BR2_TOOLCHAIN_BUILDROOT_WCHAR=y
+
+# System
+BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
+BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
+
+## Required tools to create bootable media
+BR2_PACKAGE_HOST_GENIMAGE=y
+
+# Bootloader
+BR2_TARGET_GRUB2=y
+BR2_TARGET_GRUB2_AARCH64_EFI=y
+
+# Filesystem / image
+BR2_TARGET_ROOTFS_EXT2=y
+BR2_TARGET_ROOTFS_EXT2_4=y
+BR2_TARGET_ROOTFS_EXT2_SIZE="200M"
+# BR2_TARGET_ROOTFS_TAR is not set
+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"
+
+# Linux headers same as kernel, a 4.18 series
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_18=y
+
+# Kernel
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.18.10"
+BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y