From eed157c2db260e714b006c2e59e70a398548a179 Mon Sep 17 00:00:00 2001 From: Michael Chus Date: Sun, 3 May 2026 15:52:07 +0300 Subject: [PATCH] Pin live boot medium to versioned ISO label --- iso/builder/auto/config | 10 ++++++++-- iso/builder/build.sh | 14 +++++++++++++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/iso/builder/auto/config b/iso/builder/auto/config index 092462e..dd229b9 100755 --- a/iso/builder/auto/config +++ b/iso/builder/auto/config @@ -16,6 +16,12 @@ else LB_LINUX_PACKAGES="linux-image" fi +if [ -n "${BEE_ISO_VOLUME:-}" ]; then + LB_ISO_VOLUME="${BEE_ISO_VOLUME}" +else + LB_ISO_VOLUME="EASY_BEE_${BEE_GPU_VENDOR_UPPER:-NVIDIA}" +fi + lb config noauto \ --distribution bookworm \ --architectures amd64 \ @@ -30,9 +36,9 @@ lb config noauto \ --linux-flavours "amd64" \ --linux-packages "${LB_LINUX_PACKAGES}" \ --memtest memtest86+ \ - --iso-volume "EASY_BEE_${BEE_GPU_VENDOR_UPPER:-NVIDIA}" \ + --iso-volume "${LB_ISO_VOLUME}" \ --iso-application "EASY-BEE-${BEE_GPU_VENDOR_UPPER:-NVIDIA}" \ - --bootappend-live "boot=live components video=1920x1080 console=ttyS0,115200n8 console=tty0 loglevel=3 systemd.show_status=1 username=bee user-fullname=Bee modprobe.blacklist=nouveau,snd_hda_intel,snd_hda_codec_realtek,snd_hda_codec_generic,soundcore" \ + --bootappend-live "boot=live live-media-label=${LB_ISO_VOLUME} components video=1920x1080 console=ttyS0,115200n8 console=tty0 loglevel=3 systemd.show_status=1 username=bee user-fullname=Bee modprobe.blacklist=nouveau,snd_hda_intel,snd_hda_codec_realtek,snd_hda_codec_generic,soundcore" \ --debootstrap-options "--include=ca-certificates" \ --apt-recommends false \ --chroot-squashfs-compression-type zstd \ diff --git a/iso/builder/build.sh b/iso/builder/build.sh index 2b575e2..6344d2c 100755 --- a/iso/builder/build.sh +++ b/iso/builder/build.sh @@ -536,6 +536,11 @@ validate_iso_live_boot_entries() { rm -f "$grub_cfg" "$isolinux_cfg" exit 1 } + grep -q 'linux .*live-media-label=EASY_BEE_' "$grub_cfg" || { + echo "ERROR: GRUB live entry is missing live-media-label pinning" >&2 + rm -f "$grub_cfg" "$isolinux_cfg" + exit 1 + } grep -q 'append .*boot=live ' "$isolinux_cfg" || { echo "ERROR: isolinux live entry is missing boot=live" >&2 @@ -547,6 +552,11 @@ validate_iso_live_boot_entries() { rm -f "$grub_cfg" "$isolinux_cfg" exit 1 } + grep -q 'append .*live-media-label=EASY_BEE_' "$isolinux_cfg" || { + echo "ERROR: isolinux live entry is missing live-media-label pinning" >&2 + rm -f "$grub_cfg" "$isolinux_cfg" + exit 1 + } rm -f "$grub_cfg" "$isolinux_cfg" echo "=== live boot validation OK ===" @@ -1008,6 +1018,7 @@ PROJECT_VERSION_EFFECTIVE="$(resolve_project_version)" ISO_BASENAME="easy-bee-${BUILD_VARIANT}-v${PROJECT_VERSION_EFFECTIVE}-amd64" # Versioned output directory: dist/easy-bee-v4.1/ — all final artefacts live here. OUT_DIR="${DIST_DIR}/easy-bee-v${PROJECT_VERSION_EFFECTIVE}" +ISO_VERSION_LABEL_TOKEN="$(printf '%s' "${PROJECT_VERSION_EFFECTIVE}" | tr '[:lower:].-' '[:upper:]__')" mkdir -p "${OUT_DIR}" LOG_DIR="${OUT_DIR}/${ISO_BASENAME}.logs" LOG_ARCHIVE="${OUT_DIR}/${ISO_BASENAME}.logs.tar.gz" @@ -1589,7 +1600,8 @@ echo "=== building ISO (variant: ${BUILD_VARIANT}) ===" # Export for auto/config BEE_GPU_VENDOR_UPPER="$(echo "${BUILD_VARIANT}" | tr 'a-z-' 'A-Z_')" -export BEE_GPU_VENDOR_UPPER +BEE_ISO_VOLUME="EASY_BEE_${BEE_GPU_VENDOR_UPPER}_V${ISO_VERSION_LABEL_TOKEN}" +export BEE_GPU_VENDOR_UPPER BEE_ISO_VOLUME cd "${LB_DIR}" run_step_sh "live-build clean" "80-lb-clean" "lb clean --all 2>&1 | tail -3"