diff --git a/iso/builder/build.sh b/iso/builder/build.sh index 98471b2..5ff446f 100755 --- a/iso/builder/build.sh +++ b/iso/builder/build.sh @@ -466,6 +466,75 @@ validate_iso_memtest() { echo "=== memtest validation OK ===" } +validate_iso_live_boot_entries() { + iso_path="$1" + echo "=== validating live boot entries in ISO ===" + + [ -f "$iso_path" ] || { + echo "ERROR: ISO not found for live boot validation: $iso_path" >&2 + exit 1 + } + require_iso_reader "$iso_path" >/dev/null 2>&1 || { + echo "ERROR: ISO reader unavailable for live boot validation" >&2 + exit 1 + } + + grub_cfg="$(mktemp)" + isolinux_cfg="$(mktemp)" + + iso_read_member "$iso_path" boot/grub/grub.cfg "$grub_cfg" || { + echo "ERROR: failed to read boot/grub/grub.cfg from ISO" >&2 + rm -f "$grub_cfg" "$isolinux_cfg" + exit 1 + } + iso_read_member "$iso_path" isolinux/live.cfg "$isolinux_cfg" || { + echo "ERROR: failed to read isolinux/live.cfg from ISO" >&2 + rm -f "$grub_cfg" "$isolinux_cfg" + exit 1 + } + + if grep -q '@APPEND_LIVE@\|@KERNEL_LIVE@\|@INITRD_LIVE@' "$grub_cfg" "$isolinux_cfg"; then + echo "ERROR: unresolved live-build placeholders remain in ISO bootloader config" >&2 + rm -f "$grub_cfg" "$isolinux_cfg" + exit 1 + fi + + grep -q 'menuentry "EASY-BEE"' "$grub_cfg" || { + echo "ERROR: GRUB default EASY-BEE entry is missing" >&2 + rm -f "$grub_cfg" "$isolinux_cfg" + exit 1 + } + grep -q 'menuentry "EASY-BEE — load to RAM (toram)"' "$grub_cfg" || { + echo "ERROR: GRUB toram entry is missing" >&2 + rm -f "$grub_cfg" "$isolinux_cfg" + exit 1 + } + grep -q 'linux .*boot=live ' "$grub_cfg" || { + echo "ERROR: GRUB live entry is missing boot=live" >&2 + rm -f "$grub_cfg" "$isolinux_cfg" + exit 1 + } + grep -q 'linux .*boot=live .*toram ' "$grub_cfg" || { + echo "ERROR: GRUB toram entry is missing boot=live or toram" >&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 + rm -f "$grub_cfg" "$isolinux_cfg" + exit 1 + } + grep -q 'append .*boot=live .*toram ' "$isolinux_cfg" || { + echo "ERROR: isolinux toram entry is missing boot=live or toram" >&2 + rm -f "$grub_cfg" "$isolinux_cfg" + exit 1 + } + + rm -f "$grub_cfg" "$isolinux_cfg" + echo "=== live boot validation OK ===" +} + validate_iso_nvidia_runtime() { iso_path="$1" [ "$BEE_GPU_VENDOR" = "nvidia" ] || return 0 @@ -1441,6 +1510,7 @@ if [ -f "$ISO_RAW" ]; then fi fi validate_iso_memtest "$ISO_RAW" + validate_iso_live_boot_entries "$ISO_RAW" validate_iso_nvidia_runtime "$ISO_RAW" cp "$ISO_RAW" "$ISO_OUT" echo ""