finit2

About

Finit2 is a minimalistic init implementation with basically two main features. It handles dependencies and can start them in paralell. And it reads service definitions intended for systemd.

It is not intended to be generally compatible with systemd, definitely not a plugin replacement. But like systemd finit2 needs some way to describe services and instead of inventing something new and incompatible for the sake of of, the files written for systemd could as well be used. Finit2 also supports the systemd notification protocol (notificaions using D-BUS is however not supported).

It borrows some concepts from systemd. In systemd there are several types of units. In finit there are only two, services and targets. A service is something that can be started and/or stopped and can have dependecies on other units. A target is only a set of dependencies.

A service is defined in service file, typically shipped with programs to be used by systemd. While finit supports less then 1% of every option defined by systemd, it still works with most service files seen in the wild. A target is either defined in a file with dependecies or a directory containing symlinks.

Finit also has the concept of runlevels but it's simply implemented as a single dependency (typically a target). The default runlevel is called default.

Finit resolves dependency names by looking in some predefied folders: /etc/finit2 and /usr/lib/systemd/system.

Finit2 doesn't (yet) have a tool to configure runlevels. (Similar tools for other init systems could probably be adapted to work with finit quite easily.) The configuration is simple enough to be maintained manually.

The easiest way to use finit2 is to create default.target in /etc/finit2 and list all units that should be started in the default runlevel. Another way to do it is making /etc/finit2/default a symlink to a directory (such as multi-user) containing symlinks to all services targets desired.