Files
takana/docs/mirada-usb-nvidia.md
T
sergioandClaude Opus 4.8 c82588ced8 mirada-usb: imagen USB de prueba de mirada en GPU ajena (NVIDIA)
- recipes/mesa-swrast.toml: mesa softpipe hammer-nativo (sin LLVM) para render software.
- scripts/mirada-usb.sh: ensambla rootfs (dev-fs musl + hydrate mirada/seatd/libinput/
  mesa + overlay Alpine llvmpipe/lavapipe/nouveau + XKB + PAM + init seatd+compositor) y
  empaqueta la USB con linux-generic vía systemd-boot.
- docs/mirada-usb-nvidia.md: uso + estado.

Validado en QEMU virtio-gpu: el COMPOSITOR arranca entero (libseat→card0→GBM+EGL+
GlesRenderer→[8/8]→escritorio, acepta clientes, dibuja la ventana del greeter). El
GREETER (Vello) exige shaders float16 que llvmpipe/lavapipe NO dan ⇒ su login sólo
pinta con GPU real (nouveau+firmware, v2).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 14:20:46 -04:00

3.2 KiB

Imagen USB de prueba de mirada (GPU ajena / NVIDIA)

Genera una USB live que arranca el compositor mirada para probarlo en hardware ajeno (NVIDIA/AMD/lo-que-sea). Cierra la parte de imagen del HANDOFF-nvidia-mirada.md.

Armar y quemar

scripts/mirada-usb.sh                 # → work/hammer-mirada-usb.img (~147 MB)
sudo dd if=work/hammer-mirada-usb.img of=/dev/sdX bs=4M oflag=sync status=progress

Bootear con Secure Boot OFF. Aparece el menú de systemd-boot; ENTER arranca. La tecla e edita la cmdline en vivo (para alternar software/hardware, ver abajo).

Qué contiene

  • Kernel linux-generic 7.1.2 (nouveau/i915/radeon built-in + simpledrm fallback).
  • mirada ya sellado en el store: mirada-compositor (smithay) + mirada-greeter (wgpu/Vello) + mirada-ctl.
  • Stack gráfico por software + nouveau (mesa 26.1.1 de Alpine, musl): llvmpipe (GL) + lavapipe (Vulkan) + nouveau_dri.so (GL por hardware si nouveau bindea). Más seatd, libinput, libxkbcommon, datos XKB, PAM permisivo, busybox, loader musl.
  • /sbin/init = lanzador: monta pseudo-fs, arranca seatd, corre mirada-compositor --drm --greeter.

La receta nueva es recipes/mesa-swrast.toml (softpipe hammer-nativo, sin LLVM); el stack robusto de la imagen viene de Alpine (deuda de soberanía: falta recipes/{llvm,mesa-llvmpipe,nvk} desde fuente).

Estado validado (QEMU virtio-gpu, software)

El compositor arranca entero: libseat → /dev/dri/card0 → GBM+EGL+GlesRenderer[8/8] → «escritorio en marcha» → acepta clientes Wayland → dibuja la ventana del greeter.

⚠️ El greeter (login) NO termina de pintar por software. Su renderer Vello exige la capacidad de shaders float16 (SHADER_FLOAT16_IN_FLOAT32, unpack2x16float) que llvmpipe y lavapipe NO proveen — sólo una GPU real. Por eso el login sólo se pinta con hardware.

Los dos modos (cmdline)

  • Por defecto (mirada.sw nouveau.modeset=0) → SOFTWARE. Garantiza que el compositor se ve en la pantalla de la NVIDIA en el primer boot, sin driver ni firmware. El greeter no completa (float16).
  • Hardware nouveau → en el menú, e, quitá mirada.sw nouveau.modeset=0. nouveau intentará manejar la GPU y mesa usará nouveau_dri.so (GL) → el greeter con float16 real debería pintar. Requiere firmware GSP de la GPU en /lib/firmware/nvidia/<chip>/gsp/*.bin (Turing/RTX en adelante).

Falta para el greeter completo en la NVIDIA (v2)

  1. Modelo EXACTO de la GPU → elegir el firmware GSP correcto (imprescindible para el modeset de nouveau en Turing+) y confirmar soporte.
  2. Firmware nouveau en /lib/firmware/ (pasar FW_SRC=<dir> al script para hornearlo).
  3. NVK (Vulkan nouveau) para que wgpu use Vulkan por hardware (o GL nouveau vía naga).

Validar en VM

# compositor por software (virtio-gpu); el greeter no completa (float16) — es lo esperado:
qemu-system-x86_64 -enable-kvm -m 4096 -smp 4 \
  -kernel store/*-linux-generic/boot/bzImage -initrd work/metal-sdboot/initramfs.cpio.gz \
  -append "console=ttyS0,115200 mirada.sw nouveau.modeset=0 rdinit=/init" \
  -device virtio-gpu-pci -display none -serial stdio -no-reboot