arranque-grafo: hammer boot menu — orquestador del menú + wiring en el init (ADR 0010)
hammer boot menu ata las tres piezas del contrato: emite el grafo → lanza el compositor (mirada, --compositor configurable) → activa el nodo que el usuario dejó en boot-select. Graceful: sin compositor (servidor headless) emite el grafo y sigue el arranque. Refactor: activate_and_report compartido con boot activate; --out/--select configurables (testeable sin /run/hammer root-only). Wiring: iso-image INSTALLER=1 + install-image-efi bundlean el CLI hammer (static musl) al sistema instalado (el producto trae arje-zero/hammerd pero no el CLI); el wrapper /sbin/init lo invoca tras hammer-recover, salida al serial (no pinta tty0 ⇒ respeta cero-parpadeo). Cierra la pieza #3 del handoff mirada (quién lanza el menú en el boot): lo ownea hammer, desde el hook de init. Tests: boot_menu.rs (3 caminos del glue: graceful/sin-selección/selección→activate) + efi-disk-boot-test asevera que el menú corre. Validado en OVMF: pivote → INIT-OK → menú (emite boot-graph.json + saltea sin mirada) → arje-zero. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -41,6 +41,7 @@ info 'EFI stub: Loaded initrd' 'EFI-stub cargó kernel+i
|
||||
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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user