fix(boot-medium): unsquashfs auf anode - /dev von Extraktion ausschliessen

Live gefunden (01.09.2026, erster echter Produktionslauf ueber die reale
Kundenplattform-API): anode laeuft in einem LXC-Container
(systemd-detect-virt: lxc), der CAP_MKNOD grundsaetzlich blockiert - auch
fuer root. unsquashfs scheiterte beim Wiederherstellen der wenigen
Geraetedateien im Boot-Medium-Squashfs (/dev/null, /dev/console, ...) mit
"Operation not permitted", ISO-Bau brach ab.

"-excludes ... dev" schliesst /dev komplett von der Extraktion aus -
anders als beim Golden Image (package_golden_image.sh) ist das hier
unkritisch: das Boot-Medium ist nur der Installations-Vermittler, nicht
das ausgelieferte System - devtmpfs erzeugt /dev beim tatsaechlichen Boot
ohnehin automatisch neu.

Zugehoerige Produktions-Deployment-Schritte (nicht im Diff sichtbar):
main auf anode gepullt (war noch auf dem alten bc9cefa-Stand vor dem
gesamten Boot-Medium-Umbau), squashfs-tools installiert (fehlte), neues
Basis-ISO nach data/upstream/tuxflotte-mint-boot-medium.iso hochgeladen,
TUXFLOTTE_MINT_ISO_PATH in provisioning-server.env gesetzt, Dienst neu
gestartet.
This commit is contained in:
Thomas Stallinger 2026-09-01 09:50:42 +02:00
parent d179f9c2f5
commit f6bb3db9b9

View File

@ -81,7 +81,18 @@ xorriso -indev "${SOURCE_ISO}" -osirrox on -extract /live/filesystem.squashfs \
"${WORK_DIR}/orig.squashfs" >/dev/null "${WORK_DIR}/orig.squashfs" >/dev/null
echo "Entpacke Squashfs..." echo "Entpacke Squashfs..."
unsquashfs -d "${WORK_DIR}/root" "${WORK_DIR}/orig.squashfs" >/dev/null # "-excludes ... dev" schliesst /dev von der Extraktion aus - live auf anode
# gefunden (01.09.2026): anode laeuft in einem LXC-Container, der CAP_MKNOD
# grundsaetzlich blockiert (auch fuer root) - unsquashfs scheiterte beim
# Wiederherstellen der paar Geraetedateien im Boot-Medium-Squashfs
# (/dev/null, /dev/console, ...) mit "Operation not permitted". Anders als
# beim Golden Image (siehe package_golden_image.sh) ist das hier unkritisch:
# das Boot-Medium ist nur der Installations-Vermittler, nicht das
# ausgelieferte System - devtmpfs erzeugt /dev beim tatsaechlichen Boot
# ohnehin automatisch neu, die gebackenen Geraetedateien sind nie
# load-bearing.
unsquashfs -excludes -d "${WORK_DIR}/root" "${WORK_DIR}/orig.squashfs" dev ||
{ echo "Error: Squashfs konnte nicht entpackt werden." >&2; exit 1; }
echo "Schreibe personalisierte installer.conf..." echo "Schreibe personalisierte installer.conf..."
mkdir -p "${WORK_DIR}/root/opt/tuxflotte/config" mkdir -p "${WORK_DIR}/root/opt/tuxflotte/config"