From f6bb3db9b92f7678e7b075062932fee13914a19e Mon Sep 17 00:00:00 2001 From: Thomas Stallinger Date: Tue, 1 Sep 2026 09:50:42 +0200 Subject: [PATCH] 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. --- scripts/build_customer_iso.sh | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/scripts/build_customer_iso.sh b/scripts/build_customer_iso.sh index 4a05de5..0262305 100755 --- a/scripts/build_customer_iso.sh +++ b/scripts/build_customer_iso.sh @@ -81,7 +81,18 @@ xorriso -indev "${SOURCE_ISO}" -osirrox on -extract /live/filesystem.squashfs \ "${WORK_DIR}/orig.squashfs" >/dev/null 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..." mkdir -p "${WORK_DIR}/root/opt/tuxflotte/config"