80-Spalten-ASCII-Banner (pics/tuxflotte-terminal-80.txt, lose Asset-Datei, nicht versioniert - pics/ ist kein Git-Repo) wird beim Boot vor installer.sh angezeigt, sowohl im Dev- als auch im Produktiv-Build. Schriftzug frisch per figlet (Font "big") erzeugt, passt sauber in 80 Spalten. Grafik-Teil aus der bestehenden 160-Spalten-Vorlage per Spalten-Verdichtung (2:1) abgeleitet, da die Original-SVG-Logo-Konturen (reine offene Pfade ohne Fill) bei 80 Spalten direkt aus dem Vektor konvertiert nur noch vereinzelte Punkte ergeben - live geprueft, siehe Konversation. boot-autostart.sh zeigt das Banner nur wenn lesbar (if statt &&, sonst wuerde ein fehlendes Banner das Skript unter set -e sofort beenden). Live verifiziert in der enterprise-QEMU-VM: Banner erscheint korrekt vor [1/12] Vorbereitung, passt vollstaendig in die 80-Spalten-Konsole.
46 lines
2.0 KiB
Bash
Executable File
46 lines
2.0 KiB
Bash
Executable File
#!/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
|