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.
68 lines
3.3 KiB
Bash
Executable File
68 lines
3.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# efi-boot-test.sh — valida la rama UEFI del medio live (refinamiento #3): arma un ISO con
|
|
# iso-image.sh EFI=1 y lo arranca por las DOS firmwares, probando que es un HÍBRIDO BIOS+UEFI:
|
|
# (A) UEFI — QEMU con OVMF (pflash) → grubx64.efi (de la ESP FAT poblada con mtools de takana) →
|
|
# kernel EFI-stub + initrd vía EFI → producto + sshd.
|
|
# (B) BIOS — el MISMO ISO con SeaBIOS (El Torito i386-pc) → producto + sshd.
|
|
# La ESP FAT la puebla el mtools construido por takana (recipes/mtools.toml); el grubx64.efi lo arma
|
|
# grub-mkimage -O x86_64-efi. El kernel ya trae EFI_STUB (sin rebuild).
|
|
#
|
|
# Uso: PRODUCT=<hash-o-prefijo> ./scripts/efi-boot-test.sh
|
|
# Vars: KERNEL MEM (def 4096) KVM (def 1) OVMF_CODE OVMF_VARS UEFI_DEADLINE (def 200) BIOS_DEADLINE (def 120)
|
|
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}"
|
|
UEFI_DEADLINE="${UEFI_DEADLINE:-200}"; BIOS_DEADLINE="${BIOS_DEADLINE:-120}"
|
|
# OVMF (edk2). Default Arch/CachyOS; override con OVMF_CODE/OVMF_VARS si tu distro los pone en otro lado.
|
|
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-boot-test"; ISO="$WORK/hammer-efi.iso"
|
|
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; }
|
|
[ -r "$OVMF_CODE" ] && [ -r "$OVMF_VARS" ] || { echo "no encuentro OVMF (set OVMF_CODE/OVMF_VARS): $OVMF_CODE"; 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 "==> armando ISO híbrido (EFI=1) con iso-image.sh"
|
|
ROOTFS="$PDIR" ISO="$ISO" KERNEL="$KERNEL" EFI=1 ./scripts/iso-image.sh >/dev/null
|
|
echo " ISO: $(du -h "$ISO" | cut -f1)"
|
|
|
|
fail=0
|
|
markers() { # $1=log $2=etiqueta
|
|
local log="$1" tag="$2"
|
|
if grep -aqiE "Linux version 6\.16" "$log" && grep -aqiE "Server listening on .* port 22" "$log"; then
|
|
echo " ✓ $tag: kernel cargado + sshd escuchando"
|
|
else
|
|
echo " ✗ $tag: no llegó a sshd — ver $log" >&2; fail=1
|
|
fi
|
|
}
|
|
|
|
echo "==> (A) arranque UEFI (OVMF) — deadline ${UEFI_DEADLINE}s"
|
|
cp "$OVMF_VARS" "$WORK/vars.fd"
|
|
timeout "$UEFI_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.fd" \
|
|
-cdrom "$ISO" -boot d > "$WORK/uefi.log" 2>&1 || true
|
|
grep -aqi "Loaded initrd from LINUX_EFI_INITRD" "$WORK/uefi.log" && echo " ✓ UEFI: GRUB EFI cargó kernel+initrd vía EFI"
|
|
markers "$WORK/uefi.log" "UEFI"
|
|
|
|
echo "==> (B) arranque BIOS (SeaBIOS) del MISMO ISO — deadline ${BIOS_DEADLINE}s"
|
|
timeout "$BIOS_DEADLINE" qemu-system-x86_64 -m "$MEM" -no-reboot -nographic "${accel[@]}" \
|
|
-cdrom "$ISO" -boot d > "$WORK/bios.log" 2>&1 || true
|
|
markers "$WORK/bios.log" "BIOS"
|
|
|
|
if [ "$fail" = 0 ]; then
|
|
echo; echo "✓✓ EFI VERDE: ISO HÍBRIDO bootea por UEFI (OVMF→grubx64.efi de mtools) y por BIOS (El Torito)"
|
|
else
|
|
echo; echo "✗ efi-boot-test FALLÓ" >&2; exit 1
|
|
fi
|