From 81a5d8d74656fea3c76effeb87400c7ce7343d44 Mon Sep 17 00:00:00 2001 From: sergio Date: Thu, 16 Jul 2026 13:02:17 -0400 Subject: [PATCH] =?UTF-8?q?mirada-usb:=20el=20overlay=20de=20mesa=20pisaba?= =?UTF-8?q?=20libudev-zero=20con=20el=20libudev=20de=20eudev=20=E2=80=94?= =?UTF-8?q?=20input=20muerto=20en=20el=20tester=20NVIDIA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- scripts/mirada-usb.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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 local f="$RUN/$1"; shift; local t="$1"; shift