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!]

, not like (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