diff --git a/docs/plan-botar-busybox.md b/docs/plan-botar-busybox.md index 69a72cdd..327cfc59 100644 --- a/docs/plan-botar-busybox.md +++ b/docs/plan-botar-busybox.md @@ -410,10 +410,47 @@ libnftnl linux linux-firmware llama-cpp logrotate nftables opensmtpd popt protob sof-firmware valkey wireless-regdb zlib-ng`. **`linux` está en la lista**: el kernel se reconstruye. La granja lo hará en su propio ciclo; no se disparó a mano. -## Lo que queda del paso 1 +## El arranque — PROBADO en QEMU, contra una línea base -- **Arrancar una imagen.** Lo medido es que el artefacto sella y que el sandbox construye. Que el - producto **bootee** con 277 applets no se probó: falta `product-boot-test.sh`. +**2026-09-21.** Se ensamblaron **dos** Stage 1 completos y se arrancaron los dos en QEMU, para que +cualquier diferencia se pueda atribuir al recorte y no al azar: + +| | rootfs sellado | applets en `/bin /sbin /usr/bin /usr/sbin` | qemu | +|---|---|---|---| +| **base** (busybox sin recortar) | `b3:1a3823b4…` | 400 | `rc=0` | +| **recortado** | `b3:3aa8cd2d…` | **278** | `rc=0` | + +Los dos arrancan, los dos dan shell y los dos se apagan limpio. **Diff de las dos consolas: 35 +líneas, y ninguna es funcional** — frecuencia del TSC, direcciones del RAMDISK, BogoMIPS, hora del +RTC. La única diferencia real es la que se buscaba: + +``` +~ # ls /bin /sbin /usr/bin /usr/sbin | wc -l +410 ← base +288 ← recortado +``` + +Criterios del runbook `stage1-vm-boot.md` §6, verificados en el recortado: + +- **PID 1** — `arje-zero` incarna y corre. +- **Seed** — la card se carga: la prueba es que la `console-getty` llegó a incarnar. +- **getty → shell** — `/bin/busybox getty -n -l /bin/sh 115200 console` da prompt `~ #`, y + `echo MARCA-SHELL-VIVA` responde. **`getty` y `sh` sobrevivieron al recorte, que era el riesgo.** +- **`poweroff -f`** — `ACPI: PM: Preparing to enter system sleep state S5` / `reboot: Power down`. + Uno de los cinco indultados, probado **en vivo**: sin él la caja no se apaga. + +⚠ **Cómo se corrió, porque condiciona el resultado:** en `dev.gioser.net`, con **QEMU en TCG +(emulación pura)** — el LXC no expone `/dev/kvm`, aunque el CPU sí trae los flags. Por eso el guion +se le manda por consola serie con esperas generosas. Hubo que instalar `qemu-system-x86-core` (dnf) +e ingerir de nuevo la semilla de Stage 0, que no estaba en el store del worker; sí salió con el +mismo hash que el manifiesto ya anotaba (`3ce721ec…`). + +⚠ **Es Stage 1, no el producto.** Se eligió porque es donde vive busybox (`musl busybox hammerd +arje-zero`) y porque necesitaba 2 artefactos en vez de 8. `product-boot-test.sh` —que además levanta +sshd y netup— sigue sin correrse: le faltan `netup openssh uutils findutils-xargs diffutils +ripgrep` en el store del worker. + +## Lo que queda del paso 1 - **Las otras 21 dependientes**, cuando la granja llegue. - El siguiente corte natural son los `BORRAR` que no se tocaron por prudencia y los 272 que siguen: el número baja a 0 por el paso 2 (declarar la munición sellada) y el 5 (`grep`/`sed` POSIX).