gioser

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…

TOML 1411Shell 141Markdown 85Rust 842928 Sutichaykuna

⎇ af4413bc79a81dd14665b8bd4dbeebfac67851ec HANDOFF-nvidia-mirada.md Markdown · 61 siq'ikuna · 5.2 KB Ñawpa willay ch'uya

mirada/USB: telemetría persistente en el pendrive + bump a mirada de hoy (fix musl en tawasuyu) e263b66ec · sergio ·

1# Handoff → agente tawasuyu (mesa/mirada/USB): correr mirada en el tester NVIDIA
2
3**De:** agente hammer (frente Go/kernel). **Fecha:** 2026-06-29.
4**Objetivo:** un tester con GPU **NVIDIA en Windows** quiere probar el **compositor mirada** booteando un **USB live** (no WSLg — WSLg usa el compositor de Microsoft, no mirada; sólo serviría para el userland CLI).
5
6## ✅ Lo que YA entregué (kernel) — listo para usar
7- **`recipes/linux-generic.toml`** (Linux **7.1.2** estable), bzImage 16M, sellado **`b3:fded43c0dd83c650952e437f1a89927fdec906207e5b2d4cf624bcc1a552da2f`** (en el store del hub y del worker, en `boot/bzImage`).
8- Genérico (no clavado al TigerLake como `linux-metal`): **i915 + radeon + nouveau** built-in + simpledrm fallback, **squashfs+overlay** (live USB), storage/USB/input/EFI/VFAT/ISO9660 amplios, monolítico (sin módulos).
9- Da **`/dev/dri/cardN` con KMS por nouveau** → es lo que mirada necesita del kernel.
10- **amdgpu (AMD moderno) excluido en v1** (ICE de gcc en 7.1; ver memoria etapa-metal-usb). radeon (AMD viejo) sí. Si algún tester futuro tiene AMD reciente → v2.
11
12## 🔧 Tareas para vos (el kernel es necesario pero NO suficiente para NVIDIA)
131. **MESA con nouveau/NVK** (lo bloqueante). La `recipes/mesa.toml` actual es **iris-only** (`-Dgallium-drivers=iris`, sin LLVM). mirada (wgpu) necesita en NVIDIA:
14   - **Vulkan NVK** (`-Dvulkan-drivers=nouveau`) — lo que wgpu prefiere; requiere mesa reciente + probablemente LLVM/SPIR-V.
15   - y/o **gallium nouveau** (`-Dgallium-drivers=nouveau`) para GL (o zink sobre NVK).
16   - Hacé una variante `recipes/mesa-nouveau.toml` (no toques la iris-only, que es del escritorio TigerLake). Ojo: nouveau gallium suele pedir LLVM — choca con el plan "iris sin LLVM", pero acá es otra imagen.
172. **FIRMWARE nouveau** en el rootfs `/lib/firmware/`:
18   - Turing+ / RTX (20xx en adelante): **GSP-RM** en `nvidia/<chip>/gsp/*.bin` — **imprescindible**, sin él nouveau no hace modeset.
19   - Pre-Turing: blobs ctxsw en `nouveau/`.
20   - **Pedile al tester el modelo exacto de GPU** para elegir el `<chip>` correcto (y confirmar que nouveau lo soporta).
213. **USB live**: armá la imagen (squashfs+overlay, boot EFI-stub) con el bzImage `linux-generic` + rootfs con mirada + mesa-nouveau + firmware. Base: `scripts/metal-iso.sh` / `scripts/metal-usb-sdboot.sh` (adaptar de `linux-metal` → `linux-generic`; el cmdline del generic NO viene horneado, ponelo en el bootloader/EFI-stub).
224. **Validación**: probá mirada primero en **VM con virtio-gpu** (`DRM_VIRTIO_GPU` ya está =y en el kernel) para aislar el compositor; recién después en el metal NVIDIA.
23
24## Cómo sacar el bzImage del store
25`hammer --store ./store hydrate b3:fded43c0… <destino>` (o copialo de `store/fded43c0…-linux-generic/boot/bzImage`). Reconstruible: `hammer build recipes/linux-generic.toml` (deps flex/bison/m4/openssl/elfutils + zig-0.13, ya en el worker).
26
27Dudas del kernel (drivers a agregar, cmdline, otra config) → pedímelas y reviso `linux-generic.toml`.
28
29## 📥 Telemetría persistente en el propio pendrive (2026-07-14)
30
31**El problema:** el rootfs de esta imagen es un **initramfs = RAM pura**. Los logs iban a `/run` (tmpfs):
32al apagar la máquina ajena no sobrevivía **nada**. Y la GPU a probar está lejos — un viaje sin datos es
33un viaje perdido.
34
35**La solución:** la imagen ahora trae una **2da partición FAT32 `MIRADALOG`** (512M, `DATA_MB` en
36`scripts/metal-usb-sdboot.sh`, que ganó soporte genérico de partición de datos). FAT32 a propósito: el
37pendrive se lee después **desde cualquier SO** (Windows/Mac/Linux) sin herramientas.
38
39`/sbin/init` la monta por `findfs LABEL=MIRADALOG` con **`-o sync`** (cada escritura va al medio: un
40cuelgue duro de la GPU o un corte de luz no se lleva los logs) y vuelca todo en `run-NNNN/`
41(numerada: cada arranque/reintento tiene su carpeta):
42
43| fichero | qué trae |
44|---|---|
45| `00-resumen.txt`     | modo (hw/sw), cmdline, GPU+driver, DRM, si la telemetría persiste |
46| `01-hardware.txt`    | uname, cpu, RAM, **PCI vía sysfs** (vendor/device/class/**driver**), módulos, /dev/dri, nouveau sysfs, input, firmware nvidia presente |
47| `02-pantallas.txt`   | por conector: `status`/`modes`/`enabled` |
48| `03-dmesg-early.txt` | dmesg **antes** de mirada → si nouveau bindeó y si el firmware gp106 cargó |
49| `04-seatd.log`       | seatd (DRM master / sesión) |
50| `05-mirada.log`      | compositor + greeter, con `RUST_LOG=wgpu_core=debug,wgpu_hal=debug` + `EGL_LOG_LEVEL=debug` + `LIBGL_DEBUG=verbose` ⇒ **por qué wgpu eligió el backend y si hay float16** |
51| `06-dmesg-final.txt` | dmesg **después** + exit code → cuelgues/oops/reset de nouveau |
52| `07-estado-final.txt`| procesos, RAM, /dev/dri al final |
53
54**GOTCHA:** el busybox de Alpine **no trae el applet `lspci`** (sí `findfs`/`blkid`). El dump de PCI se
55hace leyendo `/sys/bus/pci/devices/*/{vendor,device,class}` + `readlink driver` — más soberano igual.
56`vendor 0x10de` = NVIDIA; `class 0x0300*` = VGA.
57
58**En la máquina ajena:** arranca solo. Si el compositor termina/falla, cae a un shell de rescate con la
59telemetría ya sincronizada; `relanzar` reintenta y crea un `run-NNNN` nuevo. Se puede apagar sin ceremonia.
60
61**Al volver:** montar la partición `MIRADALOG` y leer `run-NNNN/`.

HANDOFF-nvidia-mirada.md

Handoff → agente tawasuyu (mesa/mirada/USB): correr mirada en el tester NVIDIA

De: agente hammer (frente Go/kernel). Fecha: 2026-06-29. Objetivo: un tester con GPU NVIDIA en Windows quiere probar el compositor mirada booteando un USB live (no WSLg — WSLg usa el compositor de Microsoft, no mirada; sólo serviría para el userland CLI).

✅ Lo que YA entregué (kernel) — listo para usar

🔧 Tareas para vos (el kernel es necesario pero NO suficiente para NVIDIA)

  1. MESA con nouveau/NVK (lo bloqueante). La recipes/mesa.toml actual es iris-only (-Dgallium-drivers=iris, sin LLVM). mirada (wgpu) necesita en NVIDIA:
    • Vulkan NVK (-Dvulkan-drivers=nouveau) — lo que wgpu prefiere; requiere mesa reciente + probablemente LLVM/SPIR-V.
    • y/o gallium nouveau (-Dgallium-drivers=nouveau) para GL (o zink sobre NVK).
    • Hacé una variante recipes/mesa-nouveau.toml (no toques la iris-only, que es del escritorio TigerLake). Ojo: nouveau gallium suele pedir LLVM — choca con el plan "iris sin LLVM", pero acá es otra imagen.
  2. FIRMWARE nouveau en el rootfs /lib/firmware/:
    • Turing+ / RTX (20xx en adelante): GSP-RM en nvidia/<chip>/gsp/*.bin — imprescindible, sin él nouveau no hace modeset.
    • Pre-Turing: blobs ctxsw en nouveau/.
    • Pedile al tester el modelo exacto de GPU para elegir el <chip> correcto (y confirmar que nouveau lo soporta).
  3. USB live: armá la imagen (squashfs+overlay, boot EFI-stub) con el bzImage linux-generic + rootfs con mirada + mesa-nouveau + firmware. Base: scripts/metal-iso.sh / scripts/metal-usb-sdboot.sh (adaptar de linux-metal → linux-generic; el cmdline del generic NO viene horneado, ponelo en el bootloader/EFI-stub).
  4. Validación: probá mirada primero en VM con virtio-gpu (DRM_VIRTIO_GPU ya está =y en el kernel) para aislar el compositor; recién después en el metal NVIDIA.

Cómo sacar el bzImage del store

hammer --store ./store hydrate b3:fded43c0… <destino> (o copialo de store/fded43c0…-linux-generic/boot/bzImage). Reconstruible: hammer build recipes/linux-generic.toml (deps flex/bison/m4/openssl/elfutils + zig-0.13, ya en el worker).

Dudas del kernel (drivers a agregar, cmdline, otra config) → pedímelas y reviso linux-generic.toml.

📥 Telemetría persistente en el propio pendrive (2026-07-14)

El problema: el rootfs de esta imagen es un initramfs = RAM pura. Los logs iban a /run (tmpfs): al apagar la máquina ajena no sobrevivía nada. Y la GPU a probar está lejos — un viaje sin datos es un viaje perdido.

La solución: la imagen ahora trae una 2da partición FAT32 MIRADALOG (512M, DATA_MB en scripts/metal-usb-sdboot.sh, que ganó soporte genérico de partición de datos). FAT32 a propósito: el pendrive se lee después desde cualquier SO (Windows/Mac/Linux) sin herramientas.

/sbin/init la monta por findfs LABEL=MIRADALOG con -o sync (cada escritura va al medio: un cuelgue duro de la GPU o un corte de luz no se lleva los logs) y vuelca todo en run-NNNN/ (numerada: cada arranque/reintento tiene su carpeta):

ficheroqué trae
00-resumen.txtmodo (hw/sw), cmdline, GPU+driver, DRM, si la telemetría persiste
01-hardware.txtuname, cpu, RAM, PCI vía sysfs (vendor/device/class/driver), módulos, /dev/dri, nouveau sysfs, input, firmware nvidia presente
02-pantallas.txtpor conector: status/modes/enabled
03-dmesg-early.txtdmesg antes de mirada → si nouveau bindeó y si el firmware gp106 cargó
04-seatd.logseatd (DRM master / sesión)
05-mirada.logcompositor + greeter, con RUST_LOG=wgpu_core=debug,wgpu_hal=debug + EGL_LOG_LEVEL=debug + LIBGL_DEBUG=verbose ⇒ por qué wgpu eligió el backend y si hay float16
06-dmesg-final.txtdmesg después + exit code → cuelgues/oops/reset de nouveau
07-estado-final.txtprocesos, RAM, /dev/dri al final

GOTCHA: el busybox de Alpine no trae el applet lspci (sí findfs/blkid). El dump de PCI se hace leyendo /sys/bus/pci/devices/*/{vendor,device,class} + readlink driver — más soberano igual. vendor 0x10de = NVIDIA; class 0x0300* = VGA.

En la máquina ajena: arranca solo. Si el compositor termina/falla, cae a un shell de rescate con la telemetría ya sincronizada; relanzar reintenta y crea un run-NNNN nuevo. Se puede apagar sin ceremonia.

Al volver: montar la partición MIRADALOG y leer run-NNNN/.