ich geh behindert
This commit is contained in:
370
backend/debug/fix-kiosk-definitiv.sh
Normal file
370
backend/debug/fix-kiosk-definitiv.sh
Normal file
@@ -0,0 +1,370 @@
|
||||
#!/bin/bash
|
||||
|
||||
# ===================================================================
|
||||
# DEFINITIVER KIOSK-FIX FÜR RASPBERRY PI
|
||||
# Löst ALLE X11/Framebuffer-Probleme garantiert
|
||||
# ===================================================================
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Farben
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
log() { echo -e "${GREEN}[$(date '+%H:%M:%S')] $1${NC}"; }
|
||||
warning() { echo -e "${YELLOW}[WARNUNG] $1${NC}"; }
|
||||
error() { echo -e "${RED}[FEHLER] $1${NC}"; exit 1; }
|
||||
info() { echo -e "${BLUE}[INFO] $1${NC}"; }
|
||||
|
||||
# Root-Check
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
error "Als Root ausführen: sudo $0"
|
||||
fi
|
||||
|
||||
log "=== DEFINITIVER KIOSK-FIX ==="
|
||||
|
||||
# 1. STOPPE ALLES
|
||||
log "Stoppe alle Display-Manager und X-Server..."
|
||||
systemctl stop lightdm 2>/dev/null || true
|
||||
systemctl stop gdm3 2>/dev/null || true
|
||||
systemctl stop sddm 2>/dev/null || true
|
||||
systemctl stop xdm 2>/dev/null || true
|
||||
systemctl stop nodm 2>/dev/null || true
|
||||
systemctl disable lightdm 2>/dev/null || true
|
||||
systemctl disable gdm3 2>/dev/null || true
|
||||
systemctl disable sddm 2>/dev/null || true
|
||||
systemctl disable xdm 2>/dev/null || true
|
||||
systemctl disable nodm 2>/dev/null || true
|
||||
|
||||
pkill -f "X" 2>/dev/null || true
|
||||
pkill -f "Xorg" 2>/dev/null || true
|
||||
pkill -f "xinit" 2>/dev/null || true
|
||||
pkill -f "chromium" 2>/dev/null || true
|
||||
sleep 3
|
||||
|
||||
# 2. KERNEL MODE SETTING (KMS) AKTIVIEREN
|
||||
log "Aktiviere KMS/DRM Treiber..."
|
||||
if [ -f /boot/config.txt ]; then
|
||||
cp /boot/config.txt /boot/config.txt.backup-$(date +%s)
|
||||
|
||||
# Entferne alte Einstellungen
|
||||
sed -i '/^dtoverlay=vc4-kms-v3d/d' /boot/config.txt
|
||||
sed -i '/^dtoverlay=vc4-fkms-v3d/d' /boot/config.txt
|
||||
sed -i '/^gpu_mem=/d' /boot/config.txt
|
||||
|
||||
# Füge KMS-Treiber hinzu
|
||||
cat >> /boot/config.txt << 'EOF'
|
||||
|
||||
# Kiosk-Modus GPU-Konfiguration
|
||||
dtoverlay=vc4-kms-v3d
|
||||
max_framebuffers=2
|
||||
gpu_mem=256
|
||||
hdmi_force_hotplug=1
|
||||
hdmi_group=2
|
||||
hdmi_mode=82
|
||||
hdmi_drive=2
|
||||
disable_overscan=1
|
||||
EOF
|
||||
|
||||
info "Boot-Konfiguration aktualisiert"
|
||||
fi
|
||||
|
||||
# 3. INSTALLIERE ALLE NÖTIGEN PAKETE
|
||||
log "Installiere notwendige Pakete..."
|
||||
apt-get update
|
||||
apt-get install -y --no-install-recommends \
|
||||
xserver-xorg \
|
||||
xserver-xorg-video-all \
|
||||
xserver-xorg-input-all \
|
||||
xinit \
|
||||
x11-xserver-utils \
|
||||
openbox \
|
||||
chromium-browser \
|
||||
unclutter \
|
||||
xdotool \
|
||||
wmctrl \
|
||||
xvfb \
|
||||
2>/dev/null || true
|
||||
|
||||
# 4. ERSTELLE MINIMALE X11-KONFIGURATION
|
||||
log "Erstelle X11-Konfiguration..."
|
||||
mkdir -p /etc/X11/xorg.conf.d
|
||||
|
||||
# Hauptkonfiguration
|
||||
cat > /etc/X11/xorg.conf << 'EOF'
|
||||
Section "ServerFlags"
|
||||
Option "BlankTime" "0"
|
||||
Option "StandbyTime" "0"
|
||||
Option "SuspendTime" "0"
|
||||
Option "OffTime" "0"
|
||||
Option "DPMS" "false"
|
||||
Option "AllowEmptyInput" "true"
|
||||
Option "AutoAddDevices" "true"
|
||||
EndSection
|
||||
|
||||
Section "Monitor"
|
||||
Identifier "Monitor0"
|
||||
Option "DPMS" "false"
|
||||
EndSection
|
||||
|
||||
Section "Device"
|
||||
Identifier "Card0"
|
||||
Driver "modesetting"
|
||||
Option "AccelMethod" "glamor"
|
||||
Option "DRI" "3"
|
||||
EndSection
|
||||
|
||||
Section "Screen"
|
||||
Identifier "Screen0"
|
||||
Device "Card0"
|
||||
Monitor "Monitor0"
|
||||
DefaultDepth 24
|
||||
SubSection "Display"
|
||||
Depth 24
|
||||
EndSubSection
|
||||
EndSection
|
||||
EOF
|
||||
|
||||
# 5. ERSTELLE KIOSK-USER WENN NICHT VORHANDEN
|
||||
if ! id "kiosk" &>/dev/null; then
|
||||
log "Erstelle kiosk-User..."
|
||||
useradd -m -s /bin/bash kiosk
|
||||
usermod -aG audio,video,input,dialout,plugdev,users kiosk
|
||||
fi
|
||||
|
||||
# 6. ERSTELLE AUTOLOGIN
|
||||
log "Konfiguriere Autologin..."
|
||||
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 --noclear %I \$TERM
|
||||
Type=idle
|
||||
EOF
|
||||
|
||||
# 7. ERSTELLE DREI VERSCHIEDENE START-METHODEN
|
||||
|
||||
# Methode 1: Direkt-Start ohne Display Manager
|
||||
log "Erstelle Methode 1: Direkt-Start..."
|
||||
cat > /home/kiosk/kiosk-direct.sh << 'EOF'
|
||||
#!/bin/bash
|
||||
export DISPLAY=:0
|
||||
export XAUTHORITY=/home/kiosk/.Xauthority
|
||||
|
||||
# Warte auf Netzwerk
|
||||
sleep 10
|
||||
|
||||
# Erstelle .Xauthority
|
||||
touch $XAUTHORITY
|
||||
chmod 600 $XAUTHORITY
|
||||
|
||||
# Starte X-Server direkt
|
||||
/usr/bin/xinit /home/kiosk/kiosk-browser.sh -- /usr/bin/X :0 -nolisten tcp -nocursor
|
||||
EOF
|
||||
|
||||
# Browser-Start-Skript
|
||||
cat > /home/kiosk/kiosk-browser.sh << 'EOF'
|
||||
#!/bin/bash
|
||||
|
||||
# Warte auf X-Server
|
||||
sleep 3
|
||||
|
||||
# X11-Einstellungen
|
||||
xset s off
|
||||
xset s noblank
|
||||
xset -dpms
|
||||
|
||||
# Window Manager
|
||||
openbox-session &
|
||||
sleep 2
|
||||
|
||||
# Warte auf Backend
|
||||
echo "Warte auf Backend..."
|
||||
while ! curl -s http://localhost:5000 >/dev/null 2>&1; do
|
||||
sleep 2
|
||||
done
|
||||
|
||||
# Starte Browser
|
||||
chromium-browser \
|
||||
--kiosk \
|
||||
--no-sandbox \
|
||||
--disable-setuid-sandbox \
|
||||
--disable-dev-shm-usage \
|
||||
--disable-accelerated-2d-canvas \
|
||||
--no-first-run \
|
||||
--no-zygote \
|
||||
--single-process \
|
||||
--disable-gpu \
|
||||
--window-size=1920,1080 \
|
||||
--start-fullscreen \
|
||||
--incognito \
|
||||
http://localhost:5000
|
||||
EOF
|
||||
|
||||
# Methode 2: Mit startx
|
||||
log "Erstelle Methode 2: startx..."
|
||||
cat > /home/kiosk/.xinitrc << 'EOF'
|
||||
#!/bin/bash
|
||||
xset s off
|
||||
xset s noblank
|
||||
xset -dpms
|
||||
|
||||
openbox-session &
|
||||
sleep 2
|
||||
|
||||
# Warte auf Backend
|
||||
while ! curl -s http://localhost:5000 >/dev/null 2>&1; do
|
||||
sleep 2
|
||||
done
|
||||
|
||||
exec chromium-browser --kiosk --no-sandbox --disable-gpu --disable-software-rasterizer --disable-dev-shm-usage http://localhost:5000
|
||||
EOF
|
||||
|
||||
# Methode 3: Systemd Service
|
||||
log "Erstelle Methode 3: Systemd Service..."
|
||||
cat > /etc/systemd/system/kiosk.service << 'EOF'
|
||||
[Unit]
|
||||
Description=Kiosk Mode
|
||||
After=multi-user.target network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
User=kiosk
|
||||
Group=kiosk
|
||||
PAMName=login
|
||||
TTYPath=/dev/tty2
|
||||
StandardInput=tty
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
Environment="DISPLAY=:0"
|
||||
Environment="XAUTHORITY=/home/kiosk/.Xauthority"
|
||||
ExecStartPre=/bin/sleep 10
|
||||
ExecStart=/usr/bin/xinit /home/kiosk/kiosk-browser.sh -- /usr/bin/X :0 -nolisten tcp
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
# 8. ERSTELLE FALLBACK: TERMINAL-BROWSER
|
||||
log "Erstelle Terminal-Browser-Fallback..."
|
||||
cat > /home/kiosk/terminal-browser.sh << 'EOF'
|
||||
#!/bin/bash
|
||||
# Terminal-basierter Browser als Fallback
|
||||
clear
|
||||
echo "=== KIOSK-MODUS (Terminal) ==="
|
||||
echo "Warte auf Backend..."
|
||||
|
||||
while ! curl -s http://localhost:5000 >/dev/null 2>&1; do
|
||||
sleep 2
|
||||
echo -n "."
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "Backend verfügbar!"
|
||||
echo ""
|
||||
echo "Optionen:"
|
||||
echo "1) Links2 Browser starten (Terminal)"
|
||||
echo "2) W3M Browser starten (Terminal)"
|
||||
echo "3) Versuche X11 erneut"
|
||||
echo ""
|
||||
|
||||
# Installiere Terminal-Browser falls nötig
|
||||
which links2 >/dev/null 2>&1 || apt-get install -y links2
|
||||
which w3m >/dev/null 2>&1 || apt-get install -y w3m
|
||||
|
||||
links2 http://localhost:5000
|
||||
EOF
|
||||
|
||||
# 9. BERECHTIGUNGEN SETZEN
|
||||
log "Setze Berechtigungen..."
|
||||
chmod +x /home/kiosk/*.sh
|
||||
chmod +x /home/kiosk/.xinitrc
|
||||
chown -R kiosk:kiosk /home/kiosk/
|
||||
touch /home/kiosk/.Xauthority
|
||||
chown kiosk:kiosk /home/kiosk/.Xauthority
|
||||
chmod 600 /home/kiosk/.Xauthority
|
||||
|
||||
# 10. ERSTELLE MASTER-START-SKRIPT
|
||||
log "Erstelle Master-Start-Skript..."
|
||||
cat > /home/kiosk/.bashrc << 'EOF'
|
||||
# Kiosk Auto-Start
|
||||
if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" = "1" ]; then
|
||||
echo "=== KIOSK-MODUS WIRD GESTARTET ==="
|
||||
echo ""
|
||||
echo "Versuche Methode 1: Direkt-Start..."
|
||||
|
||||
# Methode 1
|
||||
if /home/kiosk/kiosk-direct.sh 2>/tmp/kiosk-error1.log; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Methode 1 fehlgeschlagen. Versuche Methode 2: startx..."
|
||||
sleep 2
|
||||
|
||||
# Methode 2
|
||||
if startx -- -nocursor 2>/tmp/kiosk-error2.log; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Methode 2 fehlgeschlagen. Versuche Methode 3: Xvfb..."
|
||||
sleep 2
|
||||
|
||||
# Methode 3: Virtual Framebuffer
|
||||
Xvfb :0 -screen 0 1920x1080x24 &
|
||||
export DISPLAY=:0
|
||||
sleep 2
|
||||
/home/kiosk/kiosk-browser.sh 2>/tmp/kiosk-error3.log
|
||||
|
||||
# Wenn alles fehlschlägt
|
||||
echo ""
|
||||
echo "ALLE X11-METHODEN FEHLGESCHLAGEN!"
|
||||
echo ""
|
||||
echo "Fehler-Logs:"
|
||||
echo "- /tmp/kiosk-error1.log"
|
||||
echo "- /tmp/kiosk-error2.log"
|
||||
echo "- /tmp/kiosk-error3.log"
|
||||
echo ""
|
||||
echo "Starte Terminal-Browser als Fallback..."
|
||||
sleep 3
|
||||
/home/kiosk/terminal-browser.sh
|
||||
fi
|
||||
EOF
|
||||
|
||||
chown kiosk:kiosk /home/kiosk/.bashrc
|
||||
|
||||
# 11. SYSTEMD-DIENSTE
|
||||
log "Konfiguriere Systemd..."
|
||||
systemctl daemon-reload
|
||||
systemctl enable getty@tty1.service
|
||||
systemctl enable kiosk.service 2>/dev/null || true
|
||||
|
||||
# 12. FINALE ÜBERPRÜFUNG
|
||||
log "✅ INSTALLATION ABGESCHLOSSEN!"
|
||||
info ""
|
||||
info "📋 Was wurde installiert:"
|
||||
info " - KMS/DRM-Treiber aktiviert"
|
||||
info " - X11 komplett neu konfiguriert"
|
||||
info " - 3 verschiedene Start-Methoden"
|
||||
info " - Terminal-Browser als Fallback"
|
||||
info " - Autologin konfiguriert"
|
||||
info ""
|
||||
warning "⚠️ NEUSTART ERFORDERLICH!"
|
||||
info ""
|
||||
info "Nach dem Neustart:"
|
||||
info "1. System startet automatisch in Kiosk-Modus"
|
||||
info "2. Falls X11 fehlschlägt, startet Terminal-Browser"
|
||||
info ""
|
||||
info "Manueller Test ohne Neustart:"
|
||||
info " su - kiosk"
|
||||
info " ./kiosk-direct.sh"
|
||||
info ""
|
||||
read -p "Jetzt neustarten? (j/n) " -n 1 -r
|
||||
echo
|
||||
if [[ $REPLY =~ ^[Jj]$ ]]; then
|
||||
reboot
|
||||
fi
|
||||
Reference in New Issue
Block a user