fix: echte unbeaufsichtigte Mint-Installation (noninteractive-Frontend + Live-User-Bug)
Zwei unabhängige, live in der QEMU-Test-VM gefundene und verifizierte Bugs, die zusammen jede automatisierte Installation verhindert haben: 1. start-kiosk.sh hatte /home/liveuser hartkodiert (mkdir + Epiphany- Profilpfad). Der tatsächliche Live-Benutzername auf dieser ISO ist 'mint' (siehe grub/mint-*.cfg, username=mint überall) - /home/liveuser existiert nie und ist für den Live-User nicht anlegbar. Mit 'set -euo pipefail' brach das Skript an dieser Stelle sofort ab, TUXFLOTTE_AUTO_MODE wurde nie erreicht, installer.sh lief nie los. Fix: $HOME statt hartkodiertem Pfad. Passend dazu die sudoers.d/ 90-tuxflotte-Regel von 'liveuser' auf 'mint' korrigiert (war zwar nicht der eigentliche Blocker, da Casper dem Live-User ohnehin bereits passwortloses sudo gibt, aber inhaltlich falsch/irreführend). 2. backend_launch()s kexec-Sprung nutzte 'automatic-ubiquity' allein - das startet weiterhin Ubiquitys GTK-Oberfläche (ubiquity-dm), die Werte aus dem Preseed zwar vorbelegt, aber pro Seite trotzdem auf einen Klick wartet (live verifiziert: Multimedia-Codecs-Seite blieb ohne Klick >60s unverändert stehen). Das erklärt die auf echter Hardware beobachteten "automatischen" Installationen, die dennoch jede Seite einzeln abfragten. Fix: zusätzliches Boot-Keyword 'noninteractive' (siehe /usr/share/ubiquity/start-ubiquity-dm) lässt Casper stattdessen 'ubiquity noninteractive' direkt aufrufen - Ubiquitys eigenes, mitgeliefertes Headless-Frontend (frontend/noninteractive.py), das jede Seite mit auto_process=True rein über Debconf abarbeitet, ohne je ein Fenster zu zeichnen. Live-verifiziert (QEMU, frische Disk): zweiter Boot nach kexec hat 'noninteractive' korrekt im Kernel-Cmdline, ps aux zeigt keinen GTK-ubiquity-dm-Prozess mehr. /var/log/installer/debug bestätigt den Frontend-Wechsel eindeutig per Exception-Traceback (ubiquity.frontend.noninteractive.Wizard.question_dialog wirft absichtlich NotImplementedError statt zu warten) - zugleich der nächste, noch offene Befund: ubi-partman.py (Zeile 3484) stellt eine Frage, die im aktuellen Preseed noch nicht beantwortet ist. Das ist die einzige verbleibende Lücke zur echten Stille, siehe ADR-0023- Nachtrag und project_e2e_flow_dogfooding_2026-08-28 (Memory). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
c6489bb661
commit
6087243c82
@ -363,9 +363,21 @@ backend_launch() {
|
|||||||
|
|
||||||
backend_log "Lade Kexec-Ziel fuer automatisierten Ubiquity-Start."
|
backend_log "Lade Kexec-Ziel fuer automatisierten Ubiquity-Start."
|
||||||
|
|
||||||
|
# "noninteractive" (eigenes Boot-Keyword, siehe /usr/share/ubiquity/
|
||||||
|
# start-ubiquity-dm) laesst casper statt der GTK-Oberflaeche (ubiquity-dm
|
||||||
|
# -> gtk_ui.py) direkt "ubiquity noninteractive" aufrufen - Ubiquitys
|
||||||
|
# eigenes, mitgeliefertes Headless-Frontend (ubiquity/frontend/
|
||||||
|
# noninteractive.py). Das arbeitet jede Seite mit auto_process=True rein
|
||||||
|
# ueber Debconf ab, ohne jemals ein Fenster zu zeichnen oder einen Klick
|
||||||
|
# zu erwarten - der Unterschied zu "automatic-ubiquity" alleine: jenes
|
||||||
|
# startet weiterhin die GTK-Oberflaeche und fuellt dort nur die Werte
|
||||||
|
# vor, wartet aber pro Seite trotzdem auf "Continue" (real verifiziert,
|
||||||
|
# siehe ADR-0023-Nachtrag). "automatic-ubiquity" bleibt zusaetzlich
|
||||||
|
# gesetzt, weil start-ubiquity-dm bei einem GTK/X-Absturz automatisch
|
||||||
|
# darauf als Fallback in den Noninteractive-Modus zurueckfaellt.
|
||||||
kexec -l "${cdrom_vmlinuz}" \
|
kexec -l "${cdrom_vmlinuz}" \
|
||||||
--initrd="${custom_initrd}" \
|
--initrd="${custom_initrd}" \
|
||||||
--append="boot=casper automatic-ubiquity noprompt file=/preseed.cfg debian-installer/language=de keyboard-configuration/layoutcode=de quiet splash ---" ||
|
--append="boot=casper automatic-ubiquity noninteractive noprompt file=/preseed.cfg debian-installer/language=de keyboard-configuration/layoutcode=de quiet splash ---" ||
|
||||||
{ backend_fatal "kexec -l fehlgeschlagen."; return 1; }
|
{ backend_fatal "kexec -l fehlgeschlagen."; return 1; }
|
||||||
|
|
||||||
backend_log "Starte unbeaufsichtigte Installation (kexec -e). Kein Ruecksprung erwartet - ab hier laeuft die eigentliche Installation im neuen Kernel weiter."
|
backend_log "Starte unbeaufsichtigte Installation (kexec -e). Kein Ruecksprung erwartet - ab hier laeuft die eigentliche Installation im neuen Kernel weiter."
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
liveuser ALL=(ALL) NOPASSWD: ALL
|
mint ALL=(ALL) NOPASSWD: ALL
|
||||||
|
|||||||
@ -29,7 +29,7 @@ dconf write /org/gnome/epiphany/ask-for-default false
|
|||||||
dconf write /org/nemo/desktop/show-desktop-icons false
|
dconf write /org/nemo/desktop/show-desktop-icons false
|
||||||
dconf write /org/cinnamon/enabled-applets "['panel1:left:0:window-list@cinnamon.org:1', 'panel1:right:0:power@cinnamon.org:2']"
|
dconf write /org/cinnamon/enabled-applets "['panel1:left:0:window-list@cinnamon.org:1', 'panel1:right:0:power@cinnamon.org:2']"
|
||||||
|
|
||||||
mkdir -p /home/liveuser/.local/share/tuxflotte-kiosk
|
mkdir -p "${HOME}/.local/share/tuxflotte-kiosk"
|
||||||
|
|
||||||
# Auto-Modus (personalisierte Kunden-ISO, siehe scripts/build_customer_iso.sh)
|
# Auto-Modus (personalisierte Kunden-ISO, siehe scripts/build_customer_iso.sh)
|
||||||
# startet den Installer sofort unbeaufsichtigt statt der Kiosk-Startseite -
|
# startet den Installer sofort unbeaufsichtigt statt der Kiosk-Startseite -
|
||||||
@ -39,4 +39,4 @@ if grep -qE '^\s*(export\s+)?TUXFLOTTE_AUTO_MODE=true\s*$' /opt/tuxflotte/config
|
|||||||
exec sudo /opt/tuxflotte/scripts/installer.sh
|
exec sudo /opt/tuxflotte/scripts/installer.sh
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec epiphany --profile=/home/liveuser/.local/share/tuxflotte-kiosk file:///opt/tuxflotte/kiosk/index.html
|
exec epiphany --profile="${HOME}/.local/share/tuxflotte-kiosk" file:///opt/tuxflotte/kiosk/index.html
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user