rcd is called by init(8), it reads service definitions from UCL unit files,
builds a dependency graph, and starts services in parallel.
After boot completes, it remains running as a supervisor daemon, automatically
restarting failed services and accepting control commands via a UNIX domain
socket.
Design goals:
- Fast parallel boot via dependency DAG
- No PID races: use posix_spawn with process descriptors
- No process escape: become subreaper via procctl(2)
- Socket activation: pre-bind sockets, pass via fd inheritance
- Resource control: per-service limits via rctl(2)
- Service isolation: native jail(2) integration
- OOM protection: procctl(2) PROC_SPROTECT
- UCL-based unit files via libucl
- Embedded Lua interpreter for inline service hooks
- Template units for per-instance services
- Per-service access control
- JSON Schema validation of unit files
- Full backward compatibility with existing rc.d scripts
- Called by init(8) with no changes to init