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 1534Shell 199Rust 109Markdown 993713 Definitions

⎇ c202d4c1d0935c9abfb91ea79c02462ede13252a scripts/iso-boot-test.sh Shell · 53 lines · 2.8 KB History raw

takana etapa 5c: comentarios de scripts, MOTD, y un BUG que introdujo la etapa 4 476168bb0 · Sergio ·

1#!/usr/bin/env bash
2# iso-boot-test.sh — valida E5 (medio live): arma el ISO 9660 / El Torito con scripts/iso-image.sh y lo
3# arranca en QEMU desde el CD (sin -kernel ni disco), comprobando que la cadena El Torito → GRUB →
4# kernel → initramfs → /init → producto funciona ENTERA desde RAM. El xorriso que arma el ISO es el
5# construido por takana (recipes/xorriso.toml), así que el test dogfooda también esa receta.
6#
7# Asserts: (1) GRUB arrancó del El Torito; (2) el marcador del /init live; (3) arje-zero PID1 vivo;
8# (4) sshd escuchando — i.e. el PRODUCTO llega a servicio corriendo enteramente desde el medio live.
9#
10# Uso:  PRODUCT=<hash-o-prefijo> ./scripts/iso-boot-test.sh
11#       (default: el product-rootfs más reciente del store)
12# Vars: KERNEL MEM (def 4096) KVM (def 1) DEADLINE (def 120)
13set -euo pipefail
14ROOT="$(cd "$(dirname "$0")/.." && pwd)"; cd "$ROOT"
15KERNEL="${KERNEL:-$(ls store/*-linux/boot/bzImage 2>/dev/null | head -1)}"
16MEM="${MEM:-4096}"; KVM="${KVM:-1}"; DEADLINE="${DEADLINE:-120}"
17WORK="$ROOT/work/iso-boot"; ISO="$WORK/hammer-live.iso"; LOG="$WORK/console.log"
18mkdir -p "$WORK"
19
20# localizar el product-rootfs lean (lo idóneo para un medio live: sin toolchain)
21if [ -n "${PRODUCT:-}" ]; then
22  PDIR=$(ls -d store/"${PRODUCT#b3:}"*-product-rootfs 2>/dev/null | head -1)
23else
24  PDIR=$(ls -dt store/*-product-rootfs 2>/dev/null | head -1)
25fi
26[ -n "$PDIR" ] && [ -d "$PDIR" ] || { echo "no encuentro product-rootfs (corré 'hammer bootstrap product')"; exit 1; }
27[ -n "$KERNEL" ] && [ -e "$KERNEL" ] || { echo "no encuentro kernel"; exit 1; }
28echo "==> product-rootfs: $PDIR"
29
30echo "==> armando ISO con scripts/iso-image.sh (xorriso de hammer)"
31ROOTFS="$PDIR" ISO="$ISO" KERNEL="$KERNEL" ./scripts/iso-image.sh >/dev/null
32echo "==> ISO: $(du -h "$ISO" | cut -f1)"
33
34accel=()
35if [ "$KVM" = 1 ] && [ -w /dev/kvm ]; then accel=(-enable-kvm -cpu host); fi
36echo "==> arrancando desde el CD El Torito (deadline ${DEADLINE}s)"
37timeout "$DEADLINE" qemu-system-x86_64 -m "$MEM" -no-reboot -nographic "${accel[@]}" \
38    -cdrom "$ISO" -boot d > "$LOG" 2>&1 || true
39
40fail=0
41check() { if grep -qiE "$1" "$LOG"; then echo "  ✓ $2"; else echo "  ✗ $2" >&2; fail=1; fi; }
42echo "==> asserts sobre el log serie:"
43check "GNU GRUB"                         "GRUB arrancó del El Torito"
44check "Linux version 6\.16"              "kernel hammer-built cargado del ISO"
45check "HAMMER-ISO-LIVE-OK"               "marcador /init del medio live"
46check "arje-zero"                        "arje-zero PID1 vivo"
47check "Server listening on .* port 22"   "sshd escuchando (producto en servicio desde RAM)"
48
49if [ "$fail" = 0 ]; then
50  echo; echo "✓✓ E5 ISO LIVE VERDE: medio El Torito bootea el producto entero desde RAM (GRUB→kernel→initramfs→arje→sshd)"
51else
52  echo; echo "✗ E5 ISO boot test FALLÓ — ver $LOG" >&2; exit 1
53fi