ad1d26a9fd
The old pairing/delivery scenarios expected a non-zero exit on an unbound 204 poll — the one-poll-per-invocation design v1.21.0 (R-33) deliberately removed; against the current script they would hang on a real sleep. Now: a PATH-faked sleep counts the waits and flips the poll to 200 after 3 cycles, so one scenario proves the whole v1.21.0 shape in a single invocation (register -> in-script 204 waits -> delivery -> host-install -> done-flag, exit 0), plus a 410 crash-window scenario (still exits non-zero on purpose). Runaway guard: fake sleep kills the loop after 25 calls. Assistant image gains python3 (the bootstrap's JSON parsing needs it; PVE ships it on the real box) — the harness runs in that image. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UuFPHmHNrCJj1VhY6QdDMU
35 lines
2.2 KiB
Docker
35 lines
2.2 KiB
Docker
# scripts/iso/Dockerfile.assistant — the build host for the Felhom bare-metal ISO pipeline (R-21).
|
|
#
|
|
# Debian trixie == PVE 9.x codename; the proxmox-auto-install-assistant is pinned to the ISO
|
|
# generation by installing it from the PVE no-subscription repo of the ISO's Debian codename
|
|
# (spike SPIKE-baremetal-iso-2026-07-16.md §15.6: pair by major.minor). Rebuild this image when the
|
|
# target PVE generation changes (e.g. PVE 10 -> Debian forky) and record both versions in the build
|
|
# manifest.
|
|
#
|
|
# Build: docker build -f scripts/iso/Dockerfile.assistant -t felhom-iso-assistant:trixie scripts/iso
|
|
FROM debian:trixie
|
|
|
|
# xorriso: ISO (re-)mastering. shellcheck: lint. grub-mkimage (+ x86_64-efi module dir) and mtools:
|
|
# the slice-B mkimage loader surgery — build a monolithic UEFI loader from the ISO's own GRUB modules
|
|
# and inject it into the efi.img ESP (FAT, via mtools). grub 2.12 on trixie == the PVE 9.x ISO's
|
|
# 2.12-9+pmx2 generation, so the tool matches the modules it embeds. imagemagick: the R-38 GRUB boot
|
|
# card — grub/generate-grub-background.sh letterboxes the website's brand asset onto a 1024x768
|
|
# gfxterm canvas at repack time, so the boot screen has ONE source (the website asset) and not a
|
|
# second pre-rendered copy checked into the repo to drift. python3: felhom-bootstrap.sh's JSON
|
|
# parsing depends on it on the installed box (PVE ships it) — the test harness
|
|
# (test/bootstrap-modes.sh) runs the bootstrap in THIS image, so it must match that dependency.
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
ca-certificates wget gnupg xorriso shellcheck python3 \
|
|
grub-common grub-efi-amd64-bin mtools dosfstools imagemagick \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# PVE 9.x (trixie) no-subscription repo — pairs the assistant to the 9.2 ISO generation.
|
|
RUN wget -q https://enterprise.proxmox.com/debian/proxmox-release-trixie.gpg \
|
|
-O /etc/apt/trusted.gpg.d/proxmox-release-trixie.gpg
|
|
RUN echo "deb http://download.proxmox.com/debian/pve trixie pve-no-subscription" \
|
|
> /etc/apt/sources.list.d/pve.list
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
proxmox-auto-install-assistant \
|
|
&& rm -rf /var/lib/apt/lists/*
|