tawasuyu

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 1411Shell 141Markdown 85Rust 842918 Sutichaykuna

⎇ 7c794568a963b18b68d747959e6bbd07cf2ebff7 scripts/iso-install-test.sh Shell · 64 siq'ikuna · 3.6 KB Ñawpa willay ch'uya

renombre: los instaladores pasan a `takana-*` — y el peligro no era el fichero, era el PROTOCOLO 008dd3925 · Sergio ·

1#!/usr/bin/env bash
2# iso-install-test.sh — valida el lazo COMPLETO de instalación desde el medio live (refinamiento #1):
3#   (1) arma un ISO instalador (iso-image.sh INSTALLER=1 AUTO_INSTALL=/dev/vda) con el payload de disco
4#       (kernel + GRUB MBR + /usr/bin/takana-install) bundleado;
5#   (2) lo bootea con un disco EN BLANCO ⇒ el /init desatendido corre takana-install y apaga;
6#   (3) bootea ESE disco SOLO (sin ISO, sin -kernel) ⇒ el producto instalado arranca y sirve SSH.
7# Cierra el lazo "ISO live → disco instalado → bootea solo", lo que hace la distro distribuible.
8#
9# Uso:  PRODUCT=<hash-o-prefijo> ./scripts/iso-install-test.sh
10# Vars: KERNEL MEM (def 4096) KVM (def 1) DISK_MB (def 4096) INSTALL_DEADLINE (def 180) BOOT_DEADLINE (def 90)
11set -euo pipefail
12ROOT="$(cd "$(dirname "$0")/.." && pwd)"; cd "$ROOT"
13KERNEL="${KERNEL:-$(ls store/*-linux/boot/bzImage 2>/dev/null | head -1)}"
14MEM="${MEM:-4096}"; KVM="${KVM:-1}"; DISK_MB="${DISK_MB:-4096}"
15INSTALL_DEADLINE="${INSTALL_DEADLINE:-180}"; BOOT_DEADLINE="${BOOT_DEADLINE:-90}"
16WORK="$ROOT/work/iso-install-test"; ISO="$WORK/installer.iso"; TGT="$WORK/target.img"
17ILOG="$WORK/install.log"; BLOG="$WORK/diskboot.log"
18mkdir -p "$WORK"
19
20if [ -n "${PRODUCT:-}" ]; then
21  PDIR=$(ls -d store/"${PRODUCT#b3:}"*-product-rootfs 2>/dev/null | head -1)
22else
23  PDIR=$(ls -dt store/*-product-rootfs 2>/dev/null | head -1)
24fi
25[ -n "$PDIR" ] && [ -d "$PDIR" ] || { echo "no encuentro product-rootfs"; exit 1; }
26[ -n "$KERNEL" ] && [ -e "$KERNEL" ] || { echo "no encuentro kernel"; exit 1; }
27echo "==> product-rootfs: $PDIR"
28
29accel=(); if [ "$KVM" = 1 ] && [ -w /dev/kvm ]; then accel=(-enable-kvm -cpu host); fi
30
31echo "==> (1) armando ISO instalador (INSTALLER=1, AUTO_INSTALL=/dev/vda)"
32ROOTFS="$PDIR" ISO="$ISO" KERNEL="$KERNEL" INSTALLER=1 AUTO_INSTALL=/dev/vda ./scripts/iso-image.sh >/dev/null
33echo "    ISO: $(du -h "$ISO" | cut -f1)"
34
35echo "==> (2) boot del instalador con disco EN BLANCO ${DISK_MB}M (auto-instala y apaga)"
36rm -f "$TGT"; truncate -s "${DISK_MB}M" "$TGT"
37timeout "$INSTALL_DEADLINE" qemu-system-x86_64 -m "$MEM" -no-reboot -nographic "${accel[@]}" \
38    -drive file="$TGT",format=raw,if=virtio -cdrom "$ISO" -boot d > "$ILOG" 2>&1 || true
39if ! grep -q "TAKANA-INSTALL-OK" "$ILOG"; then
40    echo "✗ la instalación NO terminó OK — ver $ILOG" >&2
41    grep -iE "TAKANA-INSTALL-FAIL|takana-install:|no apareció|error" "$ILOG" | head; exit 1
42fi
43echo "    ✓ TAKANA-INSTALL-OK"
44
45echo "==> (3) boot del DISCO instalado (sin ISO, sin -kernel)"
46timeout "$BOOT_DEADLINE" qemu-system-x86_64 -m "$MEM" -no-reboot -nographic "${accel[@]}" \
47    -drive file="$TGT",format=raw,if=virtio > "$BLOG" 2>&1 || true
48
49fail=0
50check()  { if grep -qiE "$1" "$BLOG"; then echo "  ✓ $2"; else echo "  ✗ $2" >&2; fail=1; fi; }
51reject() { if grep -qiE "$1" "$BLOG"; then echo "  ✗ $2 (apareció)" >&2; fail=1; else echo "  ✓ $2"; fi; }
52echo "==> asserts sobre el arranque del disco:"
53check  "GNU GRUB"                        "GRUB del disco (MBR→core.img del hueco post-MBR)"
54check  "Linux version 6\.16"             "kernel cargado del disco"
55check  "Server listening on .* port 22"  "sshd escuchando (producto instalado en servicio)"
56check  "hammer-recover:"                 "hook de auto-recover de upgrades corrió al arranque (#4b)"
57reject "ARRANQUE FALLIDO|seed.card no encontrada" "arje-zero arrancó sin fallo de seed"
58reject "no pude montar"                  "particiones dedicadas /store y /var/lib/hammer montadas"
59
60if [ "$fail" = 0 ]; then
61  echo; echo "✓✓ INSTALL-FROM-LIVE VERDE: ISO live → takana-install → disco que bootea solo y sirve SSH"
62else
63  echo; echo "✗ install-from-live FALLÓ — ver $ILOG / $BLOG" >&2; exit 1
64fi