Finit v3.0
Major release, support for conditions/dependencies between services, optional built-in watchdog daemon, optional built-in getty, optional built-in standard inetd services like echo server, rdate, etc.
Also, native support for Debian/BusyBox /etc/network/interfaces, overhauled new configure based build system, logging to /dev/kmsg before syslogd has started, massively improved support for Linux distributions.
Changes
-
Added basic code of conduct covenant to project
-
Added contribution guidelines document
-
Removed
finit.confoptioncheck DEV, replaced entirely by automated call tofsckfor each device listed in/etc/fstab -
Removed deprecated and confusing
startxandusersettings. It is strongly recommended to instead use xdm/gdb/lightdm etc. -
Add support for
initctl log <SVC>, shows last 10 lines from syslog -
Add
initctl cond dumpfor debugging conditions -
Ensure plugins always have a default name, file name
-
Reorganization, move all source files to a
src/sub-directory -
Add support for
initctl <list|enable|disable> <SVC>, 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-parameterinstead -
New table headings in
initctl, usingtopstyle inverted text -
Allow
initctl showto use full screen width for service descriptions -
New
HOOK_BANNERfor plugins to override the defaultbanner() -
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
nowaitandnoclearoptions -
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-progressto get the old
Finit style process progress. I.e.,--enable-silentis no more -
Support for
configure --enable-emergency-shell, debug-only mode -
Support for a fallback shell on console if none of the configured TTYs can be started,
configure --enable-fallback-shell -
All debug messages to console when Finit
--debugis enabled -
Prevent login, by touching
/etc/nologin, during runlevel changes -
A more orderly shutdown. On reboot/halt/poweroff Finit now properly goes to runlevel 0/6 to first stop all processes.
-
Perform sync before remounting as read-only, at shutdown
-
Clean up
/tmp,/var/run, and/var/lockat boot on systems which have these directories on persistent storage -
Call udev triggers at boot, on systems with udev
-
Add missing
/var/lock/subsysdirectory for dbus -
Add support for
poweroff -
Add support for a built-in miniature watchdog daemon
-
Remove GLIBC:isms like
__progname -
Manage service states based on user defined conditions
-
Manage dependencies between services, w/ conditions (pidfile plugin)
-
Manage service dependencies on network events (netlink plugin)
-
Support for dynamically reloading Finit configuration at runtime
-
Refactor to use GNU configure and build system
-
New hooks for for detecting lost and started services (lost plugin)
-
External libraries, libuEv and libite, now build requirements
-
Early logging support to
/dev/kmsginstead of console -
Support for redirecting stdout/stderr of services to syslog
-
Support for managing resource limits for Finit and its processes
-
Add optional built-in inetd services: echo server, chargen, etc.
-
Add simple built-in getty
-
Greatly improved accounting support, both UTMP and WTMP fixes+features
-
Improved udev support, on non-embedded systems
-
Improved shutdown and file-system unmount support (Debian)
-
Support SysV init
/etc/rc.local -
Inetd protection against UDP looping attacks
-
Support systems with
/runinstead of/var/run(bootmisc plugin) -
Adopted BusyBox init signals for halt/reboot/poweroff
-
SysV init compat support for reboot (setenv)
-
Compat support for musl libc
-
Add OpenRC-like support for sysctl.d/*.conf
-
Add support for Debian/BusyBox
/etc/network/interfaces -
Add support for running fsck on file systems in
/etc/fstab -
Added example configs + HowTos for Debian and Alpine Linux
to support latest releases of both distributions -
Lots of documentation updates
Fixes
- Fix race-condition at configuration reload due to too low resolution. Thanks to Mattias Walström, Westermo
- Fix to handle long process (PID) dependency chains, re-run reconf callback until no more applications are in flux. Thanks to Mattias Walström, Westermo
- Clear
reconfcondition wheninitctl reloadhas finished - Skip automatic reload of
/etc/finit.d/*.conffiles when changing runlevel to halt or reboot - Fix issue #54: Allow halt and poweroff commands even if watchdog is enabled
- Fix issue #56: Check existence of device before trying to start getty
- Fix issue #60:
initctlshould display error and return error code for non-existing services should the operator try to start/stop them. - Fix issue #61: Reassert
net/*conditions afterinitctl reload - Fix issue #64: Skip
fsckon already mounted devices - Fix issue #66: Log rotate and gzip
/var/log/wtmp, created by Finit - Fix issue #72: Check
ifupexists before trying to bring up networking, also set$PATHearlier to simplifyrun()et al -- no longer any need to use absolute paths for system tools called from Finit. Thanks to crazy - Fix issue #73: Remove double
ntohl()in inetd handling, prevents matches. Thanks to Petrus Hellgren, Westermo - Fix issue #76: Reap zombie processes in emergency shell mode
- Fix issue #80: FTBFS on Arch Linux, missing
stdarg.hinhelpers.h, thanks to Jörg Krause - Fix issue #81: Workaround for systems w/o SYSV shm IPC support in kernel
- Always collect bootstrap-only tasks when done, we will never re-run them. Also, make sure to never reload bootstrap-only tasks at runtime
- Remove two second block (!) of Finit when stopping TTYs