From 0874c2fd0f900891b25af9f30cc22a32dd20241b Mon Sep 17 00:00:00 2001 From: Thomas Stallinger Date: Tue, 1 Sep 2026 10:26:00 +0200 Subject: [PATCH] fix(boot-medium): /dev als leeres Verzeichnis wiederherstellen (Kernel-Panic beim echten Boot) Live auf echter Hardware gefunden (01.09.2026), direkt nachdem der vorige LXC-Fix (Commit f6bb3db) deployed wurde: "-excludes dev" entfernt nicht nur die Geraetedateien, sondern das gesamte /dev-Verzeichnis. live-boots eigenes Initramfs-Skript braucht /dev aber als reinen Mountpunkt (bindet dort sein eigenes Devtmpfs ein, kurz vor switch_root) und scheiterte deshalb sofort beim Booten mit "mount: /root/dev: mount point does not exist", gefolgt von einem Kernel-Panic. Fix: mkdir -p nach dem Entpacken stellt /dev als leeres Verzeichnis wieder her - devtmpfs bindet sich selbst darueber, die eigentlichen Geraetedateien werden nie aus dem Squashfs gebraucht. Dasselbe Muster wie image_deploy_restore_excluded_dirs() beim Golden Image, nur hier fuers Boot-Medium selbst. Diesmal VOR dem Deploy lokal in der enterprise-QEMU-VM boot-getestet (der vorige Fix wurde ungetestet deployed, was genau zu diesem Bug fuehrte) - sauberer Boot bestaetigt, kein Kernel-Panic, Auto-Modus laeuft bis zur Golden-Image-Installation durch. --- scripts/build_customer_iso.sh | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/scripts/build_customer_iso.sh b/scripts/build_customer_iso.sh index 0262305..c7e39b3 100755 --- a/scripts/build_customer_iso.sh +++ b/scripts/build_customer_iso.sh @@ -85,15 +85,23 @@ echo "Entpacke Squashfs..." # 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. +# (/dev/null, /dev/console, ...) mit "Operation not permitted". unsquashfs -excludes -d "${WORK_DIR}/root" "${WORK_DIR}/orig.squashfs" dev || { echo "Error: Squashfs konnte nicht entpackt werden." >&2; exit 1; } +# ECHTER BUG, live auf echter Hardware gefunden (01.09.2026, direkt nach dem +# vorigen Fix): "-excludes dev" entfernt nicht nur die Geraetedateien, +# sondern das gesamte /dev-VERZEICHNIS - live-boots eigenes Initramfs- +# Skript braucht /dev aber als reinen MOUNTPUNKT (bindet dort sein eigenes +# Devtmpfs ein, kurz vor switch_root) und scheiterte deshalb sofort beim +# Booten mit "mount: /root/dev: mount point does not exist" gefolgt von +# einem Kernel-Panic. Anders als beim Golden Image (siehe +# package_golden_image.sh/image_deploy_restore_excluded_dirs(), wo dasselbe +# Muster schon einmal gefunden wurde) reicht hier ein leeres Verzeichnis - +# devtmpfs bindet sich selbst darueber, die eigentlichen Geraetedateien +# werden nie aus dem Squashfs gebraucht. +mkdir -p "${WORK_DIR}/root/dev" + echo "Schreibe personalisierte installer.conf..." mkdir -p "${WORK_DIR}/root/opt/tuxflotte/config" {