📚 Improved X11 framebuffer script and related files 🖱️

This commit is contained in:
Till Tomczak 2025-06-04 14:24:57 +02:00
parent 42300c9c16
commit 1835367560
5 changed files with 566 additions and 0 deletions

Binary file not shown.

Binary file not shown.

237
fix-x11-framebuffer.sh Normal file
View File

@ -0,0 +1,237 @@
#!/bin/bash
# ===================================================================
# MYP X11 Framebuffer-Fix für Raspberry Pi
# Behebt den "Cannot run in framebuffer mode" Fehler
# ===================================================================
set -euo pipefail
# Farben für Ausgabe
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}"
}
# Prüfe root-Berechtigung
if [ "$EUID" -ne 0 ]; then
error "Dieses Skript muss als Root ausgeführt werden: sudo $0"
fi
log "=== X11 FRAMEBUFFER-FIX FÜR RASPBERRY PI ==="
# Stoppe laufende X-Server
log "Stoppe laufende X-Server..."
pkill -f "X :0" 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 2
# Erstelle X11-Konfigurationsverzeichnis
log "Erstelle X11-Konfiguration..."
mkdir -p /etc/X11/xorg.conf.d
# Erstelle Framebuffer-Fix-Konfiguration
cat > /etc/X11/xorg.conf.d/99-fbdev.conf << 'EOF'
# X11 Konfiguration für Raspberry Pi - behebt Framebuffer-Fehler
Section "Device"
Identifier "Raspberry Pi FBDEV"
Driver "fbdev"
Option "fbdev" "/dev/fb0"
Option "SwapbuffersWait" "true"
EndSection
Section "Screen"
Identifier "Primary Screen"
Device "Raspberry Pi FBDEV"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1920x1080" "1680x1050" "1600x900" "1280x1024" "1280x800" "1024x768"
EndSubSection
EndSection
Section "ServerLayout"
Identifier "Default Layout"
Screen "Primary Screen"
EndSection
Section "ServerFlags"
Option "BlankTime" "0"
Option "StandbyTime" "0"
Option "SuspendTime" "0"
Option "OffTime" "0"
Option "DPMS" "false"
EndSection
EOF
# Alternative Modesetting-Konfiguration
cat > /etc/X11/xorg.conf.d/20-modesetting.conf << 'EOF'
# Alternative Modesetting-Konfiguration
Section "Device"
Identifier "Raspberry Pi Modesetting"
Driver "modesetting"
Option "AccelMethod" "none"
EndSection
EOF
# Installiere fehlende Video-Treiber
log "Installiere Video-Treiber..."
apt-get update
apt-get install -y xserver-xorg-video-fbturbo 2>/dev/null || {
# Fallback zu Standard-Treibern
apt-get install -y xserver-xorg-video-all 2>/dev/null || true
}
# Erstelle X11-Start-Wrapper
log "Erstelle X11-Start-Wrapper..."
cat > /usr/local/bin/start-x11-kiosk << 'EOF'
#!/bin/bash
# X11 Kiosk-Start-Wrapper für Raspberry Pi
export DISPLAY=:0
export XAUTHORITY=/home/kiosk/.Xauthority
# Erstelle .Xauthority
if [ ! -f "$XAUTHORITY" ]; then
touch "$XAUTHORITY"
chown kiosk:kiosk "$XAUTHORITY"
chmod 600 "$XAUTHORITY"
fi
# Stoppe alte X-Server
pkill -f "X :0" 2>/dev/null || true
pkill -f "Xorg" 2>/dev/null || true
sleep 2
echo "Starte X-Server..."
# Versuche verschiedene Start-Methoden
if ! xinit /home/kiosk/.xinitrc -- :0 vt7 -novtswitch -nolisten tcp -dpi 96 2>/tmp/x11-error.log; then
echo "Methode 1 fehlgeschlagen, versuche Alternative..."
if ! xinit /home/kiosk/.xinitrc -- :0 vt7 -config /etc/X11/xorg.conf.d/99-fbdev.conf -ignoreABI 2>>/tmp/x11-error.log; then
echo "Methode 2 fehlgeschlagen, versuche Fallback..."
xinit /home/kiosk/.xinitrc -- :0 2>>/tmp/x11-error.log
fi
fi
if [ -f /tmp/x11-error.log ]; then
echo "X11 Fehler-Log:"
tail -20 /tmp/x11-error.log
fi
EOF
chmod +x /usr/local/bin/start-x11-kiosk
# Erstelle einfaches .xinitrc für kiosk
log "Erstelle korrigiertes .xinitrc..."
cat > /home/kiosk/.xinitrc << 'EOF'
#!/bin/bash
# Fehlerlog
exec 2>/tmp/xinitrc-error.log
# X11 Einstellungen
xset s off
xset s noblank
xset -dpms
# Window Manager
openbox-session &
sleep 2
# Browser starten
BROWSER=""
if command -v chromium >/dev/null 2>&1; then
BROWSER="chromium"
elif command -v chromium-browser >/dev/null 2>&1; then
BROWSER="chromium-browser"
else
BROWSER="firefox-esr"
fi
# Starte Browser mit GPU-Deaktivierung
exec $BROWSER \
--kiosk \
--no-sandbox \
--disable-gpu \
--disable-software-rasterizer \
--disable-dev-shm-usage \
--no-first-run \
--start-fullscreen \
http://localhost:5000
EOF
chmod +x /home/kiosk/.xinitrc
chown kiosk:kiosk /home/kiosk/.xinitrc
# Konfiguriere Raspberry Pi Boot-Einstellungen
if [ -f /boot/config.txt ]; then
log "Konfiguriere Raspberry Pi GPU-Einstellungen..."
# Backup
cp /boot/config.txt /boot/config.txt.backup
# GPU-Einstellungen
if ! grep -q "^gpu_mem=" /boot/config.txt; then
echo "gpu_mem=128" >> /boot/config.txt
fi
if ! grep -q "^hdmi_force_hotplug=" /boot/config.txt; then
cat >> /boot/config.txt << 'EOF'
# X11 Kiosk-Modus Optimierungen
hdmi_force_hotplug=1
hdmi_drive=2
config_hdmi_boost=4
disable_overscan=1
framebuffer_width=1920
framebuffer_height=1080
framebuffer_depth=32
framebuffer_ignore_alpha=1
EOF
fi
fi
log "✅ X11 Framebuffer-Fix installiert!"
info ""
info "📋 Was wurde konfiguriert:"
info " - X11 fbdev-Konfiguration erstellt"
info " - Video-Treiber installiert"
info " - X11-Start-Wrapper erstellt: /usr/local/bin/start-x11-kiosk"
info " - GPU-Einstellungen optimiert"
info ""
info "🔧 Nächste Schritte:"
info " 1. System neustarten: sudo reboot"
info " 2. Als kiosk-User einloggen"
info " 3. X11 wird automatisch mit den Fixes starten"
info ""
info "💡 Manueller Test:"
info " su - kiosk"
info " /usr/local/bin/start-x11-kiosk"
info ""
# Prüfe ob Neustart erforderlich
if [ -f /boot/config.txt.backup ]; then
warning "⚠️ Boot-Konfiguration geändert - Neustart erforderlich!"
fi

View File

@ -3930,3 +3930,23 @@ WHERE jobs.status = ?) AS anon_1]
2025-06-04 09:27:18 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) 2025-06-04 09:27:18 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
2025-06-04 09:38:42 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) 2025-06-04 09:38:42 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
2025-06-04 09:38:44 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) 2025-06-04 09:38:44 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
2025-06-04 14:24:38 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: C:\Users\TTOMCZA.EMEA\Dev\manage-your-printer\database\myp.db
2025-06-04 14:24:42 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
2025-06-04 14:24:42 - [app] app - [INFO] INFO - ✅ Timeout Force-Quit Manager geladen
2025-06-04 14:24:42 - [app] app - [INFO] INFO - 📋 Standard-Konfiguration verwendet
2025-06-04 14:24:42 - [app] app - [INFO] INFO - ✅ Zentraler Shutdown-Manager initialisiert
2025-06-04 14:24:42 - [app] app - [INFO] INFO - ✅ Error-Recovery-Monitoring gestartet
2025-06-04 14:24:42 - [app] app - [INFO] INFO - ✅ System-Control-Manager initialisiert
2025-06-04 14:24:42 - [app] app - [WARNING] WARNING - ⚠️ Kiosk-Service nicht gefunden - Kiosk-Funktionen eventuell eingeschränkt
2025-06-04 14:24:42 - [app] app - [INFO] INFO - 🔄 Starte Datenbank-Setup und Migrationen...
2025-06-04 14:24:42 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
2025-06-04 14:24:42 - [app] app - [INFO] INFO - ✅ JobOrder-Tabelle bereits vorhanden
2025-06-04 14:24:42 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
2025-06-04 14:24:42 - [app] app - [INFO] INFO - ✅ Datenbank-Setup und Migrationen erfolgreich abgeschlossen
2025-06-04 14:24:42 - [app] app - [INFO] INFO - 📋 Standard-Konfiguration aktiv (keine Optimierungen)
2025-06-04 14:24:42 - [app] app - [INFO] INFO - 🖨️ Starte automatische Steckdosen-Initialisierung...
2025-06-04 14:24:42 - [app] app - [INFO] INFO - Keine Drucker zur Initialisierung gefunden
2025-06-04 14:24:42 - [app] app - [INFO] INFO - 🔄 Debug-Modus: Queue Manager deaktiviert für Entwicklung
2025-06-04 14:24:42 - [app] app - [INFO] INFO - Job-Scheduler gestartet
2025-06-04 14:24:42 - [app] app - [INFO] INFO - 🔧 Starte Debug-Server auf 0.0.0.0:5000 (HTTP)
2025-06-04 14:24:42 - [app] app - [INFO] INFO - Windows-Debug-Modus: Auto-Reload deaktiviert

309
setup.sh
View File

@ -1241,6 +1241,209 @@ install_minimal_x11() {
log "✅ Minimale X11-Umgebung installiert" log "✅ Minimale X11-Umgebung installiert"
} }
# =========================== X11 KONFIGURATION FÜR RASPBERRY PI ===========================
configure_x11_for_raspberry_pi() {
log "=== KONFIGURIERE X11 FÜR RASPBERRY PI ==="
progress "Erstelle X11-Konfiguration für Raspberry Pi..."
# Erstelle xorg.conf.d Verzeichnis
mkdir -p /etc/X11/xorg.conf.d
# Erstelle 99-fbdev.conf um Framebuffer-Fehler zu beheben
cat > /etc/X11/xorg.conf.d/99-fbdev.conf << 'XORGEOF'
# X11 Konfiguration für Raspberry Pi - behebt Framebuffer-Fehler
Section "Device"
Identifier "Raspberry Pi FBDEV"
Driver "fbdev"
Option "fbdev" "/dev/fb0"
Option "SwapbuffersWait" "true"
EndSection
Section "Screen"
Identifier "Primary Screen"
Device "Raspberry Pi FBDEV"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1920x1080" "1680x1050" "1600x900" "1280x1024" "1280x800" "1024x768"
EndSubSection
EndSection
Section "ServerLayout"
Identifier "Default Layout"
Screen "Primary Screen"
EndSection
Section "ServerFlags"
Option "BlankTime" "0"
Option "StandbyTime" "0"
Option "SuspendTime" "0"
Option "OffTime" "0"
Option "DPMS" "false"
EndSection
XORGEOF
# Alternative: Verwende modesetting Treiber statt fbdev
cat > /etc/X11/xorg.conf.d/20-modesetting.conf << 'MODESETEOF'
# Alternative Modesetting-Konfiguration
Section "Device"
Identifier "Raspberry Pi Modesetting"
Driver "modesetting"
Option "AccelMethod" "none"
EndSection
MODESETEOF
# Erstelle Wrapper-Skript für X11-Start mit korrekten Parametern
cat > /usr/local/bin/start-x11-kiosk << 'KIOSKSTARTEOF'
#!/bin/bash
# X11 Kiosk-Start-Wrapper für Raspberry Pi
# Behebt Framebuffer und Permission-Probleme
export DISPLAY=:0
export XAUTHORITY=/home/kiosk/.Xauthority
# Erstelle .Xauthority falls nicht vorhanden
if [ ! -f "$XAUTHORITY" ]; then
touch "$XAUTHORITY"
chown kiosk:kiosk "$XAUTHORITY"
chmod 600 "$XAUTHORITY"
fi
# Stoppe eventuell laufende X-Server
pkill -f "X :0" 2>/dev/null || true
pkill -f "Xorg" 2>/dev/null || true
sleep 2
# Versuche verschiedene X-Server Start-Methoden
echo "Starte X-Server für Kiosk-Modus..."
# Methode 1: Mit vt und novtswitch (empfohlen für Raspberry Pi)
if ! xinit /home/kiosk/.xinitrc -- :0 vt7 -novtswitch -nolisten tcp -dpi 96 2>/tmp/x11-error.log; then
echo "Methode 1 fehlgeschlagen, versuche Alternative..."
# Methode 2: Mit config und ignoreABI
if ! xinit /home/kiosk/.xinitrc -- :0 vt7 -config /etc/X11/xorg.conf.d/99-fbdev.conf -ignoreABI 2>>/tmp/x11-error.log; then
echo "Methode 2 fehlgeschlagen, versuche Fallback..."
# Methode 3: Minimaler Start
xinit /home/kiosk/.xinitrc -- :0 2>>/tmp/x11-error.log
fi
fi
# Fehlerlog anzeigen bei Problem
if [ -f /tmp/x11-error.log ]; then
echo "X11 Fehler-Log:"
tail -20 /tmp/x11-error.log
fi
KIOSKSTARTEOF
chmod +x /usr/local/bin/start-x11-kiosk
# Installiere fehlende Video-Treiber
progress "Installiere Video-Treiber für Raspberry Pi..."
apt-get install -y xserver-xorg-video-fbturbo 2>/dev/null || {
# Fallback zu Standard-Treibern
apt-get install -y xserver-xorg-video-all 2>/dev/null || true
}
# Raspberry Pi spezifische Video-Treiber
if [ -f /boot/config.txt ]; then
progress "Konfiguriere Raspberry Pi GPU-Einstellungen..."
# Backup config.txt
cp /boot/config.txt /boot/config.txt.backup
# GPU-Speicher erhöhen für bessere Grafik-Performance
if ! grep -q "^gpu_mem=" /boot/config.txt; then
echo "gpu_mem=128" >> /boot/config.txt
fi
# HDMI-Einstellungen für bessere Kompatibilität
if ! grep -q "^hdmi_force_hotplug=" /boot/config.txt; then
cat >> /boot/config.txt << 'BOOTEOF'
# X11 Kiosk-Modus Optimierungen
hdmi_force_hotplug=1
hdmi_drive=2
config_hdmi_boost=4
disable_overscan=1
framebuffer_width=1920
framebuffer_height=1080
framebuffer_depth=32
framebuffer_ignore_alpha=1
BOOTEOF
fi
fi
# Erstelle alternatives .xinitrc für kiosk User
cat > /home/kiosk/.xinitrc-fixed << 'XINITRCEOF'
#!/bin/bash
# Fehlerbehandlung
set -e
exec 2>/tmp/xinitrc-error.log
# X11 Einstellungen
xset s off
xset s noblank
xset -dpms
# Mauszeiger verstecken
unclutter -idle 0.1 -root -noevents &
# Window Manager starten (lightweight)
openbox-session &
# Warte kurz
sleep 2
# Browser starten
if command -v chromium >/dev/null 2>&1; then
BROWSER="chromium"
elif command -v chromium-browser >/dev/null 2>&1; then
BROWSER="chromium-browser"
else
BROWSER="firefox-esr"
fi
# Starte Browser im Kiosk-Modus
exec $BROWSER \
--kiosk \
--no-sandbox \
--disable-gpu-sandbox \
--disable-software-rasterizer \
--disable-dev-shm-usage \
--disable-setuid-sandbox \
--disable-gpu \
--no-first-run \
--noerrdialogs \
--disable-infobars \
--start-fullscreen \
http://localhost:5000
XINITRCEOF
chmod +x /home/kiosk/.xinitrc-fixed
chown kiosk:kiosk /home/kiosk/.xinitrc-fixed
# Aktualisiere die .bashrc für den alternativen Start
cat > /home/kiosk/.bashrc-kiosk << 'BASHRCEOF4'
# Kiosk-Autostart mit X11-Fixes
if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" = "1" ]; then
echo "Starte Kiosk-Modus mit X11-Fixes..."
# Verwende das neue Start-Skript
exec /usr/local/bin/start-x11-kiosk
fi
BASHRCEOF4
log "✅ X11-Konfiguration für Raspberry Pi erstellt"
info " 📁 Konfiguration: /etc/X11/xorg.conf.d/"
info " 🚀 Start-Skript: /usr/local/bin/start-x11-kiosk"
info " 🔧 Alternative .xinitrc: /home/kiosk/.xinitrc-fixed"
}
# =========================== KIOSK-BENUTZER MANAGEMENT =========================== # =========================== KIOSK-BENUTZER MANAGEMENT ===========================
create_kiosk_user() { create_kiosk_user() {
log "=== KIOSK-BENUTZER SETUP ===" log "=== KIOSK-BENUTZER SETUP ==="
@ -1495,6 +1698,111 @@ EOF
log "✅ Automatischer Kiosk-Start konfiguriert" log "✅ Automatischer Kiosk-Start konfiguriert"
info "Der Kiosk-Modus startet automatisch beim Login des $KIOSK_USER" info "Der Kiosk-Modus startet automatisch beim Login des $KIOSK_USER"
# Wenn X11-Konfiguration für Raspberry Pi vorhanden ist, verwende sie
if [ -f /usr/local/bin/start-x11-kiosk ]; then
progress "Aktualisiere .bashrc für X11-Fix-Integration..."
# Backup der aktuellen .bashrc
cp "$kiosk_home/.bashrc" "$kiosk_home/.bashrc.backup"
# Verwende die korrigierte Version
cat > "$kiosk_home/.bashrc" << 'BASHRCFIXED'
# Automatischer Kiosk-Start beim Login mit X11-Fixes
if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" = "1" ]; then
echo "Starte Kiosk-Modus mit X11-Fixes..."
# Verwende das X11-Fix Start-Skript wenn vorhanden
if [ -x /usr/local/bin/start-x11-kiosk ]; then
exec /usr/local/bin/start-x11-kiosk
else
# Fallback zum normalen Start
startx /home/kiosk/.xinitrc -- :0 vt1 &
sleep 5
export DISPLAY=:0
# Warte auf HTTP-Backend
echo "Warte auf HTTP-Backend..."
for i in {1..60}; do
if curl -s http://localhost:5000 >/dev/null 2>&1; then
echo "HTTP-Backend erreichbar"
break
fi
echo "Warte... ($i/60)"
sleep 2
done
# Bildschirmschoner deaktivieren
xset s off
xset s noblank
xset -dpms
# Mauszeiger verstecken
unclutter -idle 0.1 -root -noevents &
# Browser im Kiosk-Modus starten
if command -v chromium >/dev/null 2>&1; then
BROWSER="chromium"
elif command -v chromium-browser >/dev/null 2>&1; then
BROWSER="chromium-browser"
else
BROWSER="firefox-esr"
fi
echo "Starte $BROWSER im Kiosk-Modus..."
if [[ "$BROWSER" == "chromium"* ]]; then
exec $BROWSER \
--kiosk \
--no-sandbox \
--disable-infobars \
--disable-session-crashed-bubble \
--disable-restore-session-state \
--disable-features=TranslateUI \
--disable-extensions \
--disable-plugins \
--disable-popup-blocking \
--disable-prompt-on-repost \
--disable-sync \
--disable-translate \
--noerrdialogs \
--no-first-run \
--no-default-browser-check \
--autoplay-policy=no-user-gesture-required \
--start-fullscreen \
--start-maximized \
--user-data-dir=/home/kiosk/.chromium-kiosk \
--disable-background-mode \
--force-device-scale-factor=1.0 \
--disable-pinch \
--overscroll-history-navigation=0 \
--disable-dev-shm-usage \
--memory-pressure-off \
--max_old_space_size=512 \
--disable-background-timer-throttling \
--disable-backgrounding-occluded-windows \
--disable-renderer-backgrounding \
--disable-features=VizDisplayCompositor \
--enable-features=OverlayScrollbar \
--hide-scrollbars \
--ignore-certificate-errors \
--ignore-ssl-errors \
--ignore-certificate-errors-spki-list \
--disable-web-security \
--allow-running-insecure-content \
http://localhost:5000
else
exec firefox-esr \
--kiosk \
http://localhost:5000
fi
fi
fi
BASHRCFIXED
chown "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/.bashrc"
log "✅ .bashrc für X11-Fix-Integration aktualisiert"
fi
} }
# =========================== ROBUSTE SSL-ZERTIFIKATE INSTALLATION =========================== # =========================== ROBUSTE SSL-ZERTIFIKATE INSTALLATION ===========================
@ -2955,6 +3263,7 @@ install_full_production_system() {
# Desktop-Environments entfernen und minimale X11 installieren # Desktop-Environments entfernen und minimale X11 installieren
remove_desktop_environments remove_desktop_environments
install_minimal_x11 install_minimal_x11
configure_x11_for_raspberry_pi
# Performance-Optimierungen für Raspberry Pi Webapp # Performance-Optimierungen für Raspberry Pi Webapp
optimize_webapp_performance optimize_webapp_performance