gioser

tawasuyu/brahman

Rust 570TOML 215Markdown 68JSON 198261 Sutichaykuna

⎇ 762bf95dfd770cc8bf51f21605bc2cc6cc88ea76 crates/init/arje-absorb/README.md Markdown · 51 siq'ikuna · 2.2 KB Ñawpa willay ch'uya

feat(arje): arje-absorb — absorbe otros inits a una Semilla brahman 762bf95df · sergio ·

1# arje-absorb
2
3Absorbe la configuración de **otro init** y la traduce a una **Tarjeta
4Semilla** brahman: una `Card` JSON con cada servicio como hija `genesis`
5de `arje-zero`.
6
7Es el paso «absorber» de la migración a arje — para no perder los
8servicios del sistema al cambiar de init. Lo usa `scripts/migrate-to-arje.sh`.
9
10## Inits soportados
11
12| init       | qué lee                                   | servicio → Card |
13| ---------- | ----------------------------------------- | --------------- |
14| `sysvinit` | `/etc/inittab`                            | `respawn` → daemon supervisado; `wait`/`once`/`sysinit` → one-shot |
15| `runit`    | el `runsvdir` activo (o `/etc/sv`)        | cada script `run` → daemon supervisado (calce 1:1) |
16| `dinit`    | `/etc/dinit.d/*`                          | `type=process`/`bgprocess` → daemon; `scripted` → one-shot |
17| `openrc`   | `/etc/runlevels/{sysinit,boot,default}`   | `/etc/init.d/<svc> start` → one-shot |
18
19`systemd` no se absorbe — sus units no son un formato de texto trivial.
20Para systemd ya existe la capa de shims (`crates/compat/`) y la seed
21`seeds/arje-host.card.json`.
22
23## Uso
24
25```sh
26# autodetecta el init y emite la Semilla a stdout
27arje-absorb
28
29# explícito, a un archivo, agregando el gestor de login gráfico
30arje-absorb --from openrc --output /ente/seed.card.json --with-carmen
31
32# absorber otra raíz (un chroot, una imagen montada)
33arje-absorb --root /mnt/sistema --from runit
34```
35
36Opciones: `--from <init>` (def. `auto`), `--root <dir>` (def. `/`),
37`--output <f>` (def. `-` = stdout), `--label <s>`, `--with-carmen`.
38
39## Lo que NO hace
40
41La Semilla absorbida **conserva el comportamiento** del init viejo: los
42servicios corren sin aislar (namespaces en `false`, FS read-write, red
43`full`). No endurece el sandbox — eso se hace después, Card por Card.
44
45La absorción de OpenRC es **superficial**: envuelve `/etc/init.d/<svc>
46start` como one-shot (los scripts de OpenRC son shell completo, no se
47parsean — el daemon lo deja en segundo plano OpenRC mismo, no arje).
48runit y dinit, en cambio, dan supervisión real porque su `run`/`command`
49es un proceso en primer plano.
50
51Revisá la Semilla antes de instalarla como `/ente/seed.card.json`.

README.md

arje-absorb

Absorbe la configuración de otro init y la traduce a una Tarjeta Semilla brahman: una Card JSON con cada servicio como hija genesis de arje-zero.

Es el paso «absorber» de la migración a arje — para no perder los servicios del sistema al cambiar de init. Lo usa scripts/migrate-to-arje.sh.

Inits soportados

initqué leeservicio → Card
sysvinit/etc/inittabrespawn → daemon supervisado; wait/once/sysinit → one-shot
runitel runsvdir activo (o /etc/sv)cada script run → daemon supervisado (calce 1:1)
dinit/etc/dinit.d/*type=process/bgprocess → daemon; scripted → one-shot
openrc/etc/runlevels/{sysinit,boot,default}/etc/init.d/<svc> start → one-shot

systemd no se absorbe — sus units no son un formato de texto trivial. Para systemd ya existe la capa de shims (crates/compat/) y la seed seeds/arje-host.card.json.

Uso

# autodetecta el init y emite la Semilla a stdout
arje-absorb

# explícito, a un archivo, agregando el gestor de login gráfico
arje-absorb --from openrc --output /ente/seed.card.json --with-carmen

# absorber otra raíz (un chroot, una imagen montada)
arje-absorb --root /mnt/sistema --from runit

Opciones: --from <init> (def. auto), --root <dir> (def. /), --output <f> (def. - = stdout), --label <s>, --with-carmen.

Lo que NO hace

La Semilla absorbida conserva el comportamiento del init viejo: los servicios corren sin aislar (namespaces en false, FS read-write, red full). No endurece el sandbox — eso se hace después, Card por Card.

La absorción de OpenRC es superficial: envuelve /etc/init.d/<svc> start como one-shot (los scripts de OpenRC son shell completo, no se parsean — el daemon lo deja en segundo plano OpenRC mismo, no arje). runit y dinit, en cambio, dan supervisión real porque su run/command es un proceso en primer plano.

Revisá la Semilla antes de instalarla como /ente/seed.card.json.