diff --git a/backends/mint-image/backend.sh b/backends/mint-image/backend.sh index f16faf2..f48c038 100644 --- a/backends/mint-image/backend.sh +++ b/backends/mint-image/backend.sh @@ -270,6 +270,31 @@ backend_postinstall() { printf '%s' "${postinstall_rendered}" > "${TARGET_DIR}/tmp/postinstall.sh" chmod 0700 "${TARGET_DIR}/tmp/postinstall.sh" + # Live gefunden (31.08.2026, erster vollstaendig durchgelaufener + # End-to-End-Test): postinstall.sh braucht jq (+curl), aber die echte + # Mint-Referenz-VM bringt das nicht zwingend mit (anders als das + # Boot-Medium selbst, das jq ja schon vorinstalliert hat - das hilft + # dem ausgerollten Zielsystem hier nichts, das ist ein komplett + # eigener chroot). python3 wird nicht von postinstall.sh selbst + # gebraucht, aber vom heruntergeladenen agent.py nach dem naechsten + # Boot - hier gleich mit absichern, um nicht noch einen ganzen + # Referenz-VM-Neupack-Zyklus wegen eines einzelnen fehlenden Pakets zu + # brauchen. package_golden_image.sh leert ausserdem /var/lib/apt/lists + # als Teil der Bereinigung - "apt-get update" ist deshalb hier noetig, + # bevor "apt-get install" ueberhaupt Pakete finden kann. Netzwerk ist + # im chroot verfuegbar (resolv.conf wurde schon in + # image_deploy_bind_mounts kopiert, dieselben Bind-Mounts sind noch + # aktiv). + chroot "${TARGET_DIR}" bash -c ' + missing=() + command -v jq >/dev/null 2>&1 || missing+=(jq) + command -v curl >/dev/null 2>&1 || missing+=(curl) + command -v python3 >/dev/null 2>&1 || missing+=(python3) + [[ "${#missing[@]}" -eq 0 ]] && exit 0 + apt-get update -qq && DEBIAN_FRONTEND=noninteractive apt-get install -y "${missing[@]}" + ' || + { backend_fatal "jq/curl/python3 konnten im Zielsystem nicht sichergestellt werden."; return 1; } + backend_log "Führe Postinstall-Skript im chroot aus." chroot "${TARGET_DIR}" /bin/bash /tmp/postinstall.sh || { backend_fatal "Postinstall-Skript ist im chroot fehlgeschlagen."; return 1; } diff --git a/boot-medium/config/includes.chroot/opt/tuxflotte/backends/mint-image/backend.sh b/boot-medium/config/includes.chroot/opt/tuxflotte/backends/mint-image/backend.sh index f16faf2..f48c038 100644 --- a/boot-medium/config/includes.chroot/opt/tuxflotte/backends/mint-image/backend.sh +++ b/boot-medium/config/includes.chroot/opt/tuxflotte/backends/mint-image/backend.sh @@ -270,6 +270,31 @@ backend_postinstall() { printf '%s' "${postinstall_rendered}" > "${TARGET_DIR}/tmp/postinstall.sh" chmod 0700 "${TARGET_DIR}/tmp/postinstall.sh" + # Live gefunden (31.08.2026, erster vollstaendig durchgelaufener + # End-to-End-Test): postinstall.sh braucht jq (+curl), aber die echte + # Mint-Referenz-VM bringt das nicht zwingend mit (anders als das + # Boot-Medium selbst, das jq ja schon vorinstalliert hat - das hilft + # dem ausgerollten Zielsystem hier nichts, das ist ein komplett + # eigener chroot). python3 wird nicht von postinstall.sh selbst + # gebraucht, aber vom heruntergeladenen agent.py nach dem naechsten + # Boot - hier gleich mit absichern, um nicht noch einen ganzen + # Referenz-VM-Neupack-Zyklus wegen eines einzelnen fehlenden Pakets zu + # brauchen. package_golden_image.sh leert ausserdem /var/lib/apt/lists + # als Teil der Bereinigung - "apt-get update" ist deshalb hier noetig, + # bevor "apt-get install" ueberhaupt Pakete finden kann. Netzwerk ist + # im chroot verfuegbar (resolv.conf wurde schon in + # image_deploy_bind_mounts kopiert, dieselben Bind-Mounts sind noch + # aktiv). + chroot "${TARGET_DIR}" bash -c ' + missing=() + command -v jq >/dev/null 2>&1 || missing+=(jq) + command -v curl >/dev/null 2>&1 || missing+=(curl) + command -v python3 >/dev/null 2>&1 || missing+=(python3) + [[ "${#missing[@]}" -eq 0 ]] && exit 0 + apt-get update -qq && DEBIAN_FRONTEND=noninteractive apt-get install -y "${missing[@]}" + ' || + { backend_fatal "jq/curl/python3 konnten im Zielsystem nicht sichergestellt werden."; return 1; } + backend_log "Führe Postinstall-Skript im chroot aus." chroot "${TARGET_DIR}" /bin/bash /tmp/postinstall.sh || { backend_fatal "Postinstall-Skript ist im chroot fehlgeschlagen."; return 1; }