scripts/ (installer.sh, lib/*, modules/00-99) und backends/mint-image/ (inkl. echtem postinstall.sh statt Symlink auf backends/mint/) werden ueber config/includes.chroot/opt/tuxflotte/ ins Image kopiert - bewusst nur die zur Laufzeit benoetigten Dateien, nicht die Build-Host-Werkzeuge (build_customer_iso.sh, build_golden_image.sh, package_golden_image.sh, lib/initrd.sh etc. bleiben aussen vor). 00_preflight.sh und backend_init() (backends/mint-image/backend.sh) verlieren ihre Laufzeit-apt-get-Nachinstallation (jq, parted, dosfstools, e2fsprogs, zstd, btrfs-progs, gettext-base, curl) - alles bereits in Phase 0 vorinstalliert. Werden durch reine Assertions ersetzt, die frueh und klar melden, falls die Paketliste doch mal luecken sollte. backends/mint/postinstall.sh nach backends/mint-image/postinstall.sh als echte Datei verschoben (war Symlink) - noetig, weil backends/mint/ in Phase 4 komplett entfernt wird. Live verifiziert in der enterprise-QEMU-VM: installer.sh von Hand gestartet, Module 00/05/10/12/15/17 liefen sauber durch, inkl. echtem Server-Kontakt zu anode und echter Geraeteregistrierung (Liebherr-Org), Commit-Gate erschien interaktiv wie erwartet, kontrollierter Abbruch ohne jede destruktive Aktion.
38 lines
1.5 KiB
Bash
Executable File
38 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
|
||
# Tuxflotte Installer
|
||
# Phase 0 – Preflight
|
||
#
|
||
# Prueft, dass Werkzeuge vorhanden sind, die spaetere Module (ab
|
||
# 10_hardware.sh) brauchen. jq ist der einzige hier betroffene Fall:
|
||
# 10_hardware.sh, 12_enrollment_auth.sh, 15_server_handshake.sh,
|
||
# 17_device_status.sh, 20_profile_selection.sh, 25_installation_confirm.sh
|
||
# und 30_runtime_blueprint.sh nutzen es alle.
|
||
#
|
||
# Historisch (bis zum Umstieg auf das eigenstaendige, per live-build gebaute
|
||
# Boot-Medium) wurde jq hier noch zur Laufzeit per apt-get nachinstalliert,
|
||
# weil das damalige Boot-Medium (eine gepatchte Linux-Mint-Live-ISO) es nicht
|
||
# mitbrachte - real entdeckt: beim automatisierten Start ueber
|
||
# start-kiosk.sh (kein Terminal, keine sichtbare Fehlermeldung) blieb der
|
||
# Installer in 10_hardware.sh mit "Benoetigtes Programm nicht gefunden: jq"
|
||
# haengen, sichtbar nur in ~/.xsession-errors. Das eigenstaendige Boot-Medium
|
||
# bringt jq bereits im Paketsatz mit (siehe boot-medium/config/package-lists/
|
||
# tuxflotte.list.chroot) - diese Pruefung bleibt trotzdem als reine Assertion
|
||
# bestehen, damit ein kuenftiger Paketlisten-Fehler hier fruh und klar auffaellt,
|
||
# statt erst kryptisch in 10_hardware.sh.
|
||
set -Eeuo pipefail
|
||
|
||
readonly SCRIPT_NAME="${0##*/}"
|
||
|
||
log() {
|
||
printf '[%s] %s\n' "${SCRIPT_NAME}" "$*" >&2
|
||
}
|
||
|
||
fatal() {
|
||
printf '[%s] FEHLER: %s\n' "${SCRIPT_NAME}" "$*" >&2
|
||
exit 1
|
||
}
|
||
|
||
command -v jq >/dev/null 2>&1 ||
|
||
fatal "jq fehlt auf dem Boot-Medium - Paketliste (tuxflotte.list.chroot) pruefen."
|