From 66af20213b3fdc4d564eac7874c05b5e396d018a Mon Sep 17 00:00:00 2001 From: "Dustin C. Hatch" Date: Thu, 21 Aug 2025 07:50:00 -0500 Subject: [PATCH] board/qemu: Generate sdcard.img with post-image In order to test AimeeOS A/B filesystem updates, we need a full disk image just like the Raspberry Pi variant has. --- Config.in | 6 +++--- board/qemu/genimage.cfg | 1 + board/qemu/post-image.sh | 22 ++++++++++++++++++++++ ci/Jenkinsfile | 4 ++++ configs/aimeeos_qemu_aarch64_defconfig | 1 + 5 files changed, 31 insertions(+), 3 deletions(-) create mode 120000 board/qemu/genimage.cfg create mode 100755 board/qemu/post-image.sh diff --git a/Config.in b/Config.in index e97535e..ca7924f 100644 --- a/Config.in +++ b/Config.in @@ -10,6 +10,9 @@ config AIMEEOS select BR2_PACKAGE_COREUTILS select BR2_PACKAGE_TAR select BR2_PACKAGE_ZSTD + select BR2_PACKAGE_HOST_DOSFSTOOLS + select BR2_PACKAGE_HOST_GENIMAGE + select BR2_PACKAGE_HOST_MTOOLS select BR2_TARGET_GRUB2 select BR2_PACKAGE_HOST_ZSTD help @@ -25,8 +28,5 @@ config AIMEEOS_RPI select BR2_TARGET_UBOOT_NEEDS_OPENSSL select BR2_TARGET_UBOOT_NEEDS_GNUTLS select BR2_TARGET_GRUB2_ARM_EFI - select BR2_PACKAGE_HOST_DOSFSTOOLS - select BR2_PACKAGE_HOST_GENIMAGE - select BR2_PACKAGE_HOST_MTOOLS help Support running Aimee OS on Rasperry Pi devices diff --git a/board/qemu/genimage.cfg b/board/qemu/genimage.cfg new file mode 120000 index 0000000..c503428 --- /dev/null +++ b/board/qemu/genimage.cfg @@ -0,0 +1 @@ +../raspberrypi3/genimage.cfg \ No newline at end of file diff --git a/board/qemu/post-image.sh b/board/qemu/post-image.sh new file mode 100755 index 0000000..e546986 --- /dev/null +++ b/board/qemu/post-image.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +set -e + +BOARD_DIR=$(dirname "$0") +GRUBENV="${BINARIES_DIR}"/efi-part/EFI/BOOT/grubenv + +genimage_tmp=$(mktemp -d) +trap 'rm -rf "${genimage_tmp}"' EXIT + +mkdir -p "${genimage_tmp}"/rootfs "${genimage_tmp}"/tmp + +grub-editenv "${GRUBENV}" set default=0 +grub-editenv "${GRUBENV}" set timeout=3 + +cd "${BINARIES_DIR}" +genimage \ + --rootpath "${genimage_tmp}/rootfs" \ + --tmppath "${genimage_tmp}/tmp" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${BOARD_DIR}"/genimage.cfg diff --git a/ci/Jenkinsfile b/ci/Jenkinsfile index accda4b..d6e5ad6 100644 --- a/ci/Jenkinsfile +++ b/ci/Jenkinsfile @@ -53,8 +53,12 @@ pipeline { archiveArtifacts('.config') } dir('_build/images') { + sh 'zstd -f firmware.img' + sh 'zstd -f sdcard.img' archiveArtifacts([ + 'firmware.img.zst', 'rootfs.squashfs', + 'sdcard.img.zst', ].join(',')) } } diff --git a/configs/aimeeos_qemu_aarch64_defconfig b/configs/aimeeos_qemu_aarch64_defconfig index 4b5f9de..2bd25b5 100644 --- a/configs/aimeeos_qemu_aarch64_defconfig +++ b/configs/aimeeos_qemu_aarch64_defconfig @@ -3,6 +3,7 @@ BR2_TOOLCHAIN_BUILDROOT_VENDOR="aimeeos" BR2_GLOBAL_PATCH_DIR="board/qemu/patches" BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_INIT_SYSTEMD=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_AIMEEOS_PATH)/board/qemu/post-image.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config"