docs: runbook §8c — boot del builder confirmado end-to-end en QEMU
Smoke test real (qemu -cpu Broadwell, initramfs 410 MB gz): el builder rootfs bootea hasta la shell. arje-zero como PID 1 carga+valida la seed card, instancia hammerd (pid 60) + console-getty (pid 61), hammerd levanta watcher fanotify + agent.sock, y la getty deja `~ #` en consola. Mismo boot que Stage 1 pero con el toolchain adentro — listo para `rebuild-stage1`. Actualiza la receta de §8c: script boot-builder-vm.sh, MEM=6144, kernel real, nota de RAM (tmpfs + rebuild en RAM va justo sin KVM). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Semantic delta
No definition changed: this change is text, documentation or data.
1 files · +16 −4
diff --git a/docs/runbooks/stage1-vm-boot.md b/docs/runbooks/stage1-vm-boot.md
index 38be05cb..0a165b09 100644
--- a/docs/runbooks/stage1-vm-boot.md
+++ b/docs/runbooks/stage1-vm-boot.md
@@ -297,14 +297,26 @@ en `/work` ⇒ rebuild **offline y determinista** en la VM (de ahí `fetch` rema
fuente). **No** copia `work/sources` (los árboles ya materializados): es regenerable y pesa varios GB.
Sin `--work-cache`, el rebuild fetchea por red (la seed card trae `networking: full`).
-**3. Empaquetar como initramfs y bootear** (igual que §4/§7, `-cpu Broadwell` por AVX):
+**3. Empaquetar como initramfs y bootear** (igual que §4/§7, `-cpu Broadwell` por AVX). El script
+`scripts/boot-builder-vm.sh` encapsula esto (kernel, MEM, KVM configurables):
```sh
-( cd work/builder-rootfs && find . | cpio -o -H newc | gzip ) > builder.cpio.gz
-qemu-system-x86_64 -m 1024 -no-reboot -nographic -cpu Broadwell \
- -kernel <vmlinuz> -initrd builder.cpio.gz -append "console=ttyS0 rdinit=/sbin/init"
+( cd work/builder-rootfs && find . -print0 | cpio --null -o -H newc | gzip -1 ) > work/builder.cpio.gz
+./scripts/boot-builder-vm.sh # o el qemu crudo:
+qemu-system-x86_64 -m 6144 -no-reboot -nographic -cpu Broadwell \
+ -kernel /boot/vmlinuz-linux -initrd work/builder.cpio.gz -append "console=ttyS0 rdinit=/sbin/init"
```
+> **RAM.** El initramfs se desempaqueta a un tmpfs (~1.2 GB) y el rebuild Rust necesita varios GB
+> más, TODO en RAM. Con host ~7 GB y sin KVM va justo y lento (TCG). Sube `MEM` o monta un disco
+> para `/work` si el rebuild muere por OOM.
+
+**✅ Boot del builder confirmado (2026-06-11).** El initramfs (410 MB gz, 26 776 entradas) **bootea
+end-to-end**: arje-zero despierta como **PID 1**, carga+valida la seed card, instancia los 2 genesis
+(**hammerd** pid 60 + **console-getty** pid 61), hammerd levanta su watcher fanotify y el `agent.sock`,
+y la getty deja la shell `~ #` en consola. Idéntico al boot de Stage 1 (§7) pero con el toolchain
+adentro — listo para el rebuild.
+
**4. Dentro de la VM**, desde la shell de la consola, correr el driver embebido:
```sh