tawasuyu

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 1574Shell 204Rust 111Markdown 993763 Definiciones

🪵 cosmic: el log de MI validación viajaba horneado en el USB, y la salida salía doble

Dos defectos que juntos hicieron ilegible el 3er viaje.

1. LOG CONTAMINADO. Los logs de sesión van a disco para sobrevivir al apagón en
   metal — bien— pero validar la imagen en QEMU ESCRIBE DENTRO DEL FICHERO DE
   IMAGEN, y después se quema. El usuario grepeó /var/log/cosmic en su máquina y
   leyó `drm=virtio-pci`: mi corrida en QEMU, no la suya. Un log viejo que parece
   nuevo es peor que no tener log.
   Fix: la imagen crea /var/log/cosmic VACÍO como último paso. Y la regla —validar
   sobre una COPIA, o regenerar antes de quemar— queda escrita donde se comete.

2. SALIDA DOBLE. `say` tee'aba a /dev/console siempre. Lanzado a mano desde el
   getty, stdout YA es la pantalla, y /dev/console es tty0 = la MISMA pantalla
   cuando el cmdline llega vacío (la firmware del OptiPlex no aplica el
   CONFIG_CMDLINE horneado). Cada línea salía dos veces, entreverada con lo que
   arje-zero escribe a consola. Eso es lo que se leía como «basura de init»: no era
   ruido ajeno, era el propio script. Ahora /dev/console sólo si `[ -t 1 ]` es falso.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

77f8b3e3ec05c2d09dd23da1b118d8ecbd41e731 · por sergio · (hace 2 meses) · padre 1284349ee · ver el árbol en este commit

Delta semántico

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

2 archivos · +16 −1

diff --git a/scripts/cosmic/cosmic-start.sh b/scripts/cosmic/cosmic-start.sh
index 76cbf8b6..4e167fb5 100755
--- a/scripts/cosmic/cosmic-start.sh
+++ b/scripts/cosmic/cosmic-start.sh
@@ -34,7 +34,12 @@ LOG=/var/log/cosmic
 mkdir -p "$LOG" 2>/dev/null
 [ -d "$LOG" ] && [ -w "$LOG" ] || LOG=/tmp
 
-say()   { echo "== cosmic :: $*" | tee -a /dev/console /dev/ttyS0 "$LOG/cosmic-start.log" 2>/dev/null; }
+# /dev/console SÓLO si nuestro stdout no es ya un terminal. Si el script lo lanzás a mano desde el
+# getty, stdout ES la pantalla y /dev/console (=tty0 cuando el cmdline llega vacío, como en la
+# firmware del OptiPlex) es LA MISMA pantalla ⇒ cada línea salía DOS VECES, entreverada con lo que
+# arje-zero escribe a la consola. Eso es lo que se leía como «basura»: no era ruido ajeno, era esto.
+[ -t 1 ] && CONS="" || CONS=/dev/console
+say()   { echo "== cosmic :: $*" | tee -a $CONS /dev/ttyS0 "$LOG/cosmic-start.log" 2>/dev/null; }
 # `dump` iba SÓLO al serial, y ahí se perdió la explicación de los tres fallos de la primera corrida
 # en la imagen de metal: sin puerto serie, los volcados se escriben a la nada. Ahora también a disco.
 dump()  { { echo "---- $1 ----"; cat "$1" 2>/dev/null; } | tee -a /dev/ttyS0 "$LOG/cosmic-start.log" >/dev/null 2>&1; }
diff --git a/scripts/cosmic/metal-desktop-image.sh b/scripts/cosmic/metal-desktop-image.sh
index 76a0ab10..18212bdc 100755
--- a/scripts/cosmic/metal-desktop-image.sh
+++ b/scripts/cosmic/metal-desktop-image.sh
@@ -253,6 +253,16 @@ cat > "$MERGED/etc/motd" <<'MOTD'
 
 MOTD
 
+# ── /var/log/cosmic VACÍO, y no es un detalle ───────────────────────────────────────────────────
+# Los logs de la sesión van a disco (para que sobrevivan al apagón en metal), pero eso crea una
+# trampa: si se valida la imagen arrancándola en QEMU, esa corrida ESCRIBE DENTRO DEL FICHERO DE
+# IMAGEN, y al quemarla el USB se lleva el log de la prueba. Pasó: el usuario grepeó el log en metal
+# y leyó `drm=virtio-pci` — mi corrida en QEMU, no la suya. Un log viejo que parece nuevo es peor que
+# no tener log.
+# REGLA: validar sobre una COPIA de la imagen, o regenerarla antes de quemar. Esto es el cinturón.
+rm -rf "$MERGED/var/log/cosmic"
+install -d -m 755 "$MERGED/var/log/cosmic"
+
 mkdir -p "$MERGED/root/.config" "$MERGED/root/.cache" "$MERGED/run/user/0" "$MERGED/tmp"
 chmod 1777 "$MERGED/tmp"