wawafs: §9 layouts de instalación — el corte ro/rw es de mounts, no de particiones (casos / único y /home+/var)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-17 16:00:30 -04:00
co-authored by Claude Fable 5
parent 50ca9ca300
commit fd750c0b55
+40 -1
View File
@@ -122,7 +122,46 @@ un mapa entre ellos).
reemplazo de squashfs en el USB live (es el patrón vigente en Fedora/Android). Gate: bit
flipeado a mano en un objeto ⇒ EIO en lectura, no ejecución.
## 9. No-metas
## 9. Layouts de instalación (el corte ro/rw es de MOUNTS, no de particiones)
La parte ro no ocupa partición: es una vista sintética montada desde el CAS. Las particiones
guardan siempre lo mutable + el store. Dos instalaciones tipo:
**A — un solo ext4 en `/`** (particionado idéntico a una instalación normal: ESP + 1 ext4):
```
/ ext4 rw /etc /var /home /root /run /store …
├─ /store/objects/… CAS plano en este mismo ext4
├─ /store/manifests/<hash> manifests erofs por generación (~KB)
└─ /usr composefs ro — mount sintético de la generación activa
```
arje monta `/`, lee el nodo elegido del boot-graph, monta su manifest como `/usr`. Fin.
**B — `/home` y `/var` en particiones propias**:
```
/ ext4 rw (chica: /etc, /root, /store)
/usr composefs ro
/var ext4 rw propia ← estado puro: ni se entera de wawafs
/home ext4 rw propia ← ídem
```
`/home`/`/var` son ortogonales al esquema. El caso B además *mejora*: la restricción de
ADR 0005 (store y FHS mismo-filesystem) desaparece — el redirect de composefs cruza mounts,
el store podría incluso tener partición propia.
Reglas del patrón:
- **ro**: `/usr` = el OS entero (requiere usr-merge para que un mount lo cubra todo).
- **rw**: `/etc` (se hidrata al activar la generación), `/var`, `/home`, `/root`, `/run`,
`/tmp` y el propio `/store`.
- **Actualizar** = escribir objetos+manifest nuevos en `/store` (rw) y cambiar el mount;
la generación corriendo nunca se toca.
- **Parchear `/usr` a mano** = modo dev (ADR 0005) o un overlay rw de emergencia explícito
encima del mount; nunca un estado alcanzable por accidente.
## 10. No-metas
- **No** escribir un filesystem de kernel (años de fsck y corrupción ajena: landmine).
- **No** reemplazar `hydrate`/hardlinks en el laptop de desarrollo (ADR 0005 queda).