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 815Rust 56Shell 37Markdown 291229 Definitions

el .run: mirar ya no deja 137 MiB tirados, y la página no congela un hash que va a mentir

Dos cosas que sólo se ven corriendo el fichero publicado de verdad, bajado del sitio:

⚠ `exec` SE LLEVA PUESTO EL `trap`. Las ramas --check y --survey eran `exec "$TK" metal …` y
dejaban los 137 MiB desempaquetados en el disco después de CADA MIRADA — y son justamente los
dos comandos que alguien corre varias veces antes de decidirse. Medido: 141 MiB en /tmp tras un
solo --check. En una máquina con la raíz chica eso no se degrada: se llena y la tira.
Comprobado en los dos sentidos contra el fichero servido por HTTPS.

Y el sha256 estaba PEGADO en index.html. Habría empezado a mentir en el primer rebuild, que es
exactamente el modo de fallo que el README del sitio ya avisa para la sección «las decisiones».
La página muestra ahora el comando (`sha256sum -c`) y el número lo sirve el fichero de al lado,
que se regenera junto al .run.

0808b47da5fd0e7c10b3e75e6448e16ae851280b · by Sergio · (28 d ago) · parent 83ea2e120 · browse the tree at this commit

Semantic delta

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

3 files · +18 −7

diff --git a/scripts/instalador-autoextraible.sh b/scripts/instalador-autoextraible.sh
index d47b3069..1c7af910 100755
--- a/scripts/instalador-autoextraible.sh
+++ b/scripts/instalador-autoextraible.sh
@@ -175,9 +175,14 @@ fi
 TK="\$DIR/takana"
 [ -x "\$TK" ] || morir "el payload no trae un 'takana' ejecutable"
 
+# ⚠ **Sin \`exec\`, y no es un detalle de estilo: \`exec\` se lleva puesto el \`trap\`.** Estas dos
+# ramas eran \`exec "\$TK" metal …\` y dejaban los \$PAYLOAD_MIB MiB desempaquetados tirados en el
+# disco DESPUÉS DE CADA MIRADA — y \`--check\`/\`--survey\` son justamente los que alguien corre
+# varias veces antes de decidirse. Medido acá el 2026-09-23: 141 MiB en /tmp tras un \`--check\`.
+# En una máquina con la raíz chica eso no se degrada: se llena y la tira.
 case "\$MODO" in
-    check)  exec "\$TK" metal check ;;
-    survey) exec "\$TK" metal survey ;;
+    check)  set +e; "\$TK" metal check;  RC=\$?; set -e; exit "\$RC" ;;
+    survey) set +e; "\$TK" metal survey; RC=\$?; set -e; exit "\$RC" ;;
 esac
 
 # ── el camino completo ────────────────────────────────────────────────────────────────────────
diff --git a/web/takana-os.net/README.md b/web/takana-os.net/README.md
index e9cdfe2e..f688d226 100644
--- a/web/takana-os.net/README.md
+++ b/web/takana-os.net/README.md
@@ -47,9 +47,15 @@ cp work/takana-instalador.run /work/sergio/descargas/
 ( cd /work/sergio/descargas && sha256sum takana-instalador.run > takana-instalador.run.sha256 )
 ```
 
-El `.sha256` que se publica al lado es **el del fichero entero**, para comprobar la descarga. Es
-distinto del que el `.run` lleva adentro, que es el **del payload** y lo verifica él solo antes de
-desempaquetar (`./takana-instalador.run --sha256` lo imprime).
+El `.sha256` que se publica al lado es **el del fichero entero**, para comprobar la descarga
+(`sha256sum -c takana-instalador.run.sha256`). Es distinto del que el `.run` lleva adentro, que es
+el **del payload** y lo verifica él solo antes de desempaquetar (`./takana-instalador.run --sha256`
+lo imprime).
+
+⚠ **El hash NO se escribe en `index.html`, y es deliberado.** La primera versión lo traía pegado en
+la página y habría empezado a mentir en el primer rebuild — que es el modo de fallo que este mismo
+README ya avisa para la sección «las decisiones». La página muestra el comando; el número lo sirve
+el fichero de al lado, que se regenera junto al `.run`.
 
 ⚠ `/descargas` queda **fuera del `encode`** del vhost: el `.run` ya viene comprimido, y volver a
 comprimirlo por HTTP gasta CPU en cada descarga sin ahorrar un byte.
diff --git a/web/takana-os.net/index.html b/web/takana-os.net/index.html
index f3ca8f3f..b47e2d80 100644
--- a/web/takana-os.net/index.html
+++ b/web/takana-os.net/index.html
@@ -256,8 +256,8 @@ footer.pie{border-top:1px solid var(--linea);background:var(--papel);padding:2.6
   <a class="url" href="/descargas/takana-instalador.run">takana-os.net/descargas/takana-instalador.run</a>
  </div>
 
-<pre><span class="p">$</span> curl -s https://takana-os.net/descargas/takana-instalador.run.sha256
-d4c97c71cd471343ac8ad430457dbe707018a084ce99b72b8ed484f1b4674875  takana-instalador.run</pre>
+<pre><span class="p">$</span> curl -sO https://takana-os.net/descargas/takana-instalador.run.sha256
+<span class="p">$</span> sha256sum -c takana-instalador.run.sha256</pre>
 
  <p class="nota">
   <span data-l="es">El fichero verifica su propio contenido antes de desempaquetarlo, y si la máquina no tiene con qué calcular un sha256 lo <em>dice</em> en vez de saltárselo en silencio. Con <code>--check</code> y <code>--survey</code> mira y no toca nada; con <code>--extraer DIR</code> sólo se desempaqueta, para leer antes de correr. Hace falta un firmware UEFI y una partición de al menos 2 GiB que se pueda perder; nada más se modifica.</span>