kde/qemu: -vga none — el escritorio por fin SE VE (no más TianoCore congelado)

El escritorio booteaba y kwin pintaba por dentro (serial: kwin vivo), pero el scanout
REAL (verificado por `screendump` del monitor QEMU → PNG) seguía congelado en el logo
TianoCore. Causa: sin -vga none, QEMU añade una VGA estándar por defecto ADEMÁS del
virtio-gpu-pci. OVMF pinta su GOP en la VGA estándar ⇒ el kernel la envuelve con
simpledrm (card1) y ESE es el scanout que se muestra; kwin pinta en virtio-gpu (card0),
otro device que no se ve. Como son devices distintos, virtio no expulsa simpledrm ⇒
pantalla clavada en el frame EFI. (Con VARS reusados el timing lo tapaba; al resetear
los VARS quedó expuesto.)

Fix: -vga none ⇒ virtio-gpu-pci es el único display ⇒ OVMF pinta ahí ⇒ virtio-gpu-DRM
expulsa simpledrm (mismo device) ⇒ un solo card0, y el modeset de kwin toma la pantalla.
Verificado por screendump: se ve el wallpaper de Plasma 6 (1592x960), no TianoCore.

Herramienta nueva: -monitor unix socket en run-qemu-desktop.sh ⇒ `screendump` captura
el framebuffer REAL del guest (oráculo independiente de la ventana gtk, que puede
congelarse si mirada reinicia su Xwayland).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-20 12:22:07 -04:00
co-authored by Claude Opus 4.8
parent 82cbdb7e54
commit d724db6556
+5
View File
@@ -36,11 +36,16 @@ esac
QEMU_ARGS=(
-machine q35 -accel kvm -cpu host
-m "$MEM" -smp "$SMP"
-vga none # virtio-gpu-pci (abajo) es el ÚNICO display: sin esto QEMU añade una VGA estándar por
# defecto y OVMF pinta el GOP ahí ⇒ simpledrm (card1) muestra el framebuffer EFI y kwin
# pinta en virtio-gpu (card0, otro device que no se ve) ⇒ pantalla congelada en TianoCore.
# Con -vga none, OVMF usa virtio-gpu ⇒ virtio-gpu-DRM expulsa simpledrm ⇒ un solo output.
-drive if=pflash,format=raw,unit=0,file="$OVMF_CODE",readonly=on
-drive if=pflash,format=raw,unit=1,file="$VARS"
-drive file="$IMG",format=raw,if=virtio
"${DISPLAY_ARGS[@]}"
-serial "file:$SERIAL"
-monitor "unix:${MON:-work/qemu-monitor.sock},server,nowait"
-no-reboot
)