minit - a small yet feature-complete init
If you want to take part in minit, please subscribe
to the minit mailing list (send an empty email to minit-subscribe@fefe.de).
Download
Download minit-0.10.tar.bz2 (gnupg sig) now!
Or use the anonymous CVS archive at
:pserver:cvs@cvs.fefe.de:/cvs (empty password) and check out minit.
Since so many people asked for it, here is
the /etc/minit directory from by laptop as tarball.
Fridtjof Busse also wrote some
documentation about minit which may help you with the setup.
Download the slides to a talk about minit I gave at Linux Kongress 2004:
minit-linux-kongress2004.pdf
What works so far
- It can start services and take dependencies into account.
- It can restart services
- It can start services in sync mode (i.e. wait until they terminate,
to get around race conditions for static initializations)
- There is a companion utility "msvc" that can be used much in the
same way as the svc from daemontools. Communication works over two
fifos, /etc/minit/in and /etc/minit/out. Those have to exist before
minit is started and they should be owned by root and have mode 600.
- There is a companion utility "pidfilehack" that can be used to do
stuff like run ssh, wait a while, read the PID off /var/run/sshd.pid and
tell minit this PID so it will know when sshd exits and can restart it.
- It can pipe stdout to a dedicated log process.
Wishlist
(in no particular order)
- is able to boot off a completely read-only system (i.e. does not
modify file system) [CHECK!]
- contains a robust logging system [CHECK!]
- configuration like /var/qmail, not like inittab
(i.e. each option in a separate file, no parsing) [CHECK!]
- minimal memory and disk footprint [CHECK!]
- dependencies, i.e. a service can specify that it depends on a number
of other services and init will start those automatically. [CHECK!]
- static initializations are handled by a separate process (to keep
init memory footprint low). [turned out to be not much code]
- an easy way to extract the PID of a given service from minit, so
shell scripts can send signals to daemons. [CHECK!]
- an easy way to tell init not to restart a given process [CHECK!]
- an easy way to tell init to start an additional service [CHECK!]
By "easy way" I mean that the process is readily automatable, i.e. a
single command line, not that it is especially easy to understand for
Unix newbies.
See also