Projektarbeit-MYP/backend/docs/AUTOMATISCHER_START_OHNE_ANMELDUNG.md
2025-05-31 22:40:29 +02:00

10 KiB

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

[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

[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

[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

# ===== 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

# ===== 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

[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

# 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

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

# 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

systemctl set-default graphical.target

Logind-Konfiguration: /etc/systemd/logind.conf.d/kiosk.conf

[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:

# 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:

# 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:

# 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:

# LightDM neu konfigurieren
sudo dpkg-reconfigure lightdm

# Service neustarten
sudo systemctl restart lightdm

3. X-Session startet nicht

Diagnose:

# 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:

# 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:

# 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:

# 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

sudo myp-maintenance status

Services neustarten

sudo myp-maintenance restart

Logs anzeigen

sudo myp-maintenance logs
sudo myp-maintenance kiosk-logs

Kiosk-Modus beenden (für Wartung)

sudo myp-maintenance exit-kiosk

SSH für Remote-Wartung aktivieren

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:

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.