docs: Stage 1 bootea end-to-end en QEMU ✅ (bitácora + roadmap)
La corrida real cierra el lazo: con el build nativo crt-static (cargo rustc), arje-zero y hammerd salen statically-linked (ET_EXEC, sin DT_NEEDED), el rootfs se sella, y el boot en QEMU (-cpu Broadwell) levanta el sistema: arje-zero (PID 1) → carga+valida /ente/seed.card.json → bucle primordial → encarna hammerd (Pid 59) + console-getty (Pid 60) → shell en consola; hammerd levanta su watcher fanotify y el agent.sock. Runbook §8: bitácora completa (todos los fixes: gcc/HOSTCC, GNU-ld, rust en el lab, triple nativo, wrapper saneador, vendoring condicional, AVX→Broadwell, dinámico→crt-static vía cargo rustc). Roadmap: Stage 1 ◑→✅. Pendiente: demo del CRASHED real (kill hammerd → restart con backoff; la supervisión Restart ya corre), bus único (B.2), atestación (A1/A2). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
879af17f5c
commit
186ae3e1c8
+9
-9
@@ -183,15 +183,15 @@ Diseño completo en [SDD 11 — Bootstrap from-scratch](11-bootstrap.md). Resume
|
||||
- **Stage 0** ✅ — crate `hammer-bootstrap` + `hammer bootstrap stage0`: ingiere el toolchain
|
||||
semilla pinned (`SeedSpec`, hash por identidad), verifica sha256 antes de sellar,
|
||||
idempotente. Cubierto por 4 unit + 1 e2e de CLI (offline, `file://`).
|
||||
- **Stage 1** ◑ — userland mínimo cross-compilado. Hecho: recetas pinned `musl` 1.2.5 +
|
||||
`busybox` 1.36.1 (estáticas, zig cc) + `hammerd` (receta Cargo: repo pinned + deps
|
||||
vendoreadas en el fetch para build `--offline`) + `arje-zero` (init PID 1, receta Cargo a
|
||||
tawasuyu); `hammer bootstrap stage1` los construye con la semilla, ensambla el rootfs FHS
|
||||
(hardlink) y lo sella con un `RootfsHash` de contenido. El init es **arje-zero como PID 1**
|
||||
(`/sbin/init`→arje-zero) con su seed card `/ente/seed.card.json` (hammerd + getty supervisados
|
||||
⇒ el `CRASHED` real) — diseño en [SDD 12](12-init-real.md), seed verificada contra
|
||||
`card_core::Card`. Falta: bus único (B.2) y atestación (A1/A2). El cross-compile y el boot
|
||||
reales se validan en la VM; el manifiesto anota la línea de Stage 1.
|
||||
- **Stage 1** ✅ — userland mínimo, **booteado end-to-end en QEMU**. Recetas pinned `musl` 1.2.5 +
|
||||
`busybox` 1.36.1 (estáticas, zig cc) + `hammerd` + `arje-zero` (recetas Cargo: repo pinned +
|
||||
deps vendoreadas en el fetch, build nativo crt-static vía `cargo rustc`); `hammer bootstrap
|
||||
stage1` los construye con la semilla, ensambla el rootfs FHS y lo sella. El init es **arje-zero
|
||||
como PID 1** (`/sbin/init`→arje-zero) con su seed card `/ente/seed.card.json`; al bootear,
|
||||
arje-zero carga+valida la seed y **supervisa hammerd + getty** (el `agent.sock` y el watcher
|
||||
fanotify de hammerd levantan). Diseño en [SDD 12](12-init-real.md); corrida y fixes en el
|
||||
[runbook](runbooks/stage1-vm-boot.md). Pendiente: demo del `CRASHED` real (matar hammerd → restart),
|
||||
bus único (B.2) y atestación (A1/A2).
|
||||
- **Stage 2** ☐ — rebuild nativo dentro del rootfs y diff de hashes ⇒ auto-alojamiento
|
||||
bit-reproducible.
|
||||
- Reemplazar el init de Alpine por **tu init** (bus por pipes nativo) — habilita el `CRASHED`
|
||||
|
||||
Reference in New Issue
Block a user