diff --git a/RASPBERRY_PI_SETUP.txt b/RASPBERRY_PI_SETUP.txt index c27cb25..50add8e 100644 --- a/RASPBERRY_PI_SETUP.txt +++ b/RASPBERRY_PI_SETUP.txt @@ -2,8 +2,13 @@ Mini-Dokumentation: Analyzer Kiosk auf Raspberry Pi OS 1. Dienste deaktivieren sudo systemctl disable --now lightdm.service -sudo systemctl disable --now getty@tty1.service -sudo systemctl reset-failed getty@tty1.service +sudo systemctl mask --now getty@tty1.service + +Hinweis: +- tty1 ist exklusiv fuer Xorg/Chromium reserviert. Ein blosses `disable` reicht + nicht, weil systemd den Getty bei einem spaeteren Boot erneut erzeugen kann. +- Fuer einen lokalen Login-Prompt auf tty1 den Kiosk zuerst stoppen und Getty + anschliessend mit `sudo systemctl unmask --now getty@tty1.service` reaktivieren. 2. systemd neu laden sudo systemctl daemon-reload diff --git a/README.md b/README.md index d936365..28274e7 100644 --- a/README.md +++ b/README.md @@ -124,8 +124,19 @@ zugehörige sudo-Regel werden einmalig als root installiert: sudo bash /home/volumio/Phoenix/scripts/install_volumio_services.sh ``` -Der Installer verändert keine Debian-/Analyzer-Units und startet laufende -Dienste nicht automatisch neu. +Der Installer überschreibt keine Debian-/Analyzer-Unitdateien und startet +laufende Dienste nicht automatisch neu. Er maskiert `getty@tty1.service`, da der +Kiosk-X-Server `tty1` exklusiv verwendet. Ohne die Maskierung können Getty und +Xorg beim Booten um dasselbe virtuelle Terminal konkurrieren und eine +Kiosk-Neustartschleife auslösen. + +Um den lokalen Login-Prompt auf `tty1` wiederherzustellen, zuerst den Kiosk +stoppen und Getty anschließend wieder freigeben: + +```bash +sudo systemctl stop analyzer-kiosk-volumio.service +sudo systemctl unmask --now getty@tty1.service +``` Wenn `toggle-ext` genutzt werden soll, sollte es also unter diesem Pfad liegen: diff --git a/etc/systemd/system/analyzer-kiosk-volumio.service b/etc/systemd/system/analyzer-kiosk-volumio.service index 9673497..63bea2f 100644 --- a/etc/systemd/system/analyzer-kiosk-volumio.service +++ b/etc/systemd/system/analyzer-kiosk-volumio.service @@ -1,5 +1,7 @@ [Unit] Description=Analyzer Kiosk Volumio (Raspberry Pi OS) +Conflicts=getty@tty1.service +After=systemd-user-sessions.service getty-pre.target After=network-online.target After=analyzer-web-volumio.service Wants=analyzer-web-volumio.service diff --git a/etc/systemd/system/analyzer-kiosk.service b/etc/systemd/system/analyzer-kiosk.service index 1d250f7..64f7e9f 100644 --- a/etc/systemd/system/analyzer-kiosk.service +++ b/etc/systemd/system/analyzer-kiosk.service @@ -1,5 +1,7 @@ [Unit] Description=Analyzer Kiosk (Raspberry Pi OS) +Conflicts=getty@tty1.service +After=systemd-user-sessions.service getty-pre.target After=network-online.target After=analyzer-web.service Wants=analyzer-web.service diff --git a/scripts/install_volumio_services.sh b/scripts/install_volumio_services.sh index 1427fed..8c3dc8d 100755 --- a/scripts/install_volumio_services.sh +++ b/scripts/install_volumio_services.sh @@ -51,8 +51,13 @@ install -o root -g root -m 0440 \ "$SUDOERS_SOURCE" \ /etc/sudoers.d/phoenix-update-volumio +# tty1 is reserved for Xorg by analyzer-kiosk-volumio.service. Disabling the +# generated getty is insufficient because systemd may create/start it again on +# a later boot. Mask it so the kiosk and agetty can never race for the VT. +systemctl mask --now getty@tty1.service systemctl daemon-reload systemctl enable analyzer-web-volumio.service analyzer-kiosk-volumio.service echo "Volumio integration installed" +echo "getty@tty1.service masked; run 'systemctl unmask getty@tty1.service' to restore the tty1 login console" echo "Existing services were not restarted"