el busybox recortado ARRANCA: Stage 1 en QEMU, contra una línea base
Se ensamblaron dos Stage 1 completos y se arrancaron los dos, para que cualquier diferencia se atribuya al recorte y no al azar: base b3:1a3823b4... 400 applets qemu rc=0 recortado b3:3aa8cd2d... 278 applets qemu rc=0 Los dos dan shell y se apagan limpio. El diff de las dos consolas son 35 líneas y ninguna es funcional: TSC, direcciones del RAMDISK, BogoMIPS, hora del RTC. La única diferencia real es el conteo de applets desde dentro de la imagen: 410 contra 288. Verificado en el recortado: arje-zero como PID 1, la seed card carga (la getty llegó a incarnar), getty -l /bin/sh da prompt y responde, y poweroff -f apaga de verdad -- uno de los cinco indultados, probado en vivo. Corrido en el worker con QEMU en TCG: el LXC no expone /dev/kvm. Hubo que instalar qemu-system-x86-core y reingerir la semilla de Stage 0, que no estaba en ese store y salió con el mismo hash que el manifiesto ya anotaba. Es Stage 1, no el producto: product-boot-test.sh sigue pendiente porque al store del worker le faltan netup, openssh, uutils, findutils-xargs, diffutils y ripgrep. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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).
|
||||
|
||||
Reference in New Issue
Block a user