#!/usr/bin/env bash set -Eeuo pipefail # Wird von tuxflotte-installer.service beim Boot direkt auf tty1 gestartet - # unabhaengig davon, ob config/installer.conf einen Auto-Modus- # Aktivierungscode mitbringt (personalisierte Kunden-ISO, siehe # scripts/build_customer_iso.sh) oder nicht (generisches Test-/ # Entwicklungsabbild): installer.sh fragt in letzterem Fall selbst # interaktiv nach (12_enrollment_auth.sh, 05_network.sh-WLAN-Auswahl), auf # genau dieser Konsole - der Service leitet dafuer TTYPath=/dev/tty1 durch. # # Schreibt zusaetzlich zur journal-Ausgabe (StandardOutput=journal+console # im systemd-Unit) in eine Logdatei - per SSH/Konsole nachtraeglich # einsehbar, ohne journalctl zu brauchen. LOG_FILE="/var/log/tuxflotte-installer.log" BANNER_FILE="/opt/tuxflotte/banner.txt" # Begruessungsbanner (Tuxflotte-Schriftzug + Flotten-Grafik, 80 Spalten) - # reine Optik, ins Logfile mitschreiben schadet nicht, aber nicht fatal # wenn die Datei mal fehlt (set -e: "if" statt "&&", sonst wuerde ein # fehlendes Banner das ganze Skript beenden). if [[ -r "${BANNER_FILE}" ]]; then { cat "${BANNER_FILE}"; echo; } | tee -a "${LOG_FILE}" fi /opt/tuxflotte/scripts/installer.sh 2>&1 | tee -a "${LOG_FILE}" STATUS="${PIPESTATUS[0]}" # Live gefunden (31.08.2026): ein ExecStopPost, der beim Dienstende # getty@tty1.service neu startet, ist unzuverlaessig (Race mit dem eigenen # TTY-Teardown dieses Dienstes - der Job wurde angestossen, blieb aber # "inactive/dead"). Stattdessen: diese Konsole faellt nach installer.sh # (egal ob Erfolg, kontrollierter Abbruch an einem Commit-Gate, oder # Fehler) deterministisch in eine interaktive Root-Shell - kein Race, # garantiert nutzbare Konsole fuer Fehlersuche/manuellen Neustart. Im # Erfolgsfall mit tatsaechlichem Deployment loest 40_backend.sh ohnehin # selbst einen Reboot aus, wodurch diese Shell nie sichtbar wird. { echo echo "Tuxflotte-Installer beendet (Exit-Code: ${STATUS})." echo "Diese Konsole steht fuer Fehlersuche/manuellen Neustart zur Verfuegung." echo } | tee -a "${LOG_FILE}" exec /bin/bash --login