mirada-usb: force_gpt en la cmdline + post-mortem del viaje NVIDIA

El firmware del tester reparo el GPT dd-eado en el POST y dejo el header
primario invalido (entradas apuntadas a LBA 2016, presentes en LBA 2):
Linux sin gpt en cmdline no cae al respaldo, no vio particiones y la
telemetria MIRADALOG murio en RAM. Con gpt el kernel usa el respaldo.
Documentado: greeter por nouveau GL validado en metal; input muerto queda
abierto con el plan de evidencia para el proximo viaje.
This commit is contained in:
2026-07-16 12:16:04 -04:00
parent 71ec92345f
commit 0f6c841782
2 changed files with 32 additions and 1 deletions
+25
View File
@@ -50,6 +50,31 @@ Pascal **no** usa GSP (eso es Turing+). La imagen hornea el firmware de acelerac
llvmpipe/lavapipe sobre simpledrm: el **compositor** arranca seguro; el **greeter no completa**
(los rasterizadores software no dan float16). Útil si nouveau diera problemas.
## Post-mortem del primer viaje (GTX 1060, 2026-07-16)
**Qué se vio en el metal:** booteó, el fondo animado del greeter pintó bien (⇒ nouveau GL +
float16 VALIDADOS end-to-end), pero **sin input** (ni teclado ni mouse) y el pendrive volvió
**sin telemetría** (partición MIRADALOG vacía).
**Por qué se perdió la telemetría (resuelto):** el GPT de respaldo de la imagen dd-eada queda en el
*medio* del pendrive (al final de la imagen, no del disco) y el firmware de la máquina lo "reparó" en
el POST: reconstruyó el respaldo al final del disco (bien) y reescribió el header primario apuntando
las entradas a LBA 2016 **sin copiarlas ahí** (quedaron en LBA 2) ⇒ CRC inválido. Linux **no** cae al
GPT de respaldo con el primario roto salvo `gpt` en la cmdline (`block/partitions/efi.c`, `force_gpt`)
⇒ cero particiones ⇒ `findfs LABEL=MIRADALOG` falló ⇒ logs sólo en RAM. UEFI y Windows sí usan el
respaldo — por eso el stick booteaba y Windows lo leía, mientras Linux no veía `sdX1/sdX2`.
**Fix:** la cmdline por defecto ahora lleva `gpt`. Si un stick ya quedó mutilado: el header primario
se repara apuntando `partition_entry_lba` de vuelta a 2 y recomputando su CRC (o `gdisk` menú
recovery, opción `c` = load backup partition table + `w`).
**Input muerto (abierto):** nunca se validó — la validación QEMU fue `-display none`. Sospechosos, en
orden: enumeración libinput sobre `libudev-zero` (¿0 dispositivos?), falta de nodos `/dev/input/event*`
(el kernel generic trae usbhid/evdev built-in, debería haberlos), foco. El próximo viaje ya trae la
evidencia: `01-hardware.txt` snapshotea `/proc/bus/input/devices` (lado kernel) y mirada ahora loguea
cada `DeviceAdded` de libinput con nombre y capacidades (lado userspace, va al `05-mirada.log`) —
commit en tawasuyu `mirada-compositor/src/drm_backend/input.rs`. Con telemetría persistente funcionando,
ese par de archivos separa kernel vs udev vs foco.
## Pendiente / deuda
- **Confirmar en el metal**: el camino nouveau-GL sólo se puede validar en la 1060 real (QEMU no tiene
+7 -1
View File
@@ -389,9 +389,15 @@ if [ "$PACKAGE" = "1" ]; then
# sin esta partición no sobrevive ni un log al apagado — y la GPU a probar está en otra máquina, lejos.
# El init la monta por LABEL=MIRADALOG con -o sync y vuelca ahí todo (ver /sbin/init).
# FAT32 ⇒ el pendrive se lee después desde cualquier SO, sin herramientas.
# `gpt` (force_gpt): la imagen dd-eada deja el GPT de respaldo en el MEDIO del disco (fin de la
# imagen, no del pendrive) y hay firmwares UEFI que lo "reparan" en el POST — reescriben el header
# primario apuntando las entradas a otro LBA sin copiarlas ⇒ primario INVÁLIDO. Linux, sin `gpt`,
# NO cae al respaldo con primario roto (block/partitions/efi.c) ⇒ cero particiones ⇒ findfs no ve
# MIRADALOG y la telemetría muere en RAM (pasó en el tester NVIDIA, 2026-07-16). Con `gpt` el kernel
# usa el respaldo y la telemetría sobrevive incluso con el primario mutilado.
ROOTFS="$RFS" KERNEL="$KGEN" IMG="work/hammer-mirada-usb.img" \
DATA_MB="${DATA_MB:-512}" DATA_LABEL="MIRADALOG" \
OPTIONS="${CMDLINE:-console=tty0 loglevel=4}" \
OPTIONS="${CMDLINE:-console=tty0 loglevel=4 gpt}" \
scripts/metal-usb-sdboot.sh
echo ""
echo "✓ imagen: work/hammer-mirada-usb.img"