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>
43 lines
2.5 KiB
Bash
Executable File
43 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# German keyboard layout for the graphical session (vconsole.keymap=de on the
|
|
# kernel cmdline only covers the text console, not X11/Wayland input). Cinnamon
|
|
# ships its own parallel org.cinnamon.desktop.input-sources schema, separate
|
|
# from GNOME's org.gnome.desktop.input-sources — writing org.gnome alone had
|
|
# no effect (confirmed on real hardware), so both are set here.
|
|
dconf write /org/cinnamon/desktop/input-sources/sources "[('xkb', 'de')]"
|
|
dconf write /org/gnome/desktop/input-sources/sources "[('xkb', 'de')]"
|
|
|
|
# Suppresses Epiphany's "set as default browser?" first-run prompt (schema
|
|
# default is true, see /usr/share/glib-2.0/schemas/org.gnome.epiphany.gschema.xml).
|
|
dconf write /org/gnome/epiphany/ask-for-default false
|
|
|
|
# Kiosk cleanup: no desktop icons (Nemo). The panel itself is kept (removing
|
|
# the last panel via panels-enabled triggers Cinnamon's own "you don't have
|
|
# any panels, open panel settings?" confirmation dialog — hardcoded in
|
|
# js/ui/panel.js, no way to suppress it, so panels-enabled is deliberately
|
|
# left untouched). Instead, only the two useful applets are kept: a window
|
|
# list (to restore Epiphany if a user minimizes it) and power (shutdown/
|
|
# reboot) — everything else (menu, systray, clock, workspace switcher etc.)
|
|
# is removed. Deliberately the classic window-list@cinnamon.org, not
|
|
# grouped-window-list@cinnamon.org: the grouped variant ships default
|
|
# "pinned apps" launchers (firefox.desktop, org.gnome.Terminal.desktop,
|
|
# nemo.desktop — confirmed via its settings-schema.json) that showed up in
|
|
# the panel even with unrelated applets removed. Plain window-list has no
|
|
# pinned-apps concept at all, only ever shows actually open windows.
|
|
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']"
|
|
|
|
mkdir -p "${HOME}/.local/share/tuxflotte-kiosk"
|
|
|
|
# Auto-Modus (personalisierte Kunden-ISO, siehe scripts/build_customer_iso.sh)
|
|
# startet den Installer sofort unbeaufsichtigt statt der Kiosk-Startseite -
|
|
# config/installer.conf wird nur bei personalisierten Abbildern mitgeliefert,
|
|
# das Standard-/Testabbild bleibt unverändert interaktiv.
|
|
if grep -qE '^\s*(export\s+)?TUXFLOTTE_AUTO_MODE=true\s*$' /opt/tuxflotte/config/installer.conf 2>/dev/null; then
|
|
exec sudo /opt/tuxflotte/scripts/installer.sh
|
|
fi
|
|
|
|
exec epiphany --profile="${HOME}/.local/share/tuxflotte-kiosk" file:///opt/tuxflotte/kiosk/index.html
|