fix(armador): el fichero unico que no entra en RAM ya no se lleva puesto el USB
Los dos medios de una variante son INDEPENDIENTES y el primero tiene un techo fisico que el segundo no tiene: el autoextraible carga el instalador ENTERO en RAM —ahi viven a la vez el initramfs comprimido y su contenido— asi que se niega por encima del 40 % de la memoria. Con el firmware adentro (1047 MiB) el rootfs de mirada pasa de 3 GiB y esa negativa es CORRECTA. Lo que estaba mal era que su `exit 1` abortaba el bucle ANTES de armar la imagen USB, que no tiene ese limite porque corre desde el propio medio. Medido hoy: el hub tiene 7,7 GiB de RAM ⇒ el tope son ~3,1, y el medio de mirada no entra. El resultado habria sido «el armado fallo» sin ningun medio, teniendo el que importa a un paso. Ahora el bloque del fichero unico va en un subshell —su exit muere ahi—, se avisa con el motivo y se limpia su arbol local. El USB sigue siendo fatal: ese es el medio que alguien esta esperando. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Delta semántico
Ninguna definición cambió: el cambio es de texto, documentación o datos.
1 archivos · +15 −0
diff --git a/scripts/instalador-variantes.sh b/scripts/instalador-variantes.sh
index 2eee86e0..38e4d86a 100755
--- a/scripts/instalador-variantes.sh
+++ b/scripts/instalador-variantes.sh
@@ -237,6 +237,17 @@ for v in $VARIANTES; do
echo "════ $v ════════════════════════════════════════════════════════════════════════"
if echo " $(medios_de "$v") " | grep -q ' run '; then
+ # ⚠ **El fichero único y el USB son DOS MEDIOS INDEPENDIENTES, y el primero tiene un techo
+ # físico que el segundo no tiene.** El autoextraíble carga el instalador ENTERO en RAM —en RAM
+ # viven a la vez el initramfs comprimido y su contenido— así que su generador se niega por
+ # encima del 40 % de la memoria. Con el firmware adentro (1047 MiB) el rootfs pasa de 3 GiB y
+ # esa negativa es CORRECTA; lo que estaba mal era que `exit 1` se llevaba puesto el USB, que no
+ # tiene ese límite porque corre desde el propio medio. Medido el 2026-10-15: el hub tiene
+ # 7,7 GiB de RAM ⇒ el tope son ~3,1, y el medio de mirada no entra.
+ #
+ # Va en un subshell para que su `exit 1` muera ahí y no en el bucle. Y el USB sigue siendo
+ # fatal: ése es el medio que alguien está esperando.
+ (
echo " ── el fichero que se baja (.sh) — perfiles: $(perfiles_de "$v" run)"
compone "$v" run
ROOTFS="$L" KERNEL="$KERNEL" SALIDA="$SALIDA/paquete-$v" ./scripts/instalador-paquete.sh \
@@ -247,6 +258,10 @@ for v in $VARIANTES; do
echo " ✗ falló el autoextraíble — ver work/.variante-$v-run.log" >&2; tail -6 "work/.variante-$v-run.log" >&2; exit 1; }
echo " $SALIDA/takana-instalador-$v.sh $(( $(wc -c < "$SALIDA/takana-instalador-$v.sh") / 1048576 )) MiB"
rm -rf "$L"
+ ) || {
+ echo " ⚠ el fichero único no se pudo armar (lo de arriba dice por qué): SIGO con el USB" >&2
+ rm -rf "$LOCAL/$v-run" 2>/dev/null || sudo rm -rf "$LOCAL/$v-run" 2>/dev/null || true
+ }
else
echo " ── sin fichero único: este rootfs no entra en RAM en una máquina normal (sólo USB)"
fi