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.
Delta semántico
Ninguna definición cambió: el cambio es de texto, documentación o datos.
3 archivos · +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>