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 188Rust 55Shell 30Markdown 281211 Definiciones

mirada-usb: el overlay de mesa pisaba libudev-zero con el libudev de eudev — input muerto en el tester NVIDIA

Causa raíz del viaje 2026-07-16 (pantalla viva, teclado/mouse muertos): el apk
de mesa arrastra eudev-libs y el 'cp *.so*' del overlay pisaba el libudev.so.1
de libudev-zero. Sin udevd, el libudev de eudev no expone ID_INPUT y libinput
ignora TODOS los dispositivos en silencio; la GPU no lo delata porque smithay
la encuentra por syspath. Reproducido y verificado A/B en QEMU (usb-kbd):
eudev = 0 dispositivos; libudev-zero = 5 y Ctrl+Alt+BackSpace corta el
compositor al instante.

- 5c-bis: restaurar libudev-zero tras el overlay + aserción cmp (regresión = build roto)
- MIRADA_DEBUG_DIR → run-NNNN del pendrive (eventos.log y panics ya no mueren en RAM)
- imagen re-empaquetada con el fix + gpt en la cmdline

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

81a5d8d74656fea3c76effeb87400c7ce7343d44 · por sergio · (hace 3 meses) · padre 2d1d40a6f · ver el árbol en este commit

Delta semántico

Ninguna definición cambió: el cambio es de texto, documentación o datos.

1 archivos · +19 −0

diff --git a/scripts/mirada-usb.sh b/scripts/mirada-usb.sh
index 66083b88..0312d2d3 100644
--- a/scripts/mirada-usb.sh
+++ b/scripts/mirada-usb.sh
@@ -174,6 +174,22 @@ for round in 1 2 3; do
   done
 done
 
+# 5c-bis) libudev = SIEMPRE el de libudev-zero. El apk de mesa arrastra `eudev-libs` y el overlay de
+#   arriba (`cp *.so*`) PISA el libudev.so.1 de libudev-zero con el de eudev. Sin udevd corriendo, el
+#   libudev de eudev enumera CERO dispositivos de entrada (no hay ID_INPUT sin la db de udevd) y
+#   libinput los ignora EN SILENCIO ⇒ pantalla viva, teclado y mouse muertos. Es EXACTAMENTE lo que
+#   pasó en el tester NVIDIA (2026-07-16); reproducido y verificado A/B en QEMU (usb-kbd: eudev = 0
+#   dispositivos; libudev-zero = 5 y Ctrl+Alt+BackSpace corta el compositor). La GPU no lo delata:
+#   smithay la encuentra por syspath, sin propiedades udev — por eso "grafica bien" no salva al input.
+UZ=$(resolve libudev-zero)
+[ -n "$UZ" ] || { echo "✗ libudev-zero no está en el store" >&2; exit 1; }
+echo "==> libudev.so.1 ← libudev-zero (pisa el de eudev que arrastró el apk de mesa)"
+rm -f "$RFS/usr/lib/libudev.so.1" "$RFS/usr/lib/libudev.so.1."*   # el de eudev + sus versionados (.so.1.6.3)
+cp -L "$STORE/$UZ-libudev-zero/usr/lib/libudev.so.1" "$RFS/usr/lib/libudev.so.1"
+chmod 755 "$RFS/usr/lib/libudev.so.1"
+cmp -s "$STORE/$UZ-libudev-zero/usr/lib/libudev.so.1" "$RFS/usr/lib/libudev.so.1" \
+  || { echo "✗ el libudev.so.1 del rootfs NO es el de libudev-zero — input muerto garantizado" >&2; exit 1; }
+
 # 5d) FIRMWARE nouveau (aceleración 3D). Pascal/Maxwell2 (GP10x/GM20x) piden los blobs firmados de
 #   ctxsw (gr/) + acr/sec2 para dar GL por hardware; sin ellos nouveau da display pero NO 3D ⇒ el
 #   greeter caería a software (sin float16). Turing+ (RTX) piden ADEMÁS gsp/. CHIP=gp106 para la GTX
@@ -232,6 +248,9 @@ while [ -d "$LOG/run-$(printf %04d $N)" ]; do N=$((N+1)); done
 RUN="$LOG/run-$(printf %04d $N)"
 /bin/busybox mkdir -p "$RUN"
 echo "  ## telemetría → $RUN  (persistente=$TELOK)"
+# La bitácora interna del compositor (dlog → eventos.log + reportes de panic) también al pendrive:
+# sin esto caía en ~/.local/state (RAM) y un viaje sin datos es un viaje perdido.
+export MIRADA_DEBUG_DIR="$RUN"
 
 snap() { # snap <fichero> <titulo> <comando…>
   local f="$RUN/$1"; shift; local t="$1"; shift