Thomas Stallinger 2190d6f403 feat(boot-medium): Tuxflotte-Nutzlast ins Boot-Medium einbauen (Phase 1)
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.
2026-08-31 13:52:38 +02:00

38 lines
1.5 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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."