imagen: el navegador arranca en la imagen booteada y NO PINTA VENTANA — medido, con lo descartado
Primera prueba de `atuq` dentro de una imagen de disco arrancada, y el resultado no es el de la jaula. La cadena previa funcionó, y eso también es medición: el perfil `escritorio-cosmic` hidratado con el cierre de hoy (275 nodos, 8,4 G) trae `/usr/bin/atuq`, `/usr/bin/llama-server` y el modelo — declarar en el perfil SÍ pone las cosas en la imagen—, la imagen EFI de 12 G arranca en QEMU y COSMIC pinta panel y dock en ~2 min. Y `atuq` arranca —sus extensiones inician, la del foco sondea cada minuto, WebRender inicializa— sin que la ventana aparezca nunca. Descartado, para que nadie lo repita: no es el sandbox de Gecko (relanzado con los cinco MOZ_DISABLE_* puestos, idéntico), no es que el proceso muera (sigue ejecutando el JS de las extensiones), y no es la IA (pasa con about:blank). La pista: bajo sway headless el MISMO artefacto pinta perfecto y hay capturas del panel contestando. La diferencia son el compositor (cosmic-comp+llvmpipe contra sway+pixman) y el arranque real contra bwrap. Es su propia unidad de trabajo, no un parche apurado. ⚠ La lección del método: quince guardianes en verde, `vigia-imagen.py` en ✓, y el navegador igual no se puede usar en la imagen. «Sella», «hidrata» y «los tests pasan» son tres cosas distintas de «arranca y se ve». De paso, `metal-iso.sh` acepta ahora STORE y AUG por entorno, porque en esta máquina no funcionaba: arma el rootfs con `cp -al` desde el store y el store es un BIND-MOUNT del volumen — `linkat` rechaza cruzar mounts aunque sea el mismo disco, así que hay que nombrar los dos lados dentro del mismo mount. Es la cuarta vez que aparece el mismo EXDEV hoy.
This commit is contained in:
+18
-5
@@ -17,22 +17,35 @@
|
||||
set -eu
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"; cd "$ROOT"
|
||||
|
||||
# ⚠ STORE se puede apuntar a la ruta REAL del store, y en esta máquina hace falta. Este script arma
|
||||
# el rootfs con `cp -al` —hardlinks, para no copiar gigabytes— y `linkat` **rechaza cruzar mounts**
|
||||
# aunque sean el mismo disco. El store está bind-mounteado en `./store` desde el volumen, así que
|
||||
# con el default nada enlaza: hay que nombrar los dos lados dentro del MISMO mount.
|
||||
# STORE=/mnt/cosecha/store AUG=/mnt/cosecha/metal-rootfs scripts/metal-iso.sh
|
||||
STORE="${STORE:-store}"
|
||||
|
||||
if [ -n "${PRODUCT:-}" ]; then
|
||||
PDIR=$(ls -d store/"${PRODUCT#b3:}"*-product-rootfs 2>/dev/null | head -1)
|
||||
PDIR=$(ls -d "$STORE"/"${PRODUCT#b3:}"*-product-rootfs 2>/dev/null | head -1)
|
||||
else
|
||||
PDIR=$(ls -dt store/*-product-rootfs 2>/dev/null | head -1)
|
||||
PDIR=$(ls -dt "$STORE"/*-product-rootfs 2>/dev/null | head -1)
|
||||
fi
|
||||
[ -n "${PDIR:-}" ] && [ -d "$PDIR" ] || { echo "no encuentro product-rootfs (corré 'hammer bootstrap product')" >&2; exit 1; }
|
||||
|
||||
KERNEL="${KERNEL:-$(ls -dt store/*-linux-metal/boot/bzImage 2>/dev/null | head -1)}"
|
||||
KERNEL="${KERNEL:-$(ls -dt "$STORE"/*-linux-metal/boot/bzImage 2>/dev/null | head -1)}"
|
||||
[ -n "${KERNEL:-}" ] && [ -r "$KERNEL" ] || { echo "no encuentro el kernel metal (build recipes/linux-metal.toml)" >&2; exit 1; }
|
||||
|
||||
WPADIR=$(ls -dt store/*-wpa_supplicant/usr/sbin 2>/dev/null | head -1)
|
||||
WPADIR=$(ls -dt "$STORE"/*-wpa_supplicant/usr/sbin 2>/dev/null | head -1)
|
||||
[ -n "${WPADIR:-}" ] || { echo "no encuentro wpa_supplicant (build recipes/wpa_supplicant.toml)" >&2; exit 1; }
|
||||
|
||||
ISO="${ISO:-work/hammer-metal.iso}"
|
||||
CMDLINE="${CMDLINE:-console=ttyS0,115200 console=tty0 rdinit=/init}"
|
||||
AUG="work/metal-rootfs"
|
||||
# ⚠ AUG se puede mover, y en esta máquina HAY QUE MOVERLO. El rootfs se arma con `cp -al` desde el
|
||||
# store —hardlinks, para no copiar gigabytes— y el store es un **bind-mount del volumen**: `linkat`
|
||||
# rechaza cruzar mounts aunque sea el mismo disco, así que con el default en `work/` esto muere con
|
||||
# `Invalid cross-device link` en el primer fichero. Con AUG en el mismo filesystem que el store,
|
||||
# los hardlinks vuelven a funcionar y no se copia nada.
|
||||
# AUG=/mnt/cosecha/metal-rootfs scripts/metal-iso.sh
|
||||
AUG="${AUG:-work/metal-rootfs}"
|
||||
|
||||
echo "==> product-rootfs : $PDIR"
|
||||
echo "==> kernel metal : $KERNEL"
|
||||
|
||||
Reference in New Issue
Block a user