diff --git a/scripts/kde/plasma-start-qemu.sh b/scripts/kde/plasma-start-qemu.sh index 29293725..7bec0a00 100644 --- a/scripts/kde/plasma-start-qemu.sh +++ b/scripts/kde/plasma-start-qemu.sh @@ -47,7 +47,16 @@ export QT_QUICK_BACKEND=software # llvmpipe segfaultea al componer la 1ra superficie en esta VM. KWIN_DRM_NO_AMS=1: desactiva atomic # modesetting (algunos virtio-gpu lo rompen). Ambos son fixes conocidos de kwin/llvmpipe en VMs. export LP_NUM_THREADS=1 -export KWIN_DRM_NO_AMS=1 +# KWIN_DRM_NO_AMS (legacy modeset) fue una corazonada del segfault (que resultó ser GBM_ALWAYS_SOFTWARE). +# Dejamos atomic (virtio soporta atomic nativo; legacy es el frágil). +# export KWIN_DRM_NO_AMS=1 +# +# EL FIX DEL NEGRO: virtio-gpu ADVIERTE soportar drmModeAddFB2WithModifiers pero RECHAZA el modifier +# explícito (aún LINEAR=0) con EINVAL ⇒ "Failed to create a framebuffer" ⇒ sin output layer ⇒ NEGRO. +# El modeset inicial usa un buffer dumb (sin modifiers) y SÍ pinta (por eso se ve el wallpaper un instante), +# pero los buffers del compositor van por AddFB2WithModifiers y fallan ⇒ vuelve a negro. KWIN_DRM_USE_MODIFIERS=0 +# fuerza a kwin a usar drmModeAddFB2 plano (modifier implícito) que virtio-gpu sí acepta. +export KWIN_DRM_USE_MODIFIERS=0 # KWIN_COMPOSE: con llvmpipe (GL de software COMPLETO) dejamos que kwin use su compositor OpenGL por # defecto — forzar QPainter (=Q) sobre una salida DRM/EGL con GL disponible segfaultea al componer la # 1ra superficie. Si el GL-llvmpipe resultara inestable, KWIN_COMPOSE=Q es el fallback. @@ -124,9 +133,8 @@ fi say "lanzando kwin_wayland (DRM virtio, software GL)..." /usr/bin/kwin_wayland --drm >/tmp/kwin.log 2>&1 & KWIN=$! -# stream EN VIVO del kwin.log al serial: el volcado post-mortem se trunca porque el getty respawnea y -# pisa el serial ⇒ con tail -f la última línea antes del segfault llega al host pase lo que pase. -( tail -f /tmp/kwin.log 2>/dev/null | sed -u 's/^/kwin> /' > /dev/ttyS0 2>/dev/null ) & +# stream EN VIVO del kwin.log al serial (busybox sed NO soporta -u ⇒ nada de sed/pipes: tail -f directo). +( echo "==== kwin.log (stream vivo) ===="; tail -f /tmp/kwin.log ) > /dev/ttyS0 2>/dev/null & TAILPID=$! i=0 while [ $i -lt 60 ]; do