# Automatischer Start ohne Benutzeranmeldung ## Übersicht Das MYP Druckerverwaltungssystem ist so konfiguriert, dass der Raspberry Pi automatisch ohne Benutzeranmeldung startet und direkt in den Kiosk-Modus wechselt. Diese Dokumentation beschreibt die implementierten Mechanismen und Troubleshooting-Optionen. ## Implementierte Auto-Login-Mechanismen ### 1. LightDM Display Manager **Konfigurationsdatei:** `/etc/lightdm/lightdm.conf` ```ini [Seat:*] # Automatischer Login für Kiosk-Benutzer autologin-user=kiosk autologin-user-timeout=0 autologin-session=openbox user-session=openbox session-wrapper=/etc/X11/Xsession greeter-session=lightdm-gtk-greeter allow-guest=false # Kein Benutzer-Wechsel möglich greeter-hide-users=true greeter-show-manual-login=false # Automatischer Start ohne Verzögerung autologin-in-background=false # Session-Setup session-setup-script=/usr/share/lightdm/setup-kiosk-session.sh [SeatDefaults] # Zusätzliche Sicherheitseinstellungen autologin-user=kiosk autologin-user-timeout=0 autologin-session=openbox greeter-hide-users=true greeter-show-manual-login=false allow-user-switching=false ``` **Systemd-Override:** `/etc/systemd/system/lightdm.service.d/autologin-override.conf` ```ini [Unit] After=multi-user.target network.target myp-druckerverwaltung.service Wants=myp-druckerverwaltung.service [Service] # Automatischer Restart bei Fehlern Restart=always RestartSec=3 # Umgebungsvariablen für Kiosk Environment=DISPLAY=:0 Environment=KIOSK_MODE=1 # Verzögerung für Backend-Start ExecStartPre=/bin/bash -c 'for i in {1..30}; do if curl -s http://localhost:5000 >/dev/null 2>&1; then break; fi; sleep 2; done' ``` ### 2. Getty Auto-Login (Fallback) **Konfigurationsdatei:** `/etc/systemd/system/getty@tty1.service.d/autologin.conf` ```ini [Service] ExecStart= ExecStart=-/sbin/agetty --autologin kiosk --noclear %I $TERM Type=simple Restart=always RestartSec=3 ``` ### 3. Benutzer-Profile Auto-Start **Bashrc-Autostart:** `/home/kiosk/.bashrc` ```bash # ===== VERSTÄRKTER KIOSK AUTOSTART ===== if [ -z "$SSH_CLIENT" ] && [ -z "$SSH_TTY" ] && [ -z "$KIOSK_STARTED" ]; then export KIOSK_STARTED=1 # Logge Autostart-Versuch echo "$(date): Bashrc Autostart-Versuch auf $(tty)" >> /var/log/kiosk-autostart.log # Prüfe ob wir auf tty1 sind und X noch nicht läuft if [ "$(tty)" = "/dev/tty1" ] && [ -z "$DISPLAY" ]; then echo "$(date): Starte X-Session automatisch via bashrc" >> /var/log/kiosk-autostart.log exec startx fi # Falls X läuft aber Kiosk-App nicht, starte sie if [ -n "$DISPLAY" ] && ! pgrep -f "chromium.*kiosk" > /dev/null; then echo "$(date): Starte Kiosk-Anwendung via bashrc" >> /var/log/kiosk-autostart.log exec $HOME/start-kiosk.sh fi fi ``` **Profile-Autostart:** `/home/kiosk/.profile` ```bash # ===== VERSTÄRKTER KIOSK AUTOSTART (PROFILE) ===== if [ -z "$SSH_CLIENT" ] && [ -z "$SSH_TTY" ] && [ -z "$KIOSK_STARTED" ]; then export KIOSK_STARTED=1 # Logge Profile-Autostart echo "$(date): Profile Autostart-Versuch auf $(tty)" >> /var/log/kiosk-autostart.log # Starte X-Session falls nicht vorhanden if [ -z "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ] && [ "$(tty)" = "/dev/tty1" ]; then echo "$(date): Starte X-Session via profile" >> /var/log/kiosk-autostart.log exec startx fi fi ``` ### 4. Desktop Autostart **XDG Autostart:** `/home/kiosk/.config/autostart/kiosk-app.desktop` ```ini [Desktop Entry] Type=Application Name=MYP Kiosk Application Comment=Startet die MYP Kiosk-Anwendung automatisch Exec=/home/kiosk/start-kiosk.sh Hidden=false NoDisplay=false X-GNOME-Autostart-enabled=true StartupNotify=false Terminal=false ``` ### 5. Systemd-Watchdog Services **Enhanced Watchdog:** `/etc/systemd/system/kiosk-watchdog-enhanced.service` Überwacht kontinuierlich: - Backend-Service Status - Backend-Erreichbarkeit (HTTP) - LightDM Status - Kiosk-Benutzer Session - Chromium Kiosk-Prozess - X-Server Status ### 6. Cron-Überwachung **Cron-Watchdog:** `/etc/cron.d/kiosk-watchdog-enhanced` ```bash # Verstärkter Kiosk-Watchdog: Prüft alle 2 Minuten */2 * * * * kiosk /bin/bash -c 'if ! pgrep -f "chromium.*kiosk" > /dev/null; then echo "$(date): Cron-Watchdog startet Kiosk neu" >> /var/log/kiosk-cron-watchdog.log; DISPLAY=:0 $HOME/start-kiosk.sh & fi' # System-Watchdog: Prüft Services alle 5 Minuten */5 * * * * root /bin/bash -c 'if ! systemctl is-active --quiet lightdm; then echo "$(date): Cron startet LightDM neu" >> /var/log/system-cron-watchdog.log; systemctl start lightdm; fi' ``` ### 7. RC.Local Fallback **Boot-Fallback:** `/etc/rc.local` ```bash #!/bin/bash # Verstärkter rc.local - Kiosk-Fallback # Logge Start echo "$(date): rc.local gestartet" >> /var/log/kiosk-fallback.log # Warte auf System-Initialisierung sleep 20 # Starte Backend-Service falls nicht läuft if ! systemctl is-active --quiet myp-druckerverwaltung; then echo "$(date): Starte Backend-Service" >> /var/log/kiosk-fallback.log systemctl start myp-druckerverwaltung sleep 10 fi # Warte auf Backend-Verfügbarkeit for i in {1..30}; do if curl -s http://localhost:5000 >/dev/null 2>&1; then echo "$(date): Backend verfügbar nach $i Versuchen" >> /var/log/kiosk-fallback.log break fi sleep 2 done # Starte LightDM falls nicht läuft if ! systemctl is-active --quiet lightdm; then echo "$(date): Starte LightDM" >> /var/log/kiosk-fallback.log systemctl start lightdm sleep 5 fi # Prüfe nach 30 Sekunden ob Kiosk-Benutzer angemeldet ist sleep 30 if ! pgrep -u kiosk > /dev/null; then echo "$(date): Kiosk-Benutzer nicht angemeldet - starte LightDM neu" >> /var/log/kiosk-fallback.log systemctl restart lightdm fi echo "$(date): rc.local Kiosk-Fallback abgeschlossen" >> /var/log/kiosk-fallback.log exit 0 ``` ## Boot-Optimierungen ### Raspberry Pi Boot-Konfiguration **Boot-Config:** `/boot/config.txt` ```ini # GPU Memory für bessere Performance gpu_mem=128 # Disable Boot-Splash für schnelleren Start disable_splash=1 # Boot-Delay reduzieren boot_delay=0 # HDMI-Hotplug für bessere Display-Erkennung hdmi_force_hotplug=1 # Disable Rainbow-Splash disable_overscan=1 ``` **Kernel-Parameter:** `/boot/cmdline.txt` ``` # Zusätzliche Parameter für schnelleren Boot quiet loglevel=3 logo.nologo vt.global_cursor_default=0 ``` ### Systemd-Konfiguration **Standard-Target:** `graphical.target` ```bash systemctl set-default graphical.target ``` **Logind-Konfiguration:** `/etc/systemd/logind.conf.d/kiosk.conf` ```ini [Login] # Verhindere dass System bei Inaktivität heruntergefahren wird IdleAction=ignore IdleActionSec=infinity # Verhindere Suspend/Hibernate HandlePowerKey=ignore HandleSuspendKey=ignore HandleHibernateKey=ignore HandleLidSwitch=ignore # Session-Einstellungen für Kiosk KillUserProcesses=no UserStopDelaySec=10 # Automatic VT allocation ReserveVT=1 ``` ## Troubleshooting ### 1. System startet nicht automatisch **Diagnose:** ```bash # Prüfe systemd default target systemctl get-default # Prüfe LightDM Status systemctl status lightdm # Prüfe Getty Service systemctl status getty@tty1 ``` **Lösung:** ```bash # Setze graphical target sudo systemctl set-default graphical.target # Aktiviere Services sudo systemctl enable lightdm sudo systemctl enable getty@tty1 ``` ### 2. Kiosk-Benutzer meldet sich nicht automatisch an **Diagnose:** ```bash # Prüfe LightDM Konfiguration cat /etc/lightdm/lightdm.conf | grep autologin # Prüfe PAM Konfiguration cat /etc/pam.d/lightdm-autologin # Prüfe Benutzer-Sessions who ``` **Lösung:** ```bash # LightDM neu konfigurieren sudo dpkg-reconfigure lightdm # Service neustarten sudo systemctl restart lightdm ``` ### 3. X-Session startet nicht **Diagnose:** ```bash # Prüfe X-Server Logs cat /var/log/Xorg.0.log # Prüfe Session-Logs cat /var/log/kiosk-session.log # Prüfe Autostart-Logs cat /var/log/kiosk-autostart.log ``` **Lösung:** ```bash # X-Server manuell starten sudo -u kiosk DISPLAY=:0 startx # Openbox neu installieren sudo apt-get install --reinstall openbox ``` ### 4. Kiosk-Anwendung startet nicht **Diagnose:** ```bash # Prüfe Backend-Service systemctl status myp-druckerverwaltung # Prüfe Backend-Erreichbarkeit curl -s http://localhost:5000 # Prüfe Chromium-Prozesse pgrep -f chromium ``` **Lösung:** ```bash # Backend neustarten sudo systemctl restart myp-druckerverwaltung # Kiosk-Anwendung manuell starten sudo -u kiosk DISPLAY=:0 /home/kiosk/start-kiosk.sh ``` ## Wartungskommandos ### System-Status prüfen ```bash sudo myp-maintenance status ``` ### Services neustarten ```bash sudo myp-maintenance restart ``` ### Logs anzeigen ```bash sudo myp-maintenance logs sudo myp-maintenance kiosk-logs ``` ### Kiosk-Modus beenden (für Wartung) ```bash sudo myp-maintenance exit-kiosk ``` ### SSH für Remote-Wartung aktivieren ```bash sudo myp-maintenance enable-ssh ``` ## Log-Dateien ### Wichtige Log-Dateien für Diagnose - `/var/log/kiosk-autostart.log` - Autostart-Versuche - `/var/log/kiosk-session.log` - X-Session Events - `/var/log/kiosk-fallback.log` - RC.Local Fallback - `/var/log/kiosk-watchdog-enhanced.log` - Watchdog-Service - `/var/log/kiosk-cron-watchdog.log` - Cron-Watchdog - `/var/log/system-cron-watchdog.log` - System-Cron-Watchdog - `/var/log/Xorg.0.log` - X-Server Logs - `journalctl -u lightdm` - LightDM Service Logs - `journalctl -u myp-druckerverwaltung` - Backend Service Logs ## Optimierung nach Installation Für bereits installierte Systeme kann die Schnellstart-Optimierung ausgeführt werden: ```bash sudo ./schnellstart_raspberry_pi.sh sudo reboot ``` Dieses Skript verstärkt alle Auto-Login-Mechanismen und optimiert die Boot-Performance. ## Sicherheitshinweise - SSH ist standardmäßig deaktiviert für bessere Sicherheit - Console-Zugang über Strg+Alt+F1 bis F6 möglich - Root-Passwort: `744563017196A` (für Notfall-Wartung) - Kiosk-Benutzer hat keine sudo-Berechtigung - Automatische Updates sind konfiguriert ## Fazit Das System ist mit mehrfachen redundanten Mechanismen ausgestattet, um einen zuverlässigen automatischen Start ohne Benutzeranmeldung zu gewährleisten. Bei Problemen stehen umfangreiche Diagnose- und Wartungstools zur Verfügung.