Compare commits
11 Commits
c5f41a4e5e
...
6547b2b303
Author | SHA1 | Date |
---|---|---|
|
6547b2b303 | |
|
47ddc1e834 | |
|
ddbcf00ce5 | |
|
c6f49ef037 | |
|
f8d6666e2b | |
|
29ed6cc935 | |
|
00eea4da52 | |
|
39d22f0e0a | |
|
7c0a899500 | |
|
2fb6271d38 | |
|
c1398d86aa |
11
Config.in
11
Config.in
|
@ -10,6 +10,9 @@ config AIMEEOS
|
||||||
select BR2_PACKAGE_COREUTILS
|
select BR2_PACKAGE_COREUTILS
|
||||||
select BR2_PACKAGE_TAR
|
select BR2_PACKAGE_TAR
|
||||||
select BR2_PACKAGE_ZSTD
|
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_TARGET_GRUB2
|
||||||
select BR2_PACKAGE_HOST_ZSTD
|
select BR2_PACKAGE_HOST_ZSTD
|
||||||
help
|
help
|
||||||
|
@ -25,8 +28,10 @@ config AIMEEOS_RPI
|
||||||
select BR2_TARGET_UBOOT_NEEDS_OPENSSL
|
select BR2_TARGET_UBOOT_NEEDS_OPENSSL
|
||||||
select BR2_TARGET_UBOOT_NEEDS_GNUTLS
|
select BR2_TARGET_UBOOT_NEEDS_GNUTLS
|
||||||
select BR2_TARGET_GRUB2_ARM_EFI
|
select BR2_TARGET_GRUB2_ARM_EFI
|
||||||
select BR2_PACKAGE_HOST_DOSFSTOOLS
|
|
||||||
select BR2_PACKAGE_HOST_GENIMAGE
|
|
||||||
select BR2_PACKAGE_HOST_MTOOLS
|
|
||||||
help
|
help
|
||||||
Support running Aimee OS on Rasperry Pi devices
|
Support running Aimee OS on Rasperry Pi devices
|
||||||
|
|
||||||
|
config AIMEEOS_DEFAULT_ROOTFLAGS
|
||||||
|
string "Default kernel command line argumens"
|
||||||
|
help
|
||||||
|
Additional command line arguments to pass to the kernel by default.
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
../raspberrypi3/genimage.cfg
|
|
@ -0,0 +1,18 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
BOARD_DIR=$(dirname "$0")
|
||||||
|
|
||||||
|
genimage_tmp=$(mktemp -d)
|
||||||
|
trap 'rm -rf "${genimage_tmp}"' EXIT
|
||||||
|
|
||||||
|
mkdir -p "${genimage_tmp}"/rootfs "${genimage_tmp}"/tmp
|
||||||
|
|
||||||
|
cd "${BINARIES_DIR}"
|
||||||
|
genimage \
|
||||||
|
--rootpath "${genimage_tmp}/rootfs" \
|
||||||
|
--tmppath "${genimage_tmp}/tmp" \
|
||||||
|
--inputpath "${BINARIES_DIR}" \
|
||||||
|
--outputpath "${BINARIES_DIR}" \
|
||||||
|
--config "${BOARD_DIR}"/genimage.cfg
|
|
@ -3,10 +3,11 @@
|
||||||
|
|
||||||
vers=${BR2_EXTERNAL_AIMEEOS_VERSION}
|
vers=${BR2_EXTERNAL_AIMEEOS_VERSION}
|
||||||
br2_vers=${BR2_VERSION_FULL}
|
br2_vers=${BR2_VERSION_FULL}
|
||||||
|
kernel_filename=$1
|
||||||
|
|
||||||
cat > "${TARGET_DIR}"/boot/grub.cfg <<EOF
|
cat > "${TARGET_DIR}"/boot/grub.cfg <<EOF
|
||||||
menuentry "Aimee OS ${vers} (Buildroot ${br2_vers}) on \$dev" --class gnu-linux --id "id-\$partuuid" "\$dev" "\$partuuid" {
|
menuentry "Aimee OS ${vers} (Buildroot ${br2_vers}) on \$dev" --class gnu-linux --id "id-\$partuuid" "\$dev" "\$partuuid" {
|
||||||
set root="\$2"
|
set root="\$2"
|
||||||
linux "/boot/zImage" root=PARTUUID=\$3 ro
|
linux "/boot/${kernel_filename}" root=PARTUUID=\$3 ro \$rootflags
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
# vim: set ft=sh :
|
# vim: set ft=sh :
|
||||||
# vim: set sw=4 ts=4 sts=4 et:
|
# vim: set sw=4 ts=4 sts=4 et:
|
||||||
|
|
||||||
|
terminfo dumb
|
||||||
|
|
||||||
load_env
|
load_env
|
||||||
regexp --set 1:disk '(.*),.*' $root
|
regexp --set 1:disk '(.*),.*' $root
|
||||||
for dev in ($disk,gpt*); do
|
for dev in ($disk,gpt*); do
|
||||||
|
|
|
@ -0,0 +1,74 @@
|
||||||
|
pipeline {
|
||||||
|
parameters {
|
||||||
|
booleanParam 'CLEAN_BUILD'
|
||||||
|
string 'CUSTOM_TARGET'
|
||||||
|
}
|
||||||
|
|
||||||
|
options {
|
||||||
|
disableConcurrentBuilds()
|
||||||
|
}
|
||||||
|
|
||||||
|
agent {
|
||||||
|
kubernetes {
|
||||||
|
yamlFile 'ci/podTemplate.yaml'
|
||||||
|
yamlMergeStrategy merge()
|
||||||
|
workspaceVolume persistentVolumeClaimWorkspaceVolume(
|
||||||
|
claimName: 'buildroot-aimeeos'
|
||||||
|
)
|
||||||
|
defaultContainer 'build'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
environment {
|
||||||
|
BR2_CCACHE_DIR = "${env.JENKINS_AGENT_WORKDIR}/br2-ccache"
|
||||||
|
}
|
||||||
|
|
||||||
|
stages {
|
||||||
|
stage('Clean') {
|
||||||
|
when {
|
||||||
|
expression {
|
||||||
|
return params.CLEAN_BUILD
|
||||||
|
}
|
||||||
|
}
|
||||||
|
steps {
|
||||||
|
sh 'git clean -fdx'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stage('Prepare') {
|
||||||
|
steps {
|
||||||
|
container('jnlp') {
|
||||||
|
sh 'if [ ! -d buildroot ]; then git clone https://gitlab.com/buildroot.org/buildroot.git -b 2025.05.x --depth 1; else git -C buildroot pull; fi'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stage('Build') {
|
||||||
|
steps {
|
||||||
|
sh 'make -C buildroot O="${PWD}"/_build BR2_EXTERNAL="${PWD}" aimeeos_qemu_aarch64_defconfig'
|
||||||
|
script {
|
||||||
|
if (params.CUSTOM_TARGET) {
|
||||||
|
sh "make -C _build '${CUSTOM_TARGET}'"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sh 'make -C _build'
|
||||||
|
}
|
||||||
|
post {
|
||||||
|
success {
|
||||||
|
dir('_build') {
|
||||||
|
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(','))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: build
|
||||||
|
image: git.pyrocufflink.net/containerimages/buildroot
|
||||||
|
resources:
|
||||||
|
limits: &resources
|
||||||
|
cpu: 6
|
||||||
|
memory: 12Gi
|
||||||
|
requests: *resources
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /etc/ssh/ssh_known_hosts
|
||||||
|
name: ssh-known-hosts
|
||||||
|
subPath: ssh_known_hosts
|
||||||
|
securityContext:
|
||||||
|
fsGroupChangePolicy: OnRootMismatch
|
||||||
|
volumes:
|
||||||
|
- name: ssh-known-hosts
|
||||||
|
configMap:
|
||||||
|
name: ssh-known-hosts
|
|
@ -0,0 +1,20 @@
|
||||||
|
BR2_aarch64=y
|
||||||
|
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_INIT_SYSTEMD_POPULATE_TMPFILES is not set
|
||||||
|
# BR2_TARGET_ENABLE_ROOT_LOGIN is not set
|
||||||
|
# BR2_TARGET_GENERIC_GETTY is not set
|
||||||
|
# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
|
||||||
|
BR2_LINUX_KERNEL=y
|
||||||
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config"
|
||||||
|
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_AIMEEOS_PATH)/kernel/config"
|
||||||
|
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
|
||||||
|
# BR2_PACKAGE_BUSYBOX is not set
|
||||||
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
AIMEEOS=y
|
||||||
|
AIMEEOS_DEFAULT_ROOTFLAGS="systemd.mask=serial-getty@ttyAMA0 systemd.debug_shell systemd.default_debug_tty=ttyAMA0"
|
||||||
|
BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot configfile echo efi_gop fat gzio linux loadenv minicmd normal part_gpt probe regexp squash4 terminfo test zstd"
|
|
@ -23,7 +23,7 @@ BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y
|
||||||
BR2_PACKAGE_RPI_FIRMWARE_CMDLINE_FILE="$(BR2_EXTERNAL_AIMEEOS_PATH)/board/raspberrypi3/cmdline.txt"
|
BR2_PACKAGE_RPI_FIRMWARE_CMDLINE_FILE="$(BR2_EXTERNAL_AIMEEOS_PATH)/board/raspberrypi3/cmdline.txt"
|
||||||
BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="$(BR2_EXTERNAL_AIMEEOS_PATH)/board/raspberrypi3/config.txt"
|
BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="$(BR2_EXTERNAL_AIMEEOS_PATH)/board/raspberrypi3/config.txt"
|
||||||
# BR2_TARGET_ROOTFS_TAR is not set
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot configfile echo efi_gop fat gzio linux loadenv minicmd normal part_gpt probe regexp squash4 test zstd"
|
BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot configfile echo efi_gop fat gzio linux loadenv minicmd normal part_gpt probe regexp squash4 terminfo test zstd"
|
||||||
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_3_32b"
|
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_3_32b"
|
||||||
BR2_PACKAGE_HOST_KMOD_XZ=y
|
BR2_PACKAGE_HOST_KMOD_XZ=y
|
||||||
AIMEEOS=y
|
AIMEEOS=y
|
||||||
|
|
18
external.mk
18
external.mk
|
@ -3,11 +3,27 @@ define AIMEEOS_GRUB2_INSTALL_IMAGES_CMDS
|
||||||
$(foreach tuple, $(GRUB2_TUPLES-y), \
|
$(foreach tuple, $(GRUB2_TUPLES-y), \
|
||||||
$(INSTALL) -D -m 0644 $(BR2_EXTERNAL_AIMEEOS_PATH)/boot/grub2/grub.cfg $(GRUB2_CFG_$(tuple))
|
$(INSTALL) -D -m 0644 $(BR2_EXTERNAL_AIMEEOS_PATH)/boot/grub2/grub.cfg $(GRUB2_CFG_$(tuple))
|
||||||
)
|
)
|
||||||
|
$(HOST_DIR)/bin/grub-editenv $(BINARIES_DIR)/efi-part/EFI/BOOT/grubenv set \
|
||||||
|
default=0 \
|
||||||
|
timeout=3 \
|
||||||
|
rootflags=$(AIMEEOS_DEFAULT_ROOTFLAGS)
|
||||||
endef
|
endef
|
||||||
GRUB2_INSTALL_IMAGES_CMDS += $(AIMEEOS_GRUB2_INSTALL_IMAGES_CMDS)
|
GRUB2_INSTALL_IMAGES_CMDS += $(AIMEEOS_GRUB2_INSTALL_IMAGES_CMDS)
|
||||||
|
|
||||||
|
ifneq ($(BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM),)
|
||||||
|
AIMEEOS_KERNEL_FILENAME = $(BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM)
|
||||||
|
else ifeq ($(BR2_LINUX_KERNEL_IMAGE),y)
|
||||||
|
AIMEEOS_KERNEL_FILENAME = Image
|
||||||
|
else ifeq ($(BR2_LINUX_KERNEL_IMAGEZ),y)
|
||||||
|
AIMEEOS_KERNEL_FILENAME = zImage
|
||||||
|
else ifeq ($(BR2_LINUX_KERNEL_VMLINUX),y)
|
||||||
|
AIMEEOS_KERNEL_FILENAME = vmlinux
|
||||||
|
else
|
||||||
|
$(error "Must define a Linux kernel target")
|
||||||
|
endif
|
||||||
|
|
||||||
# Generate the grub.cfg stub for the kernel embedded in rootfs.squashfs
|
# Generate the grub.cfg stub for the kernel embedded in rootfs.squashfs
|
||||||
define AIMEEOS_GEN_GRUB_CFG
|
define AIMEEOS_GEN_GRUB_CFG
|
||||||
$(BR2_EXTERNAL_AIMEEOS_PATH)/boot/grub2/gen-grub-cfg.sh
|
$(BR2_EXTERNAL_AIMEEOS_PATH)/boot/grub2/gen-grub-cfg.sh $(AIMEEOS_KERNEL_FILENAME)
|
||||||
endef
|
endef
|
||||||
LINUX_TARGET_FINALIZE_HOOKS += AIMEEOS_GEN_GRUB_CFG
|
LINUX_TARGET_FINALIZE_HOOKS += AIMEEOS_GEN_GRUB_CFG
|
||||||
|
|
Loading…
Reference in New Issue