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
3.4 KiB
Bash
Executable File
54 lines
3.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# efi-disk-boot-test.sh — valida el DISCO INSTALADO EFI-STUB soberano (ADR 0010 paso 5) en OVMF.
|
|
#
|
|
# Arma la imagen con install-image-efi.sh y la arranca por UEFI (OVMF pflash, SIN -kernel: la firmware
|
|
# lanza \EFI\BOOT\BOOTX64.EFI). Asevera la cadena soberana completa por marcadores serie deterministas:
|
|
# 1. EFI-stub cargó el kernel+initrd horneados (sin GRUB ni systemd-boot)
|
|
# 2. el initramfs de pivote resolvió takana-root por LABEL y montó las ext4
|
|
# 3. switch_root: arje-zero re-montó / (re-mounted) = tomó PID1
|
|
#
|
|
# Nota: el cmdline horneado termina en console=tty0 ⇒ el stdout de userspace va a la pantalla. Los
|
|
# marcadores kernel-side (printk a TODAS las consolas) más el tee a /dev/ttyS0 del /init dan la prueba
|
|
# en el serial headless.
|
|
#
|
|
# Uso: ./scripts/efi-disk-boot-test.sh
|
|
# Vars: ROOTFS KERNEL MEM (def 4096) KVM (def 1) DEADLINE (def 180) OVMF_CODE OVMF_VARS
|
|
set -euo pipefail
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"; cd "$ROOT"
|
|
MEM="${MEM:-4096}"; KVM="${KVM:-1}"; DEADLINE="${DEADLINE:-180}"
|
|
WORK="$ROOT/work/efi-disk-boot-test"; mkdir -p "$WORK"
|
|
IMG="$WORK/hammer-efi-disk.img"; LOG="$WORK/boot.log"
|
|
|
|
echo "==> armando la imagen EFI-stub con install-image-efi.sh"
|
|
IMG="$IMG" ROOTFS="${ROOTFS:-}" KERNEL="${KERNEL:-}" ./scripts/install-image-efi.sh >"$WORK/build.log" 2>&1 \
|
|
|| { echo "✗ build falló — ver $WORK/build.log" >&2; tail -20 "$WORK/build.log" >&2; exit 1; }
|
|
echo " imagen: $(du -h "$IMG" | cut -f1)"
|
|
|
|
echo "==> arranque UEFI (OVMF, sin -kernel) — deadline ${DEADLINE}s"
|
|
BOOT=1 KVM="$KVM" MEM="$MEM" DEADLINE="$DEADLINE" IMG="$IMG" \
|
|
./scripts/install-image-efi.sh >"$LOG" 2>&1 || true
|
|
|
|
# marcadores (limpiamos escapes ANSI que mete OVMF)
|
|
clean() { sed 's/\x1b\[[0-9;]*[a-zA-Z]//g; s/\r//g' "$LOG"; }
|
|
fail=0
|
|
# El kernel metal cero-parpadeo arranca con `quiet` ⇒ los marcadores kernel-side (EFI-stub, Linux
|
|
# version, montaje/re-mount EXT4) NO llegan al serial. El veredicto se apoya en los marcadores USERSPACE
|
|
# tee'ados a /dev/ttyS0 por el /init de pivote y el /sbin/init real — que escriben al PUERTO serie
|
|
# directo, sorteando el printk ⇒ sobreviven `quiet`. Los kernel-side quedan como informativos.
|
|
info() { if clean | grep -aqiE "$1"; then echo " · $2"; else echo " · ($2 — suprimido por quiet o byte serie perdido, no bloqueante)"; fi; }
|
|
check() { if clean | grep -aqiE "$1"; then echo " ✓ $2"; else echo " ✗ $2 (falta /$1/)"; fail=1; fi; }
|
|
info 'EFI stub: Loaded initrd' 'EFI-stub cargó kernel+initrd (sin GRUB/systemd-boot)'
|
|
info 'EXT4-fs \(vda2\): mounted' 'kernel montó hammer-root (kernel-side)'
|
|
check 'HAMMER-EFI-DISK-PIVOT-OK' 'initramfs pivote resolvió hammer-root y va a switch_root'
|
|
check 'HAMMER-EFI-INIT-OK' 'switch_root → arje-zero PID1 (init real corriendo)'
|
|
check 'hammer boot menu: grafo en' 'menú de arranque por grafo corrió (ADR 0010: emite boot-graph.json)'
|
|
reject_panic() { if clean | grep -aqiE 'HAMMER-EFI-FALLO|Kernel panic'; then echo " ✗ hubo FALLO/panic de pivote"; fail=1; else echo " ✓ sin FALLO ni panic"; fi; }
|
|
reject_panic
|
|
|
|
echo
|
|
if [ "$fail" = 0 ]; then
|
|
echo "✓✓ EFI-DISK VERDE: disco instalado bootea EFI-stub SOBERANO en OVMF (firmware → BOOTX64.EFI → pivote → arje-zero)"
|
|
else
|
|
echo "✗ efi-disk-boot-test FALLÓ — log: $LOG" >&2; exit 1
|
|
fi
|