arranque-grafo: install-to-disk EFI-stub soberano (ADR 0010 paso 5)
install-image-efi.sh arma una imagen GPT+ESP donde el bzImage metal ES el binario EFI (\EFI\BOOT\BOOTX64.EFI, ruta fallback removible) — sin GRUB ni systemd-boot. La cmdline horneada del kernel (initrd=/initramfs.cpio.gz rdinit=/init) se activa al no haber LoadOptions; un initramfs mínimo de pivote resuelve hammer-root por LABEL (findfs) y hace switch_root a la ext4 real. Layout: ESP + hammer-root/store/state ext4 (mke2fs -d bajo unshare -r, ESP con mtools de hammer). Cierra el paso 2 (initrd chico destraba EFI-stub) y el 5. efi-disk-boot-test.sh valida en OVMF (sin -kernel): VERDE — firmware → BOOTX64.EFI → pivote → arje-zero PID1. Marcadores serie deterministas (los dos primeros bytes del handoff firmware→kernel son informativos; el veredicto se apoya en el montaje/re-mount aguas abajo, prueba concluyente de la cadena). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Executable
+50
@@ -0,0 +1,50 @@
|
||||
#!/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ó hammer-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
|
||||
# Los dos primeros bytes serie del handoff firmware→kernel se pierden a veces (EFI-stub/Linux-version):
|
||||
# son INFORMATIVOS. El veredicto se apoya en los marcadores AGUAS ABAJO — prueba concluyente de que
|
||||
# EFI-stub cargó el kernel+initrd (nada más podría montar hammer-root ni re-montar / sin esta cadena).
|
||||
info() { if clean | grep -aqiE "$1"; then echo " · $2"; else echo " · ($2 — bytes serie tempranos perdidos, 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 'Linux version 6\.16' 'kernel arrancó'
|
||||
check 'HAMMER-EFI-DISK-PIVOT-OK|EXT4-fs \(vda2\): mounted' 'initramfs pivote montó hammer-root (⇒ EFI-stub cargó kernel+initrd)'
|
||||
check 'EXT4-fs \(vda3\): mounted' '/store montado por LABEL'
|
||||
check 'EXT4-fs \(vda2\): re-mounted' 'switch_root → arje-zero re-montó / (PID1)'
|
||||
|
||||
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
|
||||
Reference in New Issue
Block a user