The <svc/foo> condition was created to synchronize starting services, hence the abbreviation. Example: the Quagga ripd needs to start after the zebra daemon to ensure its UNIX domain socket is active, otherwise events may be lost. However, considering that synchronization was implemented with UNIX PID files, e.g. waiting for /var/run/quagga/zebra.pid to be created, the condition abbreviation name <svc/foo> was hard to understand by most newcomers to Finit. To make matters worse, a new feature to track or even create PID files for services that don't create one themselves, using the syntax 'pid:/path/to/foo.pid' was added. Connecting the dots between these wasn't obvious. This patch renames service conditions pid conditions and also adds a compatibility wrapper to the Finit .conf parser. Any condition given in old .conf files with 'svc/' prefix are internally renamed 'pid/', along with a LOG_INFO notice in syslog. Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
HowTo: Finit on Void Linux
HowTo use Finit to boot an Void Linux system. It is assumed that the user has already installed make, a compiler, C library header files, and other tools needed to build a GNU configure based project.
To start with you need to first install libuEv and libite. They
default to install to /usr/local, but unlike Debian and Ubuntu based
distros, Void's pkg-config does not look for libraries and header
files there. So the PKG_CONFIG_LIBDIR environment variable must be
used, or change the install prefix to /usr.
The bundled build.sh script can be used to configure and build finit:
void:~# cd finit
void:~/finit# ./contrib/void/build.sh
Then run the install.sh script to install all necessary
files, including the sample finit.conf and finit.d/*.conf files.
More on that below.
void:~/finit# ./contrib/void/install.sh
The install script is (supposed to be) non-destructive by default, you have to answer Yes twice to set up Finit as the system default init. Pay close attention to the last question:
*** Install Finit as the system default Init (y/N)?
If you answer No, simply by pressing enter, you can change the symlink
yourself later on, to point to finit instead of runit:
void:~/finit# cd /sbin
void:/sbin# rm init
void:/sbin# ln -s finit init
Another option is to change the Grub defaults, in /etc/default/grub:
#GRUB_CMDLINE_LINUX_DEFAULT="loglevel=4 slub_debug=P page_poison=1"
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=4 init=/sbin/finit"
Alternatively, you can simply modify the default Grub entry at boot, or set up an alternative Grub entry to include:
linux /boot/vmlinuz-X.YY.Z ... init=/sbin/finit
If you modify a Grub configuration file, remember to run:
update-grub
Before rebooting, make sure to set up a /etc/finit.conf,
and /etc/finit.d/ for your services. Samples are included
in this directory. Notice the symlinks in /etc/finit.d/, which can be
managed by the operator at runtime using initctl enable SERVICE. You
can also use a standard /etc/rc.local for one-shot tasks and
initialization like keyboard language etc.