250 líneas de comentario en 151 scripts. Control verificado: el diff no toca NI UNA línea que no empiece por #, y la sintaxis de los 151 pasa. El barrido saltea heredocs y cadenas triples, y el guardián DISPARÓ 3 veces: las tres eran el MOTD que el script escribe DENTRO de la imagen construida — texto del producto, no comentario del script. Se cambiaron aparte y a propósito, que es rebranding, no limpieza. Y el hallazgo caro: casaba contra , que es el TARGET de tracing — o sea el module_path!, o sea el nombre del crate. La etapa 4 lo movió a y el script quedó casando NADA. No fallaba: imprimía cero atribuciones, indistinguible de un log sin problemas. Comprobado con el binario (RUST_LOG=info sobre zlib), no deducido. Ahora acepta las dos, y tiene que seguir aceptándolas porque los logs viejos en disco dicen la vieja. Además 14 rutas de módulo en docs, que el barrido anterior no tocó porque no es frontera de palabra.
54 lines
2.8 KiB
Bash
Executable File
54 lines
2.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# iso-boot-test.sh — valida E5 (medio live): arma el ISO 9660 / El Torito con scripts/iso-image.sh y lo
|
|
# arranca en QEMU desde el CD (sin -kernel ni disco), comprobando que la cadena El Torito → GRUB →
|
|
# kernel → initramfs → /init → producto funciona ENTERA desde RAM. El xorriso que arma el ISO es el
|
|
# construido por takana (recipes/xorriso.toml), así que el test dogfooda también esa receta.
|
|
#
|
|
# Asserts: (1) GRUB arrancó del El Torito; (2) el marcador del /init live; (3) arje-zero PID1 vivo;
|
|
# (4) sshd escuchando — i.e. el PRODUCTO llega a servicio corriendo enteramente desde el medio live.
|
|
#
|
|
# Uso: PRODUCT=<hash-o-prefijo> ./scripts/iso-boot-test.sh
|
|
# (default: el product-rootfs más reciente del store)
|
|
# Vars: KERNEL MEM (def 4096) KVM (def 1) DEADLINE (def 120)
|
|
set -euo pipefail
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"; cd "$ROOT"
|
|
KERNEL="${KERNEL:-$(ls store/*-linux/boot/bzImage 2>/dev/null | head -1)}"
|
|
MEM="${MEM:-4096}"; KVM="${KVM:-1}"; DEADLINE="${DEADLINE:-120}"
|
|
WORK="$ROOT/work/iso-boot"; ISO="$WORK/hammer-live.iso"; LOG="$WORK/console.log"
|
|
mkdir -p "$WORK"
|
|
|
|
# localizar el product-rootfs lean (lo idóneo para un medio live: sin toolchain)
|
|
if [ -n "${PRODUCT:-}" ]; then
|
|
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)
|
|
fi
|
|
[ -n "$PDIR" ] && [ -d "$PDIR" ] || { echo "no encuentro product-rootfs (corré 'hammer bootstrap product')"; exit 1; }
|
|
[ -n "$KERNEL" ] && [ -e "$KERNEL" ] || { echo "no encuentro kernel"; exit 1; }
|
|
echo "==> product-rootfs: $PDIR"
|
|
|
|
echo "==> armando ISO con scripts/iso-image.sh (xorriso de hammer)"
|
|
ROOTFS="$PDIR" ISO="$ISO" KERNEL="$KERNEL" ./scripts/iso-image.sh >/dev/null
|
|
echo "==> ISO: $(du -h "$ISO" | cut -f1)"
|
|
|
|
accel=()
|
|
if [ "$KVM" = 1 ] && [ -w /dev/kvm ]; then accel=(-enable-kvm -cpu host); fi
|
|
echo "==> arrancando desde el CD El Torito (deadline ${DEADLINE}s)"
|
|
timeout "$DEADLINE" qemu-system-x86_64 -m "$MEM" -no-reboot -nographic "${accel[@]}" \
|
|
-cdrom "$ISO" -boot d > "$LOG" 2>&1 || true
|
|
|
|
fail=0
|
|
check() { if grep -qiE "$1" "$LOG"; then echo " ✓ $2"; else echo " ✗ $2" >&2; fail=1; fi; }
|
|
echo "==> asserts sobre el log serie:"
|
|
check "GNU GRUB" "GRUB arrancó del El Torito"
|
|
check "Linux version 6\.16" "kernel hammer-built cargado del ISO"
|
|
check "HAMMER-ISO-LIVE-OK" "marcador /init del medio live"
|
|
check "arje-zero" "arje-zero PID1 vivo"
|
|
check "Server listening on .* port 22" "sshd escuchando (producto en servicio desde RAM)"
|
|
|
|
if [ "$fail" = 0 ]; then
|
|
echo; echo "✓✓ E5 ISO LIVE VERDE: medio El Torito bootea el producto entero desde RAM (GRUB→kernel→initramfs→arje→sshd)"
|
|
else
|
|
echo; echo "✗ E5 ISO boot test FALLÓ — ver $LOG" >&2; exit 1
|
|
fi
|