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 1184Shell 70Rust 62Markdown 501503 Definitions

fix(arje): la caja perdia el volumen de trabajo en cada arranque por el blkid equivocado

Sintoma, reportado asi: "no se por que todo se borra solo por reiniciar, que
verga de distro". No era la distro y no se borraba nada.

En esta caja /work/sergio es un bind a /vvv/sergio, y /vvv es el volumen con
LABEL=trabajo (255 G). Lo monta la card montar-trabajo, que es la segunda
entrada del genesis. Tras el primer reinicio en meses NO monto, y sin ese bind
/work/sergio cae al directorio de ABAJO -- otra particion, con una copia vieja
del 18-sep. Desde afuera se ve exactamente como si la maquina se hubiera comido
los archivos: faltaban los binarios puestos el 21-sep y hasta un wrapper habia
"vuelto" a su version vieja. Estaban todos intactos en el volumen, detras de un
montaje que no se hizo.

La causa es una linea. La card resolvia el disco con

    d=$(blkid -L trabajo 2>/dev/null); test -n "$d" || ...

y en esta caja hay DOS blkid: /sbin/blkid (util-linux, 2,1 M) que contesta
/dev/sdb, y /usr/sbin/blkid (112 K) cuyo -L imprime una TABLA CON ENCABEZADO. El
PATH de la card es /usr/sbin:/usr/bin:/sbin:/bin, asi que gana el segundo, $d se
lleva la tabla entera, y `test -n` la da por buena porque no esta vacia. Lo que
llego a mount fue "device fs_type label mount point UUID" y una linea de
guiones. Medido con el PATH exacto de la card: lo viejo da por bueno la tabla,
lo nuevo resuelve a /dev/sdb.

El arreglo son las dos mitades:

  · `findfs LABEL=trabajo`, que es LA herramienta para esto y devuelve el
    devname a secas, con /sbin/blkid como respaldo por si falta.
  · `test -b` en lugar de `test -n`. Esta es la que importa: un nombre de
    dispositivo que no es un dispositivo de bloque no puede pasar la guarda. Con
    `test -n` cualquier basura no vacia pasaba, y el error terminaba siendo un
    mensaje de mount ilegible en vez de "aca no hay disco".

El mensaje de falla ahora dice QUE vino en $d, que es lo unico que hubiera
hecho evidente el defecto en vez de mandarlo a mirar el cable del volumen.

Certificado con su brazo de control: con una etiqueta inexistente se planta
limpio en vez de seguir. Instalado en los tres lugares donde vive la card -- el
repo, /etc/arje/cards.d, y el seed embebido en /ente/seed.card.json, que es el
que corre en el boot y el unico que arregla el proximo arranque. El seed se
valido antes con el parser del init (arje-zero --attest-check) y quedo
respaldado en seed.card.json.antes-de-findfs-20260925.

09217e4a7648d10b1701b7265f11340e0fad941c · by Sergio · (27 d ago) · parent b9e542306 · browse the tree at this commit

Semantic delta

No definition changed: this change is text, documentation or data.

1 files · +2 −2

diff --git a/scripts/servidor/cards/montar-trabajo.json b/scripts/servidor/cards/montar-trabajo.json
index e7f76dc1..28c1336f 100644
--- a/scripts/servidor/cards/montar-trabajo.json
+++ b/scripts/servidor/cards/montar-trabajo.json
@@ -55,8 +55,8 @@
       "argv": [
         "sh",
         "-c",
-        "mkdir -p /run/user; chmod 1777 /run/user; for h in /home/*; do u=$(basename $h); id -u $u >/dev/null 2>&1 || continue; mkdir -p /run/user/$(id -u $u); chown $u /run/user/$(id -u $u); chmod 700 /run/user/$(id -u $u); done; d=$(blkid -L trabajo 2>/dev/null); test -n \"$d\" || { echo montar-trabajo: ningun disco con LABEL=trabajo — el volumen no esta enchufado >&2; exit 78; }; mkdir -p /vvv; grep -q  /vvv  /proc/mounts || mount \"$d\" /vvv || { echo montar-trabajo: no pude montar el volumen >&2; exit 78; }; test -d /vvv/sergio || exit 0; mkdir -p /work/sergio; grep -q  /work/sergio  /proc/mounts || mount --bind /vvv/sergio /work/sergio; echo \"montar-trabajo: /vvv $(df -h /vvv | awk NR==2{print }) libres\""
+        "mkdir -p /run/user; chmod 1777 /run/user; for h in /home/*; do u=$(basename $h); id -u $u >/dev/null 2>&1 || continue; mkdir -p /run/user/$(id -u $u); chown $u /run/user/$(id -u $u); chmod 700 /run/user/$(id -u $u); done; d=$(findfs LABEL=trabajo 2>/dev/null) || d=\"\"; [ -b \"$d\" ] || d=$(/sbin/blkid -L trabajo 2>/dev/null) || d=\"\"; test -b \"$d\" || { echo montar-trabajo: ningun disco con LABEL=trabajo — el volumen no esta enchufado >&2; exit 78; }; mkdir -p /vvv; grep -q  /vvv  /proc/mounts || mount \"$d\" /vvv || { echo montar-trabajo: no pude montar el volumen >&2; exit 78; }; test -d /vvv/sergio || exit 0; mkdir -p /work/sergio; grep -q  /work/sergio  /proc/mounts || mount --bind /vvv/sergio /work/sergio; echo \"montar-trabajo: /vvv $(df -h /vvv | awk NR==2{print }) libres\""
       ]
     }
   }
-}
\ No newline at end of file
+}