fix(golden-image): tar --exclude braucht relative Pfade bei -C /

--exclude=/proc (mit fuehrendem Slash) matcht nicht gegen die von
'tar -C / .' erzeugten relativen Elementnamen (./proc/...). Live gegen
die echte Referenz-VM entdeckt: der erste Packlauf haette dadurch
/proc, /sys, /dev, /run, /tmp, /var/tmp real mit eingepackt (u.a.
/proc/kcore) statt sie auszuschliessen. Abgebrochen, Excludes auf
relative Pfade (proc, sys, dev, run, tmp, var/tmp) umgestellt und
lokal mit einem Testverzeichnis verifiziert (inkl. Gegenprobe: ein
'runner/'-Verzeichnis bleibt vom 'run'-Exclude unberuehrt).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Thomas Stallinger 2026-08-31 09:38:09 +02:00
parent cb182a058f
commit 86ebea6d66

View File

@ -69,10 +69,15 @@ rm -f /home/*/.bash_history 2>/dev/null || true
# zweiten Durchlauf.
echo "==> Packe nach ${OUTPUT_FILE}"
# WICHTIG: tar -C / erzeugt relative Elementnamen (./proc/..., ./sys/...),
# nicht absolute (/proc/...) - ein --exclude mit fuehrendem Slash matcht
# dagegen NICHT (live am 31.08.2026 entdeckt: das lief zunaechst
# unbemerkt gegen die echte Referenz-VM und haette u.a. /proc/kcore mit
# eingepackt). Ausschluesse deshalb ohne fuehrenden Slash angeben.
tar --numeric-owner --xattrs \
--exclude=/proc --exclude=/sys --exclude=/dev \
--exclude=/run --exclude=/tmp --exclude=/var/tmp \
--exclude="${OUTPUT_FILE}" \
--exclude=proc --exclude=sys --exclude=dev \
--exclude=run --exclude=tmp --exclude=var/tmp \
--exclude="${OUTPUT_FILE#/}" \
-C / -cf - . | zstd -f -T0 -19 -o "${OUTPUT_FILE}"
echo "==> Fertig: ${OUTPUT_FILE} ($(du -h "${OUTPUT_FILE}" | cut -f1))"