This commit is contained in:
Sergio
2026-05-06 20:40:47 +00:00
parent b5d8400fdf
commit d270c5e674
8 changed files with 93 additions and 354 deletions
+9 -41
View File
@@ -35,14 +35,14 @@ escritorio realiza durante la sesión.
- `ente-echo`, `brainctl`, `busctl`, `ente-journalctl`
3. Renombra el `/init` original a `/sbin/init.systemd` (backup)
4. Symlink `/init``/usr/local/bin/ente-zero`
5. Coloca la Card Semilla en `/ente/seed.card.k`
5. Coloca la Card Semilla en `/ente/seed.card.json`
6. Desinstala los services systemd que ahora son shims (logind, etc) o
los enmascara con `systemctl mask` (en la imagen base, antes de
reescribir `/init`)
## Card Semilla para el boot test
`/ente/seed.card.k` debe declarar como genesis los Entes esenciales:
`/ente/seed.card.json` debe declarar como genesis los Entes esenciales:
- D-Bus daemon (`/usr/bin/dbus-daemon --system`)
- Los 8 compat-shims
- NetworkManager
@@ -50,45 +50,13 @@ escritorio realiza durante la sesión.
udev añade reglas de userspace — opcional)
- gdm o sddm
Ejemplo mínimo:
```kcl
import .card
seed = EntityCard {
schema_version = 1
id = "01KQ_BOOT_SEED_GNOME_TEST_0"
label = "boot-gnome-test"
provides = [
Capability {kind = "Spawn"}
Capability {kind = "Journal"}
]
soma = SomaSpec {}
payload = Payload {kind = "Virtual"}
supervision = Supervision {kind = "OneShot"}
genesis = [
# dbus-daemon — todo lo demás depende de él.
EntityCard {
schema_version = 1
id = "01KQ_BOOT_DBUS_DAEMON__________"
label = "dbus-daemon"
soma = SomaSpec {}
payload = Payload {
kind = "Native"
exec = "/usr/bin/dbus-daemon"
argv = ["--system", "--nofork"]
}
supervision = Supervision {
kind = "Restart"
initial_ms = 100
max_ms = 30000
}
}
# Aquí los 8 compat-shims (mismo patrón) ...
# Aquí gdm o sddm ...
]
}
```
El shape es la serialización serde de `EntityCard` (ver
`crates/ente-card/src/lib.rs`). Para el primer arranque sin GNOME hay un
ejemplo defensivo en `docs/seed-vps-min.json` (PID 1 + un `sleep infinity`
supervisado). Extiéndelo añadiendo entradas a `genesis[]` con `payload` de
forma `{"Native": {"exec": "...", "argv": [...], "envp": []}}` y
`supervision` `{"Restart": {"initial": 100, "max": 30000}}` para los
daemons que sí queremos restart-supervisados.
## Boot
-155
View File
@@ -1,155 +0,0 @@
# Card Semilla para el boot test de GNOME bajo Ente #0.
#
# Este archivo se valida con `kcl run` contra el schema en
# crates/ente-card/schema/card.k antes de que ente-zero lo cargue.
#
# Genesis declara la constelación mínima para que GNOME arranque sin
# systemd: D-Bus daemon, los 8 compat-shims, NetworkManager, gdm.
import .ente_card.schema.card
# Card "supervisor genérico" reutilizable — dispara un binario con Restart.
schema NativeRestart(EnteBase):
soma = SomaSpec {
rlimits = ResourceLimits {nofile = 16384}
}
supervision = Supervision {
kind = "Restart"
initial_ms = 100
max_ms = 30000
}
# ----- La Semilla -----
seed = EntityCard {
schema_version = 1
id = "01KQABOOTTESTSEEDFRACTAL00"
label = "boot-gnome-test"
provides = [
Capability {kind = "Spawn"}
Capability {kind = "Journal"}
]
soma = SomaSpec {}
payload = Payload {kind = "Virtual"}
supervision = Supervision {kind = "OneShot"}
genesis = [
# 1. dbus-daemon — pivote del system bus, todos los demás dependen de él.
EntityCard {
schema_version = 1
id = "01KQABOOTTESTDBUSDAEMON___"
label = "dbus-daemon"
soma = SomaSpec {}
payload = Payload {
kind = "Native"
exec = "/usr/bin/dbus-daemon"
argv = ["--system", "--nofork", "--nopidfile"]
}
supervision = Supervision {
kind = "Restart"
initial_ms = 100
max_ms = 30000
}
}
# 2-9. Los 8 compat-shims D-Bus.
EntityCard {
schema_version = 1
id = "01KQABOOTTESTLOGIND_______"
label = "compat-logind"
provides = [Capability {kind = "LegacyLogind"}]
soma = SomaSpec {}
payload = Payload {
kind = "Native"
exec = "/usr/local/bin/ente-logind-compat"
}
supervision = Supervision {kind = "Restart", initial_ms = 100, max_ms = 30000}
}
EntityCard {
schema_version = 1
id = "01KQABOOTTESTHOSTNAMED____"
label = "compat-hostnamed"
soma = SomaSpec {}
payload = Payload {kind = "Native", exec = "/usr/local/bin/ente-hostnamed-compat"}
supervision = Supervision {kind = "Restart", initial_ms = 100, max_ms = 30000}
}
EntityCard {
schema_version = 1
id = "01KQABOOTTESTTIMEDATED____"
label = "compat-timedated"
soma = SomaSpec {}
payload = Payload {kind = "Native", exec = "/usr/local/bin/ente-timedated-compat"}
supervision = Supervision {kind = "Restart", initial_ms = 100, max_ms = 30000}
}
EntityCard {
schema_version = 1
id = "01KQABOOTTESTLOCALED______"
label = "compat-localed"
soma = SomaSpec {}
payload = Payload {kind = "Native", exec = "/usr/local/bin/ente-localed-compat"}
supervision = Supervision {kind = "Restart", initial_ms = 100, max_ms = 30000}
}
EntityCard {
schema_version = 1
id = "01KQABOOTTESTJOURNALD_____"
label = "compat-journald"
provides = [Capability {kind = "Journal"}]
soma = SomaSpec {}
payload = Payload {kind = "Native", exec = "/usr/local/bin/ente-journald-compat"}
supervision = Supervision {kind = "Restart", initial_ms = 100, max_ms = 30000}
}
EntityCard {
schema_version = 1
id = "01KQABOOTTESTRESOLVED_____"
label = "compat-resolved"
soma = SomaSpec {}
payload = Payload {kind = "Native", exec = "/usr/local/bin/ente-resolved-compat"}
supervision = Supervision {kind = "Restart", initial_ms = 100, max_ms = 30000}
}
EntityCard {
schema_version = 1
id = "01KQABOOTTESTPOLKIT_______"
label = "compat-polkit"
soma = SomaSpec {}
payload = Payload {kind = "Native", exec = "/usr/local/bin/ente-polkit-compat"}
supervision = Supervision {kind = "Restart", initial_ms = 100, max_ms = 30000}
}
EntityCard {
schema_version = 1
id = "01KQABOOTTESTMACHINED_____"
label = "compat-machined"
soma = SomaSpec {}
payload = Payload {kind = "Native", exec = "/usr/local/bin/ente-machined-compat"}
supervision = Supervision {kind = "Restart", initial_ms = 100, max_ms = 30000}
}
# 10. NetworkManager — la mayoría de distros lo prefieren sobre networkd.
EntityCard {
schema_version = 1
id = "01KQABOOTTESTNETWORKMGR___"
label = "NetworkManager"
soma = SomaSpec {}
payload = Payload {
kind = "Native"
exec = "/usr/sbin/NetworkManager"
argv = ["--no-daemon"]
}
supervision = Supervision {kind = "Restart", initial_ms = 200, max_ms = 30000}
}
# 11. gdm — display manager. GNOME settings panels via gnome-shell.
EntityCard {
schema_version = 1
id = "01KQABOOTTESTGDMDAEMON____"
label = "gdm"
soma = SomaSpec {}
payload = Payload {
kind = "Native"
exec = "/usr/bin/gdm"
argv = ["--no-daemon"]
}
supervision = Supervision {kind = "Restart", initial_ms = 500, max_ms = 60000}
}
]
}