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>
This commit is contained in:
2026-07-16 13:02:17 -04:00
co-authored by Claude Fable 5
parent 2d1d40a6f1
commit 81a5d8d746
+19
View File
@@ -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