Etapa metal: USB de bisección (initramfs tiny) + fix piso FAT32 de la ESP

- Diagnóstico metal: con systemd-boot, earlyprintk=efi NO imprime NADA del kernel
  (solo 'Loaded initrd MEDIA_GUID' + 'Measured initrd PCR 9' y cuelga) ⇒ el kernel
  no llega ni a su consola temprana: hang en ExitBootServices o el decompresor.
- metal-usb-sdboot.sh: piso de 48MiB a la ESP (FAT32 -F exige ~33MiB; con initramfs
  chico caía debajo y la firmware no leía el BOOTX64.EFI → 'Not Found').
- USB de bisección (work/hammer-tiny-usb.img, initramfs busybox 1.3MB): ✓ OVMF llega a
  /init. Si en el metal del usuario ARRANCA a shell ⇒ el cuelgue era el initrd 100MB;
  si TAMBIÉN cuelga ⇒ es el kernel/EBS (probar nokaslr/no5lvl).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-23 01:26:29 -04:00
co-authored by Claude Opus 4.8
parent ce0cf8762e
commit 5012549f85
+3
View File
@@ -55,6 +55,9 @@ IRD="$WORK/initramfs.cpio.gz"; echo " initramfs: $(du -h "$IRD" | cut -f1)"
# 3) ESP FAT32: BOOTX64.EFI=systemd-boot + loader.conf + entry + kernel + initrd
espkb=$(( ( $(stat -c%s "$KERNEL") + $(stat -c%s "$IRD") ) / 1024 + 16384 ))
# FAT32 (-F) exige ~33 MiB mínimos; con initramfs chico (bisección) la ESP cae por debajo y la firmware
# no la lee ("Not Found"). Piso de 48 MiB para que el FAT32 siempre sea válido.
[ "$espkb" -lt 49152 ] && espkb=49152
ESP="$WORK/esp.img"; rm -f "$ESP"; truncate -s "$(( espkb * 1024 ))" "$ESP"
"$MT/mformat" -F -v HAMMER -i "$ESP" ::
"$MT/mmd" -i "$ESP" ::/EFI ::/EFI/BOOT ::/loader ::/loader/entries