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.
84 lines
5.3 KiB
Bash
Executable File
84 lines
5.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# efi-install-test.sh — valida el lazo COMPLETO de instalación EFI desde el medio live en OVMF (ADR 0010
|
|
# paso 5, hermano UEFI de scripts/iso-install-test.sh que es BIOS):
|
|
# (1) arma un ISO instalador EFI (iso-image.sh EFI=1 INSTALLER=1 AUTO_INSTALL=/dev/vda) — GRUB-EFI carga
|
|
# el live, cuyo /init desatendido corre takana-install; el payload trae el kernel metal EFI-stub;
|
|
# (2) lo bootea EN OVMF con un disco EN BLANCO ⇒ el live corre bajo UEFI ⇒ takana-install detecta
|
|
# /sys/firmware/efi y toma la RAMA EFI (MBR+ESP-0xEF, EFI-stub soberano), instala y apaga;
|
|
# (3) bootea ESE disco SOLO en OVMF (sin ISO, sin -kernel) ⇒ la firmware lanza \EFI\BOOT\BOOTX64.EFI →
|
|
# initramfs de pivote → arje-zero. Cierra "ISO live UEFI → disco EFI instalado → bootea solo".
|
|
#
|
|
# Uso: PRODUCT=<hash-o-prefijo> ./scripts/efi-install-test.sh
|
|
# Vars: KERNEL (ISO/live) MEM (def 4096) KVM (def 1) DISK_MB (def 4096)
|
|
# INSTALL_DEADLINE (def 240) BOOT_DEADLINE (def 120) OVMF_CODE OVMF_VARS
|
|
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}"; DISK_MB="${DISK_MB:-4096}"
|
|
INSTALL_DEADLINE="${INSTALL_DEADLINE:-240}"; BOOT_DEADLINE="${BOOT_DEADLINE:-120}"
|
|
OVMF_CODE="${OVMF_CODE:-/usr/share/edk2/x64/OVMF_CODE.4m.fd}"
|
|
OVMF_VARS="${OVMF_VARS:-/usr/share/edk2/x64/OVMF_VARS.4m.fd}"
|
|
WORK="$ROOT/work/efi-install-test"; ISO="$WORK/installer-efi.iso"; TGT="$WORK/target.img"
|
|
ILOG="$WORK/install.log"; BLOG="$WORK/diskboot.log"
|
|
mkdir -p "$WORK"
|
|
|
|
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"; exit 1; }
|
|
[ -n "$KERNEL" ] && [ -e "$KERNEL" ] || { echo "no encuentro kernel del live"; exit 1; }
|
|
[ -r "$OVMF_CODE" ] && [ -r "$OVMF_VARS" ] || { echo "no encuentro OVMF (set OVMF_CODE/OVMF_VARS): $OVMF_CODE"; exit 1; }
|
|
[ -n "$(ls -dt store/*-linux-metal/boot/bzImage 2>/dev/null | head -1)" ] || { echo "no encuentro kernel linux-metal (payload EFI del instalador)"; exit 1; }
|
|
echo "==> product-rootfs: $PDIR"
|
|
echo "==> OVMF: $OVMF_CODE"
|
|
|
|
accel=(); if [ "$KVM" = 1 ] && [ -w /dev/kvm ]; then accel=(-enable-kvm -cpu host); fi
|
|
|
|
echo "==> (1) armando ISO instalador EFI (EFI=1 INSTALLER=1 AUTO_INSTALL=/dev/vda)"
|
|
ROOTFS="$PDIR" ISO="$ISO" KERNEL="$KERNEL" EFI=1 INSTALLER=1 AUTO_INSTALL=/dev/vda ./scripts/iso-image.sh >/dev/null
|
|
echo " ISO: $(du -h "$ISO" | cut -f1)"
|
|
|
|
echo "==> (2) boot del instalador EN OVMF con disco EN BLANCO ${DISK_MB}M (auto-instala rama EFI y apaga) — deadline ${INSTALL_DEADLINE}s"
|
|
rm -f "$TGT"; truncate -s "${DISK_MB}M" "$TGT"
|
|
cp "$OVMF_VARS" "$WORK/vars-install.fd"
|
|
timeout "$INSTALL_DEADLINE" qemu-system-x86_64 -m "$MEM" -no-reboot -nographic "${accel[@]}" \
|
|
-drive if=pflash,unit=0,format=raw,readonly=on,file="$OVMF_CODE" \
|
|
-drive if=pflash,unit=1,format=raw,file="$WORK/vars-install.fd" \
|
|
-drive file="$TGT",format=raw,if=virtio -cdrom "$ISO" -boot d > "$ILOG" 2>&1 || true
|
|
if ! grep -aq "HAMMER-INSTALL-OK" "$ILOG"; then
|
|
echo "✗ la instalación EFI NO terminó OK — ver $ILOG" >&2
|
|
sed 's/\x1b\[[0-9;]*[a-zA-Z]//g; s/\r//g' "$ILOG" | grep -iE "HAMMER-INSTALL-FAIL|hammer-install|no apareció|UEFI|EFI-stub soberano|error" | head; exit 1
|
|
fi
|
|
echo " ✓ HAMMER-INSTALL-OK (rama EFI corrió en el live UEFI)"
|
|
# Confirmar que fue la rama EFI (no la BIOS)
|
|
sed 's/\x1b\[[0-9;]*[a-zA-Z]//g; s/\r//g' "$ILOG" | grep -aqiE 'hammer-install \(UEFI\)|EFI-stub soberano' \
|
|
&& echo " ✓ tomó la rama EFI (MBR+ESP-0xEF)" || echo " ! no vi el marcador de rama EFI (¿fue por BIOS?)" >&2
|
|
|
|
echo "==> (3) boot del DISCO instalado EN OVMF (sin ISO, sin -kernel) — deadline ${BOOT_DEADLINE}s"
|
|
cp "$OVMF_VARS" "$WORK/vars-boot.fd"
|
|
timeout "$BOOT_DEADLINE" qemu-system-x86_64 -m "$MEM" -no-reboot -nographic "${accel[@]}" \
|
|
-drive if=pflash,unit=0,format=raw,readonly=on,file="$OVMF_CODE" \
|
|
-drive if=pflash,unit=1,format=raw,file="$WORK/vars-boot.fd" \
|
|
-drive file="$TGT",format=raw,if=virtio > "$BLOG" 2>&1 || true
|
|
|
|
clean() { sed 's/\x1b\[[0-9;]*[a-zA-Z]//g; s/\r//g' "$BLOG"; }
|
|
fail=0
|
|
check() { if clean | grep -aqiE "$1"; then echo " ✓ $2"; else echo " ✗ $2" >&2; fail=1; fi; }
|
|
reject() { if clean | grep -aqiE "$1"; then echo " ✗ $2 (apareció)" >&2; fail=1; else echo " ✓ $2"; fi; }
|
|
# El kernel metal cero-parpadeo usa `quiet` ⇒ los marcadores válidos en serie son los USERSPACE tee'ados
|
|
# a /dev/ttyS0 (sortean el printk). Los kernel-side EXT4 quedan como informativos.
|
|
echo "==> asserts sobre el arranque del disco EFI instalado:"
|
|
check 'HAMMER-EFI-DISK-PIVOT-OK' "initramfs de pivote resolvió hammer-root (⇒ EFI-stub lanzó BOOTX64.EFI)"
|
|
check 'HAMMER-EFI-INIT-OK' "switch_root → arje-zero PID1 (init real)"
|
|
reject 'GNU GRUB' "arrancó SIN GRUB (EFI-stub soberano)"
|
|
reject 'HAMMER-EFI-FALLO|Kernel panic' "sin fallo de pivote ni panic"
|
|
|
|
echo
|
|
if [ "$fail" = 0 ]; then
|
|
echo "✓✓ EFI-INSTALL VERDE: ISO live UEFI → hammer-install rama EFI → disco EFI-stub SOBERANO bootea solo en OVMF"
|
|
else
|
|
echo "✗ efi-install-test FALLÓ — logs: $ILOG · $BLOG" >&2; exit 1
|
|
fi
|