sergio/takana
> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…
kde/qemu: -vga none — el escritorio por fin SE VE (no más TianoCore congelado)
1#!/usr/bin/env bash
2# run-qemu-desktop.sh — arranca la imagen KDE en QEMU (virtio-gpu + software GL) de forma REPRODUCIBLE.
3# Antes era un comando ad-hoc. Por defecto headless (DISPLAY=none) para diagnóstico por serial sin
4# interferir con la sesión mirada del laptop; DISP=gtk para ver la ventana (necesita DISPLAY=:0 Xwayland,
5# y cada restart de mirada mata la ventana).
6#
7# scripts/kde/run-qemu-desktop.sh # headless, serial → work/qemu-desktop-serial.log
8# DISP=gtk scripts/kde/run-qemu-desktop.sh # ventana gráfica (virtio-gpu por gtk)
9# TIMEOUT=90 scripts/kde/run-qemu-desktop.sh # mata QEMU a los 90s (diagnóstico automático)
10set -euo pipefail
11ROOT="$(cd "$(dirname "$0")/../.." && pwd)"; cd "$ROOT"
12
13IMG="${IMG:-work/hammer-kde-qemu.img}"
14SERIAL="${SERIAL:-work/qemu-desktop-serial.log}"
15OVMF_CODE="${OVMF_CODE:-/usr/share/edk2/x64/OVMF_CODE.4m.fd}"
16OVMF_VARS_SRC="${OVMF_VARS_SRC:-/usr/share/edk2/x64/OVMF_VARS.4m.fd}"
17VARS="${VARS:-work/qemu-desktop-OVMF_VARS.fd}"
18DISP="${DISP:-none}"
19MEM="${MEM:-4G}"
20SMP="${SMP:-4}"
21
22[ -r "$IMG" ] || { echo "falta $IMG — corré scripts/kde/qemu-desktop-image.sh" >&2; exit 1; }
23[ -r "$OVMF_CODE" ] || { echo "falta OVMF_CODE ($OVMF_CODE)" >&2; exit 1; }
24# copia escribible de las VARS (pflash necesita rw; la del sistema es read-only)
25[ -r "$VARS" ] || cp "$OVMF_VARS_SRC" "$VARS"
26
27case "$DISP" in
28 gtk) DISPLAY_ARGS=(-display gtk -device virtio-gpu-pci) ;;
29 none) DISPLAY_ARGS=(-display none -device virtio-gpu-pci) ;;
30 *) DISPLAY_ARGS=(-display "$DISP" -device virtio-gpu-pci) ;;
31esac
32
33# serial nuevo cada corrida (el diagnóstico depende de que no se mezcle con boots viejos)
34: > "$SERIAL"
35
36QEMU_ARGS=(
37 -machine q35 -accel kvm -cpu host
38 -m "$MEM" -smp "$SMP"
39 -vga none # virtio-gpu-pci (abajo) es el ÚNICO display: sin esto QEMU añade una VGA estándar por
40 # defecto y OVMF pinta el GOP ahí ⇒ simpledrm (card1) muestra el framebuffer EFI y kwin
41 # pinta en virtio-gpu (card0, otro device que no se ve) ⇒ pantalla congelada en TianoCore.
42 # Con -vga none, OVMF usa virtio-gpu ⇒ virtio-gpu-DRM expulsa simpledrm ⇒ un solo output.
43 -drive if=pflash,format=raw,unit=0,file="$OVMF_CODE",readonly=on
44 -drive if=pflash,format=raw,unit=1,file="$VARS"
45 -drive file="$IMG",format=raw,if=virtio
46 "${DISPLAY_ARGS[@]}"
47 -serial "file:$SERIAL"
48 -monitor "unix:${MON:-work/qemu-monitor.sock},server,nowait"
49 -no-reboot
50)
51
52echo "==> QEMU (DISP=$DISP, serial=$SERIAL)"
53echo " imagen: $IMG"
54if [ -n "${TIMEOUT:-}" ]; then
55 echo " TIMEOUT=${TIMEOUT}s (auto-kill)"
56 exec timeout --signal=KILL "${TIMEOUT}" qemu-system-x86_64 "${QEMU_ARGS[@]}"
57else
58 exec qemu-system-x86_64 "${QEMU_ARGS[@]}"
59fi