🎉 Refactor and reorganize backend files for improved structure and maintainability:
This commit is contained in:
parent
62f227dc78
commit
e02d4c416c
@ -72,7 +72,7 @@ except ImportError:
|
||||
|
||||
# Datenbank-Monitor und Backup-Manager importieren falls verfügbar
|
||||
try:
|
||||
from utils.database_monitor import DatabaseMonitor
|
||||
from utils.database_utils import DatabaseMonitor
|
||||
database_monitor = DatabaseMonitor()
|
||||
except ImportError:
|
||||
database_monitor = None
|
||||
|
424
backend/app/docs/AUTOMATISCHER_START_OHNE_ANMELDUNG.md
Normal file
424
backend/app/docs/AUTOMATISCHER_START_OHNE_ANMELDUNG.md
Normal file
@ -0,0 +1,424 @@
|
||||
# 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.
|
@ -1,13 +1,19 @@
|
||||
#!/bin/bash
|
||||
|
||||
# ===================================================================
|
||||
# MYP Druckerverwaltung - Raspberry Pi Schnellstart
|
||||
# Vereinfachte Installation für sofortigen Kiosk-Modus
|
||||
# Ruft das Haupt-Installationsskript auf
|
||||
# MYP Druckerverwaltung - Raspberry Pi Schnellstart Optimierung
|
||||
# Optimiert automatischen Start ohne Benutzeranmeldung
|
||||
# Für bereits installierte Systeme
|
||||
# ===================================================================
|
||||
|
||||
set -e
|
||||
|
||||
# =========================== KONFIGURATION ===========================
|
||||
KIOSK_USER="kiosk"
|
||||
APP_USER="myp"
|
||||
APP_DIR="/opt/myp-druckerverwaltung"
|
||||
INSTALL_LOG="/var/log/myp-schnellstart.log"
|
||||
|
||||
# Farben für Ausgabe
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
@ -16,121 +22,627 @@ BLUE='\033[0;34m'
|
||||
PURPLE='\033[0;35m'
|
||||
NC='\033[0m'
|
||||
|
||||
# Logging-Funktionen
|
||||
log() { echo -e "${GREEN}[SCHNELLSTART] $1${NC}"; }
|
||||
error() { echo -e "${RED}[FEHLER] $1${NC}"; exit 1; }
|
||||
warning() { echo -e "${YELLOW}[WARNUNG] $1${NC}"; }
|
||||
info() { echo -e "${BLUE}[INFO] $1${NC}"; }
|
||||
# ========================== LOGGING-SYSTEM ==========================
|
||||
log() {
|
||||
echo -e "${GREEN}[$(date '+%Y-%m-%d %H:%M:%S')] $1${NC}" | tee -a "$INSTALL_LOG"
|
||||
}
|
||||
|
||||
# ASCII Art Banner
|
||||
cat << 'EOF'
|
||||
╔═══════════════════════════════════════════════════════════╗
|
||||
║ MYP DRUCKERVERWALTUNG ║
|
||||
║ Raspberry Pi Kiosk Schnellstart ║
|
||||
║ ║
|
||||
║ 🖨️ Vollautomatische Kiosk-Installation ║
|
||||
║ 🔒 Maximale Sicherheit ohne Escape-Möglichkeiten ║
|
||||
║ 🚀 Ein Klick - Fertig! ║
|
||||
╚═══════════════════════════════════════════════════════════╝
|
||||
EOF
|
||||
error() {
|
||||
echo -e "${RED}[FEHLER] $1${NC}" | tee -a "$INSTALL_LOG"
|
||||
exit 1
|
||||
}
|
||||
|
||||
echo
|
||||
log "Willkommen zum MYP Druckerverwaltung Kiosk-Schnellstart!"
|
||||
echo
|
||||
warning() {
|
||||
echo -e "${YELLOW}[WARNUNG] $1${NC}" | tee -a "$INSTALL_LOG"
|
||||
}
|
||||
|
||||
# Root-Berechtigung prüfen
|
||||
info() {
|
||||
echo -e "${BLUE}[INFO] $1${NC}" | tee -a "$INSTALL_LOG"
|
||||
}
|
||||
|
||||
progress() {
|
||||
echo -e "${PURPLE}[FORTSCHRITT] $1${NC}" | tee -a "$INSTALL_LOG"
|
||||
}
|
||||
|
||||
# ========================== SYSTEM-CHECKS ==========================
|
||||
check_root() {
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
error "Dieses Skript muss als Root ausgeführt werden: sudo $0"
|
||||
fi
|
||||
}
|
||||
|
||||
# PATH für System-Tools setzen
|
||||
export PATH="/usr/sbin:/sbin:/usr/bin:/bin:/usr/local/bin:$PATH"
|
||||
check_system() {
|
||||
log "=== RASPBERRY PI SCHNELLSTART-OPTIMIERUNG ==="
|
||||
|
||||
# Aktuelles Verzeichnis ermitteln
|
||||
CURRENT_DIR="$(pwd)"
|
||||
log "Arbeitsverzeichnis: $CURRENT_DIR"
|
||||
|
||||
# Prüfe ob install_raspberry_pi.sh existiert
|
||||
if [ ! -f "$CURRENT_DIR/install_raspberry_pi.sh" ]; then
|
||||
error "install_raspberry_pi.sh nicht gefunden! Führe dieses Skript im MYP-Projektverzeichnis aus."
|
||||
# Prüfe ob Kiosk-Benutzer existiert
|
||||
if ! id "$KIOSK_USER" &>/dev/null; then
|
||||
# Kiosk-Benutzer erstellen falls nicht vorhanden
|
||||
progress "Erstelle Kiosk-Benutzer: $KIOSK_USER"
|
||||
if ! useradd -m -s /bin/bash "$KIOSK_USER" 2>/dev/null; then
|
||||
adduser --disabled-password --gecos "" "$KIOSK_USER" || error "Kann Kiosk-Benutzer nicht erstellen"
|
||||
fi
|
||||
|
||||
# Prüfe ob app.py existiert (MYP-Projekt-Validierung)
|
||||
if [ ! -f "$CURRENT_DIR/app.py" ]; then
|
||||
error "app.py nicht gefunden! Bitte im MYP-Projektverzeichnis ausführen."
|
||||
fi
|
||||
|
||||
# Mache Installationsskript ausführbar
|
||||
chmod +x "$CURRENT_DIR/install_raspberry_pi.sh"
|
||||
|
||||
echo
|
||||
info "📋 Was passiert bei der Installation:"
|
||||
info " • System-Grundkonfiguration: Hostname 'raspberrypi', Root-Passwort, Zeitzone"
|
||||
info " • System-Update: Vollständiges System-Upgrade mit neuen Zertifikaten"
|
||||
info " • System-Bereinigung: Entfernt alle Desktop-Umgebungen"
|
||||
info " • Chromium-Installation: Mehrere Fallback-Methoden"
|
||||
info " • Verzeichnisstruktur: Upload-Ordner, Logs, Config mit korrekten Berechtigungen"
|
||||
info " • Python-Installation: Direkt ins System ohne Virtual Environment"
|
||||
info " • Sicherheits-Kiosk: Ohne Escape-Möglichkeiten"
|
||||
info " • Autostart: Vollautomatischer Boot-to-Kiosk"
|
||||
info " • Wartungstools: Remote-Management-System"
|
||||
echo
|
||||
info "🛡️ Sicherheits-Features:"
|
||||
info " • SSH automatisch deaktiviert"
|
||||
info " • Root-Zugang: 744563017196A (für Wartung)"
|
||||
info " • Firewall mit Fail2Ban"
|
||||
info " • Kein Desktop-Zugang"
|
||||
info " • Passwort-geschützter Notfall-Modus"
|
||||
echo
|
||||
|
||||
# Bestätigung einholen
|
||||
warning "⚠️ ACHTUNG: Diese Installation erstellt einen VOLLAUTOMATISCHEN KIOSK!"
|
||||
warning " • Das System bootet direkt in Kiosk-Modus (kein Desktop)"
|
||||
warning " • SSH wird für Sicherheit deaktiviert"
|
||||
warning " • Alle Desktop-Umgebungen werden entfernt"
|
||||
warning " • Nur über Console oder myp-emergency-reset zugänglich"
|
||||
echo
|
||||
read -p "🚀 Vollautomatische Kiosk-Installation starten? (j/N): " confirm
|
||||
if [[ ! "$confirm" =~ ^[jJ]$ ]]; then
|
||||
error "Installation abgebrochen"
|
||||
fi
|
||||
|
||||
echo
|
||||
log "=== STARTE HAUPTINSTALLATION ==="
|
||||
info "Dies kann 15-30 Minuten dauern..."
|
||||
info "Überwachung möglich mit: tail -f /var/log/myp-kiosk-install.log"
|
||||
echo
|
||||
|
||||
# Führe Hauptinstallation aus
|
||||
if "$CURRENT_DIR/install_raspberry_pi.sh"; then
|
||||
echo
|
||||
log "🎉 === INSTALLATION ERFOLGREICH ABGESCHLOSSEN! ==="
|
||||
echo
|
||||
info "🔧 WICHTIGE WARTUNGSKOMMANDOS für nach dem Neustart:"
|
||||
info " • Status prüfen: myp-maintenance status"
|
||||
info " • Services steuern: myp-maintenance {start|stop|restart}"
|
||||
info " • Kiosk beenden: myp-maintenance exit-kiosk"
|
||||
info " • SSH aktivieren: myp-maintenance enable-ssh"
|
||||
info " • Backup erstellen: myp-backup"
|
||||
info " • Notfall-Reset: myp-emergency-reset"
|
||||
echo
|
||||
info "📱 ZUGRIFF NACH INSTALLATION:"
|
||||
info " • Kiosk-Anwendung: Automatisch nach Neustart"
|
||||
info " • Console-Zugang: Strg+Alt+F1 bis F6"
|
||||
info " • Remote-Wartung: myp-maintenance enable-ssh"
|
||||
echo
|
||||
warning "⚠️ Das System startet nach dem Neustart automatisch im Kiosk-Modus!"
|
||||
warning " Für Wartungszugang: Console verwenden oder SSH aktivieren"
|
||||
echo
|
||||
log "Schnellstart erfolgreich! 🚀"
|
||||
# Kiosk-Benutzer zu Audio/Video-Gruppen hinzufügen
|
||||
usermod -aG audio,video,input "$KIOSK_USER" 2>/dev/null || true
|
||||
info "Kiosk-Benutzer erstellt"
|
||||
else
|
||||
echo
|
||||
error "❌ Fehler bei der Hauptinstallation!"
|
||||
echo
|
||||
info "🔧 FEHLERBEHEBUNG:"
|
||||
info " • Logfile prüfen: /var/log/myp-kiosk-install.log"
|
||||
info " • Manuelle Installation: sudo ./install_raspberry_pi.sh"
|
||||
info " • Bei Problemen: Überprüfe Internetverbindung und Berechtigungen"
|
||||
echo
|
||||
exit 1
|
||||
info "Kiosk-Benutzer existiert bereits"
|
||||
fi
|
||||
|
||||
# Prüfe ob App-Verzeichnis existiert
|
||||
if [ ! -d "$APP_DIR" ]; then
|
||||
# App-Verzeichnis erstellen falls nicht vorhanden
|
||||
progress "Erstelle App-Verzeichnis: $APP_DIR"
|
||||
mkdir -p "$APP_DIR"
|
||||
chown -R "$APP_USER:$APP_USER" "$APP_DIR" 2>/dev/null || true
|
||||
info "App-Verzeichnis erstellt"
|
||||
else
|
||||
info "App-Verzeichnis existiert bereits"
|
||||
fi
|
||||
|
||||
# Prüfe ob App-Benutzer existiert
|
||||
if ! id "$APP_USER" &>/dev/null; then
|
||||
# App-Benutzer erstellen falls nicht vorhanden
|
||||
progress "Erstelle App-Benutzer: $APP_USER"
|
||||
if ! useradd -m -s /bin/bash "$APP_USER" 2>/dev/null; then
|
||||
adduser --disabled-password --gecos "" "$APP_USER" || error "Kann App-Benutzer nicht erstellen"
|
||||
fi
|
||||
usermod -aG sudo "$APP_USER" 2>/dev/null || true
|
||||
info "App-Benutzer erstellt"
|
||||
else
|
||||
info "App-Benutzer existiert bereits"
|
||||
fi
|
||||
|
||||
info "System-Checks erfolgreich"
|
||||
}
|
||||
|
||||
# ========================== ESSENZIELLE PAKETE INSTALLIEREN ==========================
|
||||
install_essential_packages() {
|
||||
log "=== ESSENZIELLE PAKETE INSTALLIEREN ==="
|
||||
|
||||
progress "Aktualisiere Paketlisten..."
|
||||
apt-get update -y || warning "APT Update teilweise fehlgeschlagen"
|
||||
|
||||
progress "Installiere essenzielle Pakete..."
|
||||
apt-get install -y \
|
||||
curl wget git unzip \
|
||||
python3 python3-pip python3-dev \
|
||||
build-essential libssl-dev libffi-dev \
|
||||
sqlite3 nginx supervisor \
|
||||
xorg xinit openbox \
|
||||
xserver-xorg-video-all \
|
||||
x11-xserver-utils xdotool unclutter \
|
||||
lightdm lightdm-gtk-greeter \
|
||||
pulseaudio alsa-utils \
|
||||
fonts-liberation fonts-dejavu \
|
||||
ca-certificates apt-transport-https \
|
||||
|| warning "Paket-Installation teilweise fehlgeschlagen"
|
||||
|
||||
log "✅ Essenzielle Pakete installiert"
|
||||
}
|
||||
|
||||
# ========================== BOOT-OPTIMIERUNG ==========================
|
||||
optimize_boot() {
|
||||
log "=== BOOT-OPTIMIERUNG ==="
|
||||
|
||||
progress "Optimiere Raspberry Pi Boot-Parameter..."
|
||||
|
||||
# Raspberry Pi Boot-Konfiguration
|
||||
if [ -f "/boot/config.txt" ]; then
|
||||
# GPU Memory für bessere Performance
|
||||
if ! grep -q "gpu_mem=" /boot/config.txt; then
|
||||
echo "gpu_mem=128" >> /boot/config.txt
|
||||
info "GPU Memory auf 128MB gesetzt"
|
||||
fi
|
||||
|
||||
# Disable Boot-Splash für schnelleren Start
|
||||
if ! grep -q "disable_splash=" /boot/config.txt; then
|
||||
echo "disable_splash=1" >> /boot/config.txt
|
||||
info "Boot-Splash deaktiviert"
|
||||
fi
|
||||
|
||||
# Boot-Delay reduzieren
|
||||
if ! grep -q "boot_delay=" /boot/config.txt; then
|
||||
echo "boot_delay=0" >> /boot/config.txt
|
||||
info "Boot-Delay auf 0 gesetzt"
|
||||
fi
|
||||
|
||||
# HDMI-Hotplug für bessere Display-Erkennung
|
||||
if ! grep -q "hdmi_force_hotplug=" /boot/config.txt; then
|
||||
echo "hdmi_force_hotplug=1" >> /boot/config.txt
|
||||
info "HDMI-Hotplug aktiviert"
|
||||
fi
|
||||
|
||||
# Disable Rainbow-Splash
|
||||
if ! grep -q "disable_overscan=" /boot/config.txt; then
|
||||
echo "disable_overscan=1" >> /boot/config.txt
|
||||
info "Overscan deaktiviert"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Kernel-Parameter optimieren
|
||||
if [ -f "/boot/cmdline.txt" ]; then
|
||||
# Backup erstellen
|
||||
cp /boot/cmdline.txt /boot/cmdline.txt.backup
|
||||
|
||||
# Entferne Boot-Splash und optimiere
|
||||
sed -i 's/splash//g' /boot/cmdline.txt
|
||||
|
||||
# Füge Performance-Parameter hinzu
|
||||
if ! grep -q "quiet" /boot/cmdline.txt; then
|
||||
sed -i 's/$/ quiet/' /boot/cmdline.txt
|
||||
fi
|
||||
if ! grep -q "loglevel=3" /boot/cmdline.txt; then
|
||||
sed -i 's/$/ loglevel=3/' /boot/cmdline.txt
|
||||
fi
|
||||
if ! grep -q "logo.nologo" /boot/cmdline.txt; then
|
||||
sed -i 's/$/ logo.nologo/' /boot/cmdline.txt
|
||||
fi
|
||||
if ! grep -q "vt.global_cursor_default=0" /boot/cmdline.txt; then
|
||||
sed -i 's/$/ vt.global_cursor_default=0/' /boot/cmdline.txt
|
||||
fi
|
||||
|
||||
info "Kernel-Parameter optimiert"
|
||||
fi
|
||||
|
||||
log "✅ Boot-Optimierung abgeschlossen"
|
||||
}
|
||||
|
||||
# ========================== AUTOLOGIN VERSTÄRKEN ==========================
|
||||
strengthen_autologin() {
|
||||
log "=== AUTOLOGIN-VERSTÄRKUNG ==="
|
||||
|
||||
progress "Verstärke automatischen Login..."
|
||||
|
||||
# Sicherstellen dass graphical.target Standard ist
|
||||
systemctl set-default graphical.target
|
||||
info "Graphical.target als Standard gesetzt"
|
||||
|
||||
# Getty Auto-Login verstärken
|
||||
mkdir -p "/etc/systemd/system/getty@tty1.service.d"
|
||||
cat > "/etc/systemd/system/getty@tty1.service.d/autologin.conf" << EOF
|
||||
[Service]
|
||||
ExecStart=
|
||||
ExecStart=-/sbin/agetty --autologin $KIOSK_USER --noclear %I \$TERM
|
||||
Type=simple
|
||||
Restart=always
|
||||
RestartSec=3
|
||||
EOF
|
||||
|
||||
# Getty Service aktivieren
|
||||
systemctl enable getty@tty1.service
|
||||
info "Getty Auto-Login konfiguriert"
|
||||
|
||||
# LightDM Auto-Login verstärken
|
||||
if [ -f "/etc/lightdm/lightdm.conf" ]; then
|
||||
# Backup erstellen
|
||||
cp /etc/lightdm/lightdm.conf /etc/lightdm/lightdm.conf.backup
|
||||
|
||||
# Neue Konfiguration
|
||||
cat > "/etc/lightdm/lightdm.conf" << EOF
|
||||
[Seat:*]
|
||||
# Automatischer Login für Kiosk-Benutzer
|
||||
autologin-user=$KIOSK_USER
|
||||
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_USER
|
||||
autologin-user-timeout=0
|
||||
autologin-session=openbox
|
||||
greeter-hide-users=true
|
||||
greeter-show-manual-login=false
|
||||
allow-user-switching=false
|
||||
EOF
|
||||
info "LightDM Auto-Login verstärkt"
|
||||
fi
|
||||
|
||||
# LightDM Service-Override
|
||||
mkdir -p "/etc/systemd/system/lightdm.service.d"
|
||||
cat > "/etc/systemd/system/lightdm.service.d/autologin-override.conf" << EOF
|
||||
[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'
|
||||
EOF
|
||||
|
||||
systemctl enable lightdm.service
|
||||
info "LightDM Service-Override konfiguriert"
|
||||
|
||||
log "✅ Autologin-Verstärkung abgeschlossen"
|
||||
}
|
||||
|
||||
# ========================== KIOSK-BENUTZER OPTIMIERUNG ==========================
|
||||
optimize_kiosk_user() {
|
||||
log "=== KIOSK-BENUTZER OPTIMIERUNG ==="
|
||||
|
||||
KIOSK_HOME="/home/$KIOSK_USER"
|
||||
|
||||
progress "Optimiere Kiosk-Benutzer Autostart..."
|
||||
|
||||
# Verstärkte .bashrc
|
||||
cat >> "$KIOSK_HOME/.bashrc" << 'EOF'
|
||||
|
||||
# ===== 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
|
||||
EOF
|
||||
|
||||
# Verstärkte .profile
|
||||
cat >> "$KIOSK_HOME/.profile" << 'EOF'
|
||||
|
||||
# ===== 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
|
||||
EOF
|
||||
|
||||
# Optimierte .xinitrc
|
||||
cat > "$KIOSK_HOME/.xinitrc" << EOF
|
||||
#!/bin/bash
|
||||
# Optimierte Xinit-Konfiguration für Kiosk-Modus
|
||||
|
||||
# Logge X-Start
|
||||
echo "\$(date): X-Session gestartet via xinitrc" >> /var/log/kiosk-autostart.log
|
||||
|
||||
# Export Display
|
||||
export DISPLAY=:0
|
||||
|
||||
# Session-Setup
|
||||
xset s off
|
||||
xset s noblank
|
||||
xset s noexpose
|
||||
xset -dpms
|
||||
|
||||
# Verstecke Mauszeiger
|
||||
unclutter -idle 0.5 -root &
|
||||
|
||||
# Warte kurz auf System-Stabilisierung
|
||||
sleep 3
|
||||
|
||||
# Starte Openbox
|
||||
exec openbox-session
|
||||
EOF
|
||||
|
||||
chmod +x "$KIOSK_HOME/.xinitrc"
|
||||
|
||||
# Desktop Autostart verstärken
|
||||
mkdir -p "$KIOSK_HOME/.config/autostart"
|
||||
cat > "$KIOSK_HOME/.config/autostart/kiosk-app.desktop" << EOF
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=MYP Kiosk Application
|
||||
Comment=Startet die MYP Kiosk-Anwendung automatisch
|
||||
Exec=$KIOSK_HOME/start-kiosk.sh
|
||||
Hidden=false
|
||||
NoDisplay=false
|
||||
X-GNOME-Autostart-enabled=true
|
||||
StartupNotify=false
|
||||
Terminal=false
|
||||
EOF
|
||||
|
||||
# Berechtigungen setzen
|
||||
chown -R "$KIOSK_USER:$KIOSK_USER" "$KIOSK_HOME/.config"
|
||||
chown "$KIOSK_USER:$KIOSK_USER" "$KIOSK_HOME/.bashrc"
|
||||
chown "$KIOSK_USER:$KIOSK_USER" "$KIOSK_HOME/.profile"
|
||||
chown "$KIOSK_USER:$KIOSK_USER" "$KIOSK_HOME/.xinitrc"
|
||||
|
||||
info "Kiosk-Benutzer Autostart optimiert"
|
||||
|
||||
log "✅ Kiosk-Benutzer Optimierung abgeschlossen"
|
||||
}
|
||||
|
||||
# ========================== WATCHDOG VERSTÄRKEN ==========================
|
||||
strengthen_watchdog() {
|
||||
log "=== WATCHDOG-VERSTÄRKUNG ==="
|
||||
|
||||
progress "Verstärke Kiosk-Überwachung..."
|
||||
|
||||
# Verstärkter Kiosk-Watchdog Service
|
||||
cat > "/etc/systemd/system/kiosk-watchdog-enhanced.service" << EOF
|
||||
[Unit]
|
||||
Description=Enhanced Kiosk Watchdog Service
|
||||
After=multi-user.target lightdm.service
|
||||
Wants=lightdm.service myp-druckerverwaltung.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
ExecStart=/bin/bash -c '
|
||||
while true; do
|
||||
# Prüfe Backend-Service
|
||||
if ! systemctl is-active --quiet myp-druckerverwaltung; then
|
||||
echo "\$(date): Backend-Service nicht aktiv - starte neu" >> /var/log/kiosk-watchdog-enhanced.log
|
||||
systemctl start myp-druckerverwaltung
|
||||
sleep 5
|
||||
fi
|
||||
|
||||
# Prüfe Backend-Erreichbarkeit
|
||||
if ! curl -s http://localhost:5000 >/dev/null 2>&1; then
|
||||
echo "\$(date): Backend nicht erreichbar - starte Service neu" >> /var/log/kiosk-watchdog-enhanced.log
|
||||
systemctl restart myp-druckerverwaltung
|
||||
sleep 10
|
||||
fi
|
||||
|
||||
# Prüfe LightDM
|
||||
if ! systemctl is-active --quiet lightdm; then
|
||||
echo "\$(date): LightDM nicht aktiv - starte neu" >> /var/log/kiosk-watchdog-enhanced.log
|
||||
systemctl start lightdm
|
||||
sleep 5
|
||||
fi
|
||||
|
||||
# Prüfe Kiosk-Benutzer Session
|
||||
if ! pgrep -u $KIOSK_USER > /dev/null; then
|
||||
echo "\$(date): Kiosk-Benutzer nicht angemeldet - starte LightDM neu" >> /var/log/kiosk-watchdog-enhanced.log
|
||||
systemctl restart lightdm
|
||||
sleep 10
|
||||
fi
|
||||
|
||||
# Prüfe Chromium Kiosk-Prozess
|
||||
if ! pgrep -u $KIOSK_USER -f "chromium.*kiosk" > /dev/null; then
|
||||
echo "\$(date): Chromium-Kiosk nicht gefunden - starte Kiosk-Session neu" >> /var/log/kiosk-watchdog-enhanced.log
|
||||
# Versuche Kiosk-Neustart als Kiosk-Benutzer
|
||||
sudo -u $KIOSK_USER DISPLAY=:0 /home/$KIOSK_USER/start-kiosk.sh &
|
||||
sleep 5
|
||||
fi
|
||||
|
||||
# Prüfe X-Server
|
||||
if ! pgrep -f "X.*:0" > /dev/null; then
|
||||
echo "\$(date): X-Server nicht gefunden - starte LightDM neu" >> /var/log/kiosk-watchdog-enhanced.log
|
||||
systemctl restart lightdm
|
||||
sleep 10
|
||||
fi
|
||||
|
||||
sleep 20
|
||||
done
|
||||
'
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
# Alten Watchdog deaktivieren und neuen aktivieren
|
||||
systemctl disable kiosk-watchdog.service 2>/dev/null || true
|
||||
systemctl enable kiosk-watchdog-enhanced.service
|
||||
|
||||
# Cron-Watchdog verstärken
|
||||
cat > "/etc/cron.d/kiosk-watchdog-enhanced" << EOF
|
||||
# Verstärkter Kiosk-Watchdog: Prüft alle 2 Minuten
|
||||
*/2 * * * * $KIOSK_USER /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'
|
||||
EOF
|
||||
|
||||
# RC.Local verstärken
|
||||
cat > "/etc/rc.local" << EOF
|
||||
#!/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_USER > /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
|
||||
EOF
|
||||
|
||||
chmod +x "/etc/rc.local"
|
||||
|
||||
info "Watchdog-Services verstärkt"
|
||||
|
||||
log "✅ Watchdog-Verstärkung abgeschlossen"
|
||||
}
|
||||
|
||||
# ========================== SYSTEM-SERVICES OPTIMIEREN ==========================
|
||||
optimize_services() {
|
||||
log "=== SERVICE-OPTIMIERUNG ==="
|
||||
|
||||
progress "Optimiere System-Services für schnelleren Start..."
|
||||
|
||||
# Deaktiviere unnötige Services
|
||||
DISABLE_SERVICES=(
|
||||
"bluetooth"
|
||||
"hciuart"
|
||||
"triggerhappy"
|
||||
"avahi-daemon"
|
||||
"cups"
|
||||
"cups-browsed"
|
||||
"ModemManager"
|
||||
"wpa_supplicant"
|
||||
)
|
||||
|
||||
for service in "${DISABLE_SERVICES[@]}"; do
|
||||
if systemctl is-enabled --quiet "$service" 2>/dev/null; then
|
||||
systemctl disable "$service" 2>/dev/null || true
|
||||
info "Service '$service' deaktiviert"
|
||||
fi
|
||||
done
|
||||
|
||||
# Optimiere wichtige Services
|
||||
systemctl enable myp-druckerverwaltung
|
||||
systemctl enable lightdm
|
||||
systemctl enable kiosk-watchdog-enhanced
|
||||
|
||||
# Systemd-Daemon neu laden
|
||||
systemctl daemon-reload
|
||||
|
||||
info "Services optimiert"
|
||||
|
||||
log "✅ Service-Optimierung abgeschlossen"
|
||||
}
|
||||
|
||||
# ========================== SYSTEM-PARAMETER OPTIMIEREN ==========================
|
||||
optimize_system_parameters() {
|
||||
log "=== SYSTEM-PARAMETER OPTIMIERUNG ==="
|
||||
|
||||
progress "Optimiere System-Parameter..."
|
||||
|
||||
# Systemd-Logind für Kiosk optimieren
|
||||
mkdir -p "/etc/systemd/logind.conf.d"
|
||||
cat > "/etc/systemd/logind.conf.d/kiosk.conf" << EOF
|
||||
[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
|
||||
EOF
|
||||
|
||||
# Kernel-Parameter für bessere Performance
|
||||
cat > "/etc/sysctl.d/99-kiosk-performance.conf" << EOF
|
||||
# Kiosk-Performance Optimierungen
|
||||
vm.swappiness=10
|
||||
vm.dirty_ratio=15
|
||||
vm.dirty_background_ratio=5
|
||||
kernel.sched_autogroup_enabled=0
|
||||
EOF
|
||||
|
||||
# Tmpfs für bessere Performance
|
||||
if ! grep -q "tmpfs.*tmp" /etc/fstab; then
|
||||
echo "tmpfs /tmp tmpfs defaults,noatime,nosuid,size=100m 0 0" >> /etc/fstab
|
||||
info "Tmpfs für /tmp konfiguriert"
|
||||
fi
|
||||
|
||||
info "System-Parameter optimiert"
|
||||
|
||||
log "✅ System-Parameter Optimierung abgeschlossen"
|
||||
}
|
||||
|
||||
# ========================== HAUPTFUNKTION ==========================
|
||||
main() {
|
||||
log "=== RASPBERRY PI SCHNELLSTART-OPTIMIERUNG GESTARTET ==="
|
||||
|
||||
check_root
|
||||
check_system
|
||||
install_essential_packages
|
||||
optimize_boot
|
||||
strengthen_autologin
|
||||
optimize_kiosk_user
|
||||
strengthen_watchdog
|
||||
optimize_services
|
||||
optimize_system_parameters
|
||||
|
||||
log "=== OPTIMIERUNG ABGESCHLOSSEN ==="
|
||||
log ""
|
||||
log "🎉 RASPBERRY PI SCHNELLSTART-OPTIMIERUNG ERFOLGREICH!"
|
||||
log ""
|
||||
log "📋 ZUSAMMENFASSUNG:"
|
||||
log " ✅ Boot-Parameter optimiert"
|
||||
log " ✅ Autologin verstärkt"
|
||||
log " ✅ Kiosk-Benutzer optimiert"
|
||||
log " ✅ Watchdog-Services verstärkt"
|
||||
log " ✅ System-Services optimiert"
|
||||
log " ✅ System-Parameter optimiert"
|
||||
log ""
|
||||
log "🔄 NEUSTART ERFORDERLICH:"
|
||||
log " sudo reboot"
|
||||
log ""
|
||||
log "📊 NACH DEM NEUSTART:"
|
||||
log " - System startet automatisch ohne Anmeldung"
|
||||
log " - Kiosk-Modus wird automatisch gestartet"
|
||||
log " - Web-UI ist sofort verfügbar"
|
||||
log " - Mehrfache Überwachung aktiv"
|
||||
log ""
|
||||
log "🔧 WARTUNG:"
|
||||
log " sudo myp-maintenance status # System-Status prüfen"
|
||||
log " sudo myp-maintenance logs # Logs anzeigen"
|
||||
log " sudo myp-maintenance restart # Services neustarten"
|
||||
log ""
|
||||
|
||||
warning "WICHTIG: Führen Sie jetzt 'sudo reboot' aus, um die Optimierungen zu aktivieren!"
|
||||
}
|
||||
|
||||
# Skript ausführen
|
||||
main "$@"
|
Loading…
x
Reference in New Issue
Block a user