- Hornea firmware nvidia/gp106 (ctxsw/acr/sec2) descomprimido a .bin (nouveau da GL 3D). - init: modo HARDWARE por defecto (WGPU_BACKEND=gl sobre gallium-nouveau, que da float16 vía unpackHalf2x16; tapa lavapipe). Pascal no tiene NVK ⇒ greeter va por GL, no Vulkan. - cmdline default = hardware; 'mirada.sw nouveau.modeset=0' = fallback software. - CHIP/FW_SRC parametrizables para otras GPUs. Regresión: el fallback software sigue levantando el compositor en la imagen final. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3.8 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-generic7.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ásseatd,libinput,libxkbcommon, datos XKB, PAM permisivo, busybox, loader musl. /sbin/init= lanzador: monta pseudo-fs, arrancaseatd, corremirada-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.
Target actual: GTX 1060 (Pascal / GP106)
Pascal no usa GSP (eso es Turing+). La imagen hornea el firmware de aceleración nvidia/gp106/
(ctxsw gr/ + acr/sec2, descomprimido a .bin) que nouveau necesita para dar GL 3D.
NVK (Vulkan) no soporta Pascal ⇒ el greeter va por el backend GL de wgpu sobre gallium-nouveau
(que da unpackHalf2x16 = float16). Reconstruir para otra GPU: CHIP=<gpXXX> FW_SRC=<dir> scripts/mirada-usb.sh.
Los dos modos (cmdline, editable con e en systemd-boot)
- Por defecto (
console=tty0) → HARDWARE nouveau. nouveau maneja la GTX 1060 (firmware ya horneado), el compositor y el greeter pintan por gallium-nouveau GL. El init exportaWGPU_BACKEND=gly tapa lavapipe para que wgpu no caiga a software. - Fallback software → en el menú,
e, agregámirada.sw nouveau.modeset=0. Fuerza llvmpipe/lavapipe sobre simpledrm: el compositor arranca seguro; el greeter no completa (los rasterizadores software no dan float16). Útil si nouveau diera problemas.
Pendiente / deuda
- Confirmar en el metal: el camino nouveau-GL sólo se puede validar en la 1060 real (QEMU no tiene
nouveau; el proxy virgl requiere
egl-headless, no disponible acá). El software sí está validado. - Soberanía: el stack GL/Vulkan viene de Alpine (mesa 26 + LLVM 22). Falta
recipes/{llvm,mesa-llvmpipe,mesa-nouveau}desde fuente. El firmware nouveau es un blob NVIDIA (no reproducible por naturaleza).
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