Expand description
§tatara-init — tatara IS PID 1
Drop-in replacement for systemd/s6/openrc inside a tatara-os Linux guest. No daemon, no dbus, no cgroup choreography (the kernel already does that). A single static Rust binary that:
- Reads
/etc/tatara/init.lisp(or$TATARA_INIT_CONFIG) - Compiles it to a typed
InitConfigviatatara-lisp-derive - For each declared
Service, forks + execs - Reaps zombie children (the classic PID-1 duty)
- Honors
SIGTERM/SIGINT→ propagates to children, then exits - On
SIGHUP→ re-reads the config, diff + apply (start new, stop removed, restart changed)
The supervisor is abstract (Supervisor trait) so the control logic is
unit-testable without actually being PID 1. A concrete LinuxSupervisor
ships for the real boot path; a MockSupervisor ships for tests.
Lisp authoring:
(definit
:name "plex-boot"
:reap-zombies #t
:services
((:name "sshd" :exec "/run/current-system/sw/bin/sshd -D")
(:name "tatara-reconciler" :exec "/bin/tatara-reconciler")
(:name "kasou" :exec "/bin/kasou" :restart "always"
:env (("KASOU_SOCKET" "/run/kasou.sock")))))Re-exports§
pub use config::InitConfig;pub use config::MountSpec;pub use config::RestartPolicy;pub use config::Service;pub use mounts::mount_early_filesystems;pub use mounts::mount_extra;pub use mounts::EarlyMount;pub use mounts::EarlyMountError;pub use supervisor::LinuxSupervisor;pub use supervisor::MockSupervisor;pub use supervisor::Pid;pub use supervisor::Supervisor;pub use supervisor::SupervisorError;
Modules§
- config
- Typed configuration — the tatara-init equivalent of a systemd unit list.
- mounts
- Early-boot filesystem mounts —
/proc,/sys,/dev,/run,/tmp. - supervisor
- The supervision engine — abstract
Supervisortrait + two impls.