S1: GPU im Container über virgl statt Zink — die eigentliche Ursache
Der Protokollauszug enthielt die entscheidende Zeile nicht bei der Shell, sondern
zwei Zeilen darunter:
! glxinfo lieferte nichts
! vulkaninfo lieferte nichts
Im Container gab es überhaupt kein OpenGL. Mein Denkfehler: Turnip liegt in
Termux' Verzeichnis, nicht im Debian-Rootfs. GALLIUM_DRIVER=zink im Container zu
setzen geht deshalb ins Leere — Zink bräuchte dort einen Vulkan-Treiber, und da
ist keiner.
Damit erklärt sich die ganze Kette: kein OpenGL, also kein QtQuick, also kann
plasmashell die MobileShell nicht laden und fällt wortlos auf die Voreinstellung
zurück. Das 'starting invalid corona' war das Symptom, nicht die Krankheit — und
der schwarze Bildschirm sah nach einem Compositor-Problem aus, obwohl KWin lief.
Richtig ist der Weg über virgl: der Server läuft in TERMUX und rendert dort über
Zink auf Turnip, der Container spricht nur virpipe mit ihm. Turnip bleibt also im
Spiel, nur eine Ebene tiefer als gedacht.
Der GPU-Nachweis im Container wertet jetzt aus statt nur zu drucken und sagt
ausdrücklich, dass ohne OpenGL die Shell nicht laden wird — damit dieselbe
Verwechslung nicht noch einmal Stunden kostet.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -92,16 +92,35 @@ hint "Steht es weiterhin dort, hat der X-Server keine Verbindung bekommen."
|
||||
|
||||
# ── GPU-Server ───────────────────────────────────────────────────────────────
|
||||
section "GPU-Pfad vorbereiten ($GPU_PROFIL)"
|
||||
if [ "$GPU_PROFIL" = "virgl" ] && have virgl_test_server_android; then
|
||||
virgl_test_server_android >>"$LOG" 2>&1 &
|
||||
sleep 1
|
||||
ok "virgl-Server gestartet"
|
||||
elif [ "$GPU_PROFIL" = "turnip" ]; then
|
||||
ok "Turnip greift direkt auf KGSL zu — kein Proxy nötig"
|
||||
else
|
||||
warn "Kein GPU-Server aktiv, Software-Rendering wahrscheinlich"
|
||||
# Wichtige Korrektur gegenüber der ersten Fassung: Turnip lebt in Termux'
|
||||
# Verzeichnis, nicht im Debian-Rootfs. Im Container GALLIUM_DRIVER=zink zu setzen
|
||||
# geht deshalb ins Leere — Zink bräuchte dort einen Vulkan-Treiber, und da ist
|
||||
# keiner. Ergebnis war gar kein OpenGL, und ohne das kann QtQuick nichts zeichnen.
|
||||
#
|
||||
# Der tragfähige Weg führt über virgl: der Server läuft in TERMUX und nutzt dort
|
||||
# den schnellen Pfad (Zink auf Turnip), der Container spricht nur virpipe mit ihm.
|
||||
# Turnip bleibt also im Spiel — nur eine Ebene tiefer als gedacht.
|
||||
if ! have virgl_test_server_android; then
|
||||
fail "virgl_test_server_android fehlt — ohne ihn gibt es im Container kein OpenGL."
|
||||
hint "Nachinstallieren: pkg install -y virglrenderer-android"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
pkill -f virgl_test_server 2>/dev/null; sleep 1
|
||||
if [ "$GPU_PROFIL" = "turnip" ]; then
|
||||
# Der Server selbst rendert über Zink auf Turnip — dort ist der Treiber ja.
|
||||
GALLIUM_DRIVER=zink MESA_LOADER_DRIVER_OVERRIDE=zink \
|
||||
virgl_test_server_android >>"$LOG" 2>&1 &
|
||||
ok "virgl-Server gestartet, rendert über Zink auf Turnip"
|
||||
else
|
||||
virgl_test_server_android >>"$LOG" 2>&1 &
|
||||
ok "virgl-Server gestartet"
|
||||
fi
|
||||
VIRGL_PID=$!
|
||||
sleep 2
|
||||
kill -0 "$VIRGL_PID" 2>/dev/null && ok "läuft (PID $VIRGL_PID)" \
|
||||
|| warn "virgl-Server sofort beendet — siehe Protokoll"
|
||||
|
||||
# ── Audio, damit der Desktop nicht schon daran scheitert ─────────────────────
|
||||
section "PulseAudio"
|
||||
pulseaudio --kill 2>/dev/null || true
|
||||
|
||||
Reference in New Issue
Block a user