Move this to the book
author = "Łukasz Niemier"
date = "2015-10-06T16:42:56+02:00"
title = "fired - fast init system"
fired
is brand new init system created for Redox OS. It should provide easy
way to run, manage and supervise all processes inside Redox.
Design principles
Main design principles are:
- Learn from other init systems what to do:
- simple and readable configuration files instead of bloated shell scripts (we want to use Toml as configuration language)
- keep PID 1 minimal as possible
- run services in parallel
- Learn from other init systems what not to do
- be *NIX way, make one thing and do it good
- depend on kernel only
- do not bind to "only one true" libc
Most of the features will be possible due to unique Redox design principle that
everything is an URL. Thanks to that principle logging will be done via
log://
URL that will be easy readable by any log aggregating tool that one
wants, deaemons will provide their status via bus://
URL (or similar, design
process is still on the go), etc. On the other hand it will make fired
much
harder to port to other *NIX platforms, although we will be really happy to see
if there is someone who will help us creating that possible.
Why not existing one?
- We are writing Redox kernel in Rust, so why would we use C in user space? We want all system tooling to be as safe as possible in Rust.
- All existing init systems are written for systems with other design principles. In Redox everything is URL so we should use that. Instead of sockets/pipes magic we have a built-in tool that will solve all problems with IPC.
- Nothing what we found is simple enough or modern enough to fit into our needs.