Finit 3.0

Finit is a SysV init replacement with process supervision similar to that of daemontools and runit. Its focus is on small and embedded GNU/Linux systems, yet fully functional on standard server and desktop installations. Cookies included.

Tags init monitoring linux c
License MITL
State stable

Recent Releases

3.020 Oct 2017 06:05 minor feature: Added basic code of conduct covenant to project . Added contribution guidelines document. . Removed finit.conf option check DEV, replaced entirely by automated call to fsck for each device listed in /etc/fstab. . Removed deprecated and confusing startx and user settings. It is strongly recommended to instead use xdm/gdb/lightdm etc. . Add support for initctl log , shows last 10 lines from syslog. . Add initctl cond dump for deging conditions. . Ensure plugins always have a default name, file name. . Reorganization, move all source files to a src/ sub-directory. . Add support for initctl , much needed by distributions. See doc/distro.md for details. . Remove UNUSED() macro, mentioned here because it may have been used by external plugin developers. Set -Wno-unused-parameter instead. . New table headings in initctl, using top style inverted text. . Allow initctl show to use full screen width for service descriptions. . New HOOK_BANNER for plugins to override the default banner(). . Allow loading TTYs from /etc/finit.d. . Improvements to built-in getty, ignore signals like SIGINT, SIGHUP, support Ctrl-U to erase to beginning of line. . Add TTY nowait and noclear options. . Allow using both built-in getty and external getty: tty 12345 /dev/ttyAMA0 115200 noclear vt220 tty 12345 /sbin/getty -L 115200 /dev/ttyAMA0 vt100 tty 12345 /sbin/agetty -L ttyAMA0 115200 vt100 nowait. . Silent boot is now the default, use --enable-progress to get the old. Finit style process progress. I.e., --enable-silent is no more . Support for configure --enable-emergency-shell, de-only mode. . Support for a fallback shell on console if none of the configured TTYs can be started, configure --enable-fallback-shell. . All demessages to console when Finit --deis enabled. . Prevent login, by touching /etc/nologin, during runlevel changes. . A more orderly shutdown. On reboot/halt/poweroff Finit now properly goes to runlev
3.0-rc209 Dec 2016 07:25 minor feature: Add support for status/show service by name:id . Enforce terse mode after boot, if verbose mode is disabled. Reenable verbose mode at reboot, if disabled at boot. Update section mentioning BusyBox getty. Update deging documentation. Allow deto override terse mode. Revert confusing change in service state introduced in v2.3. As of v2.4 services are listed as "halted" and "stopped", when they have been halted due to a runlevel changed or stopped by the user, respectively. system freeze at reconfiguration. Changed services that all support SIGHUP caused a freeze due to Finit waiting for them to stop. Make sure to start and/or SIGHUP services after reconfiguration when there was no services to stop.
3.0-rc114 Sep 2016 06:25 minor feature: Add support for status/show service by name:id . Enforce terse mode after boot, if verbose mode is disabled. Reenable verbose mode at reboot, if disabled at boot. Update section mentioning BusyBox getty. Update deging documentation. Allow deto override terse mode. Revert confusing change in service state introduced in v2.3. As of v2.4 services are listed as "halted" and "stopped", when they have been halted due to a runlevel changed or stopped by the user, respectively. system freeze at reconfiguration. Changed services that all support SIGHUP caused a freeze due to Finit waiting for them to stop. Make sure to start and/or SIGHUP services after reconfiguration when there was no services to stop.
2.406 Dec 2015 07:45 minor feature: Add support for status/show service by name:id . Enforce terse mode after boot, if verbose mode is disabled. Reenable verbose mode at reboot, if disabled at boot. Update section mentioning BusyBox getty. Update deging documentation. Allow deto override terse mode. Revert confusing change in service state introduced in v2.3. As of v2.4 services are listed as "halted" and "stopped", when they have been halted due to a runlevel changed or stopped by the user, respectively. system freeze at reconfiguration. Changed services that all support SIGHUP caused a freeze due to Finit waiting for them to stop. Make sure to start and/or SIGHUP services after reconfiguration when there was no services to stop.
2.302 Dec 2015 01:05 minor feature: Add support for stop/start/restart/reload service by name:id . Refactor service status listed in initctl show, show actual status. Remove bootstrap-only tasks/services when leaving runlevel 'S'. Reference counting with already stopped and removed services When the user performs initctl reload to change system configuration. Revert semantic change in behavior of initctl restart: users expect Service to be stopped/started, not reloaded with SIGHUP even if the Service supports it. NULL pointer dereference causing kernel panic when user calls Initctl reload after change of system configuration. Column alignment in output of initctl show for services not in Current runlevel.
2.227 Nov 2015 16:45 minor feature: Upgrade to libuEv v1.2.4, to handle static builds. Upgrade to libite (LITE) v1.2.0, to handle static builds. Clarify how to select different plugins with the configure script. Improve urandom plugin for embedded systems w/o random seed. Add --deflag to initctl . The runlevels listed for services in initctl show now hightlight the active runlevel. Clarify in the README and in initctl help that the GW event to listen for in service declarations is GW:UP . Build for configure --disable-inetd . Improved support for static Finit builds. Misc. to silence warnings when building a static Finit. Default to register services as SIGHUP'able, regression in v2.0. Call HOOK_SVC_RECONF only when all processes have been stopped. On reload/reconf we must wait for all services to stop first. Only trigger on events that matches the service's specification, by Tobias Waldekranz.
2.117 Oct 2015 18:45 minor feature: Add hook point for fstab mount failure. Set hostname on dynamic reload. Upgrade to libite v1.1.1 . Service callback coredump checks and simplify callback exit. Do not use -Os use -O2 as default optimization level. Many cross Compiler toolchains are known to have problems with -Os . Do not allow build VERSION to be overloaded by an environment variable. Too small MAX arguments and too few argments in svc_t for Reading currently running services with initctl show . Unblock blocked signals after forking off a child.
2.021 Sep 2015 06:05 minor feature: The most notable change is the support for multiple instances. A must Have when running multiple DHCP clients, OpenVPN tunnels, or anything That means using the same command only with different arguments. Now Simply add a :ID after the service keyword, where ID is a unique Instance number for that service. Service #1 2345 /sbin/httpd -f -h /http -p 80 -- Web server. Service #2 2345 /sbin/httpd -f -h /http -p 8080 -- Old web server . Another noteworthy new feature is support for starting/stopping. Services on Netlink events: Service :1 2345 /sbin/dropbear -R -F -p 22 -- SSH daemon. Here the first instance :1 of the SSH daemon is declared to run in. Runlevels 2-5, but only if eth0 IFUP:eth0 is up and a gateway GW is set. When the configuration changes, a new gateway is set, or if Somehow a new IFUP event for eth0 is received, then dropbear is not SIGHUP'ed, but instead stop-started . The latter trick applies to all services, even those that do not define any events. . Support for reloading *.conf files in /etc/finit.d/ on SIGHUP. All task, service and run statements can be used in these.conf Files. Use the telinit q command, initctl reload or simply send SIGHUP to PID 1 to reload them. Finit automatically does reload of These *.conf files when changing runlevel. Support for a modern initctl tool which can stop/start/reload and. List status of all system services. Also, the old client tool used to change runlevel is now also available as a symlink: telinit. Initctl -v JOB . . Add concept of "jobs". This is a unique identifier, composed of a. Service and instance number, SVC:ID Initctl JOB. . Support for deny filters in inetd services. Inetd service/proto @iface,!iface... . Internal services on a custom port must use the internal.service. Syntax so Finit can properly bind the inetd service to the correct Plugin. Here follows a few examples: Inetd time/udp wait 2345 internal -- UNI
1.1205 Mar 2015 03:25 minor feature: Add support for built-in inetd super server -- launch services on demand. Supports filtering per interface and custom Inet ports. Upgrade to libuEv v1.1.0 to better handle error conditions. Allow mixed case config directives in finit.conf Add support for RFC 868 (rdate) time plugin, start as inetd service. Load plugins before parsing finit.conf, this makes it possible to extend finit even with configuration commands. E.g., the time.so plugin must be loaded for the inetd time/tcp internal service to be accepted when parsing finit.conf. Slight change in TTY fallback behavior, if no TTY is listed in the system finit.conf first inspect the console setting and only if that too is unset fall back to /bin/sh When falling back to the console TTY or /bin/sh, finit now marks this fallback as console. Should improve usability in some use cases. . Revert "Use vfork() instead of fork() before exec()" from v1.11. It turned out to not work so well after all. For instance, launching TTYs in a background process completely blocked inetd services from even starting up listening sockets ... proper fork seems to work fine though. This is the casue for yanking the 1.11 release, below. Trap segfaults caused by external plugins/callbacks in a sub-process. This prevents a single programming mistake in by a 3rd party developer from taking down the entire system. Fix Coverity CID 56281: dlopen() resource leak by storing the pointer. For the time being we do not support unloading plugins. Set hostname early, so bootstrap processes like syslog can use it. Only restart lost daemons when recovering from a SIGSTOP/norespawn.
1.1124 Jan 2015 16:10 major feature: Rebuilt event handling using libuEv.