Releases: finit-project/finit
Finit v4.0-rc4
This is a pre-release, for internal testing at Westermo at the moment. Version 4.0 replaces the previously planned 3.2 because of major changes, for instance; removal of the built-in inetd, incompatible changes to kernel command options and configure script. See the changelog for more detailed information. A fully up-to-date list of changes is expected for the GA release.
Finit v4.0-rc3
This is a pre-release, for internal testing at Westermo at the moment. Version 4.0 replaces the previously planned 3.2 because of major changes, for instance; removal of the built-in inetd, incompatible changes to kernel command options and configure script. See the changelog for more detailed information. A fully up-to-date list of changes is expected for the GA release.
Finit v4.0-rc2
This is a pre-release, for internal testing at Westermo at the moment. Version 4.0 replaces the previously planned 3.2 because of major changes, for instance; removal of the built-in inetd, incompatible changes to kernel command options and configure script. See the changelog for more detailed information. A fully up-to-date list of changes is expected for the GA release.
Finit v4.0-rc1
This is a pre-release, for internal testing at Westermo at the moment. Version 4.0 replaces the previously planned 3.2 because of major changes, for instance; removal of the built-in inetd, incompatible changes to kernel command options and configure script. See the changelog for more detailed information. A fully up-to-date list of changes is expected for the GA release.
Finit v3.2-rc3
Fixes to condition handling and changes to condition names when :ID is set.
See 9d9b6b5 for a summary.
Finit v3.2-rc2
Bug fix release, but also cgroups and a new progress!
https://twitter.com/b0rk/status/1214341831049252870?s=20
Changes
- Introducing Finit progress 𝓜𝓸𝓭𝓮𝓻𝓷
- Support for
sysvstart/stop scripts as well as monitoring forking services, stared usingsysvorservicestanza - Support for custom
kill:DELAY, default 3 sec. - Support for custom
halt:SIGNAL, default SIGTERM - Support for tracking custom PID files, using
pid:!/path/to/foo.pid, useful with newsysvorservicewhich fork to background - Support starting run/task/services without absolute path, trust
$PATH - Add support for
--disable-docsand--disable-contribto speed up builds and work around issue with massively parallel builds - Add support for
@consolealso for external getty - Add
-b, batch mode, for non-interactive use toinitctl - Prefer udev to handle
/dev/if mdev is also available - Redirect dbus daemon output to syslog
- Set
$SHELL, like$PATH, to a sane default value, needed by BusyBox - Finit no longer automatically reloads its
*.conffiles after running/etc/rc.localor run-parts. Useinitctl reloadinstead. initctlwithout an argument or option now defaults to list services- Convert built-in watchdog daemon to standalone mini watchdogd, issue #102
- Improved watchdog hand-over, now based on
svc_tand not PID - Extended bootstrap, runlevel S, timeout: 10 --> 120 sec. before services not allowed in the runtime runlevel are unconditionally stopped
- Removed
HOOK_SVC_STARTandHOOK_SVC_LOST, caused more problems than they were worth. Users are encouraged to use accounting instead - Skip displaying "Restarting ..." progress for bootstrap processes
- Added a simple work queue mechanism to queue up work at boot + runtime
- Postpone deletion of
svc_tuntil anySIGKILLtimer has elapsed - As long as a stepped service changes state we queue another step all event, because services may depend on each other
- Postpone deletion of
- Require new libuEv API:
uev_init1()to reduce event cache so that the kernel can invalidate deleted events before enqueing to userspace - Rename
hwclock.soplugin tortc.sosince it now is stand-alone from thehwclocktool. Note: the kernel can also be set to load and store RTC to/from system clock at boot/halt as well, issue #110 - New plugin to support cold plugging devices, auto-loading of modules at boot. Detects required modules by reading
/sys/devices/* - New plugin for
/etc/modules-load.d/by Robert Andersson, Atlas Copco - New
name:foosupport for services, by Robert Andersson, Atlas Copco - New
manual:yessupport for services, by Robert Andersson, Atlas Copco - New
log:consolesupport for services, by Robert Andersson, Atlas Copco - Support for
:IDas a string, by Jonas Johansson, Westermo - Support for auto-reload, instead of having to do
initctl reload, when a service configuration has changed. Disabled by default, but can be enabled with./configure --enable-auto-reload - Support for logging security related events, e.g., runlevel change, start/stop or failure to start services, by Jonas Holmberg, Westermo
Fixes
- Fix #96: Start udevd as a proper service
- Ensure we track run commands as well as task/service, once per runlevel
- Fix #98: FTBFS with
--disable-inetd - Make sure to unblock UDP inetd services when connection terminates. Regression introduced in v3.1
- Ensure run/tasks also go to stopping state on exit, like services, otherwise it is unnecessarily hard to restart them
- Fix #99: Do not try to
SIGKILLinetd services, they are not backed by a PID. This caused a use after free issue crashing finit. Found and fixed by Tobias Waldekranz, Westermo - Fix missing OS/Finit title bug, adds leading newline before banner
- Remove "Failed connecting to watchdog ..." error message on systems that do not have a watchdog
- Fix #100: Early condition handling may not work if
/var/rundoes not yet exist (symlink to/run). Added compat layer for access - Fix #103: Register multiple getty if
@consoleresolves to >1 TTY, - Fix #105: Only remove /etc/nologin when moving from runlevel 0, 1, 6
- Fix #106: Don't mark inetd connections for deletion at .conf reload. Fixed by Jonas Johansson, Westermo
- Fix #107: Stop spawned inetd conncections when stopping inetd service. Fixed by Jonas Johansson, Westermo
- Fix #109: Support for PID files in sub-directories to
/var/run - Handle rename of PID files, by Robert Andersson, Atlas Copco
- Fix #111: Only restart inetd services when necessary. E.g., if the listening interface is changed. Only stop established connections which are no longer allowed, i.e. do not touch already allowed established connections. Fixed by Jonas Johansson, Westermo
- Fix #120: Redirect
stdinto/dev/nullfor services by default - Fix #122: Switch to
nanosleep()to achieve "signal safe" sleep, fixed by Jacques de Laval, Westermo - Fix #124: Lingering processes in process group when session leader exits. E.g., lingering
logitprocesses when parent dies - Fix: update inetd service args on config change. Found and fixed by Petrus Hellgren, Westermo
- Fix service name matching, e.g. for condition handling, may match with wrong service, by Jonas Holmberg, Westermo
- Run all run-parts scripts using
/bin/sh -c foojust like the standard run-parts tool. Found by Magnus Malm, Westermo - Fix
initctl [start | restart], should behave the same for services that have crashed. Found by Mattias Walström, Westermo - Wait for bootstrap phase to complete before cleaning out any bootstrap processes that have stopped, they may be restarted again
- Reassert condition when an unmodified run/task/service goes from WAITING back to RUNNING again after a reconfiguration event. Found and fixed by Jonas Johansson, Westermo
- Restore Ctrl-D and Ctrl-U support in built-in getty
- Remove service condition when service is deleted
- Fix C++ compilation issues, by Robert Andersson, Atlas Copco
Finit v3.2-rc1
Bug fix release.
Changes
- Add support for
--disable-docsand--disable-contribto speed up builds and work around issue with massively parallel builds - Add
-b, batch mode, for non-interactive use toinitctl - Prefer udev to handle
/dev/if mdev is also available - Redirect dbus daemon output to syslog
- Set
$SHELL, like$PATH, to a sane default value, needed by BusyBox - Finit no longer automatically reloads its
*.conffiles after running/etc/rc.localor run-parts. Useinitctl reloadinstead. initctlwithout an argument or option now defaults to list services- Converted built-in watchdog daemon to standalone mini watchdogd
- Improved watchdog hand-over, now based on
svc_tand not PID - Extended bootstrap, runlevel S, timeout: 10 --> 120 sec. before services not allowed in the runtime runlevel are unconditionally stopped
- Removed
HOOK_SVC_STARTandHOOK_SVC_LOST, caused more problems than they were worth. Users are encouraged to use accounting instead - Skip displaying "Restarting ..." progress for bootstrap processes
- Added a simple work queue mechanism to queue up work at boot + runtime
- Postpone deletion of
svc_tuntil anySIGKILLtimer has elapsed - As long as a stepped service changes state we queue another step all event, because services may depend on each other
- Postpone deletion of
- Require new libuEv API:
uev_init1()to reduce event cache so that the kernel can invalidate deleted events before enqueing to userspace
Fixes
- Fix #96: Start udevd as a proper service
- Ensure we track run commands as well as task/service, once per runlevel
- Fix #98: FTBFS with
--disable-inetd - Make sure to unblock UDP inetd services when connection terminates. Regression introduced in v3.1
- Ensure run/tasks also go to stopping state on exit, like services, otherwise it is unnecessarily hard to restart them
- Fix #99: Do not try to
SIGKILLinetd services, they are not backed by a PID. This caused a use after free issue crashing finit. Found and fixed by Tobias Waldekranz, @wkz, Westermo - Fix missing OS/Finit title bug, adds leading newline before banner
- Remove "Failed connecting to watchdog ..." error message on systems that do not have a watchdog
- Fix #100: Early condition handling may not work if
/var/rundoes not yet exist (symlink to/run). Added compat layer for access - Fix #103: Register multiple getty if
@consoleresolves to >1 TTY - Fix #105: Only remove /etc/nologin when moving from runlevel 0, 1, 6
- Fix #106: Don't mark inetd connections for deletion at .conf reload. Fixed by Jonas Johansson, @jonasj76, Westermo
- Fix #107: Stop spawned inetd conncections when stopping inetd service. Fixed by Jonas Johansson, @jonasj76, Westermo
- Fix #111: Only restart inetd services when necessary. E.g., if the listening interface is changed. Only stop established connections which are no longer allowed, i.e. do not touch already allowed established connections. Fixed by Jonas Johansson, @jonasj76, Westermo
- Fix: update inetd service args on config change. Found and fixed by Petrus Hellgren, @ptruz, Westermo
- Fix
initctl [start | restart], should behave the same for services that have crashed. Found by Mattias Walström, @mattiaswal, Westermo - Wait for bootstrap phase to complete before cleaning out any bootstrap processes that have stopped, they may be restarted again
- Reassert condition when an unmodified run/task/service goes from WAITING back to RUNNING again after a reconfiguration event. Found and fixed by Jonas Johansson, @jonasj76, Westermo
- Remove service condition when service is deleted
Finit v3.1
Improvements to netlink.so plugin, per-service rlimit support, improved integration with watchdogd, auto-detect TTY console. Much improved debug, rescue and logging support. Also, many fixes to both big and small issues, most notably in the condition handling, which no longer is sensitive to time skips.
This version requires at least libuEv v2.1.0 and libite v2.0.1
Changes
- Support for more kernel command line settings:
- splash, enable boot progress
- debug, like
--debugbut also enable kernel debug - single, single user mode (no network)
- rescue, new rescue mode
- Support for
IFF_RUNNINGto netlink plugin =>net/IFNAME/running - Support for restarting
initctlAPI socket onSIGHUP - Greatly updated
initctl status <JOB|NAME>command - Support for
rlimitper service/run/task/inetd/tty, issue #45 - Support for setting
hardandsoftrlimit for a resource at once - Support for auto-detecting serial console using Linux SysFS, the new
tty @consoleeliminates the need to keep track of different console devices across embedded platforms:/dev/ttyS0,/dev/ttyAMA0, etc. - Add TTY
nologinoption. Bypasses login and skips immediately to a root shell. Useful during board bringup, in developer builds, etc. - Support for calling run/tasks on Finit internal HOOK points, issue #18
- Removed support for long-since deprecated
console DEVsetting - Cosmetic change to login, pressing enter at the
Press enter to ...prompt will now replace that line with the login issue text - Calling
initctlwithout any arguments or options now defaults to show status of all enabled services, and run/task/inetd jobs - Cosmetic change to boot messages, removed
Loading plugins ..., start of inetd services, andLoading configuration .... No end user knows what those plugins and configurations are, i.e. internal state+config - Change kernel WDT timeout (3 --> 30 sec) for built-in watchdog daemon
- Advise watchdog dawmon on shutdown and reboot using
SIGPWRand thenSIGTERM. It is recommended the daemon start a timer on the first signal, in case the shutdown process somehow hangs. - Handle
/etc/OverlayFS, reload /etc/finit.d/*.conf aftermount -a - initctl: Add support for printing previous runlevel
- initctl: Support short forms of all commands
- initctl: Support for
initctl touch <CONF>to be used withreload - initctl: Improved output of
initctl show <SVC> - Support reloading
/etc/finit.conf. The main finit.conf file previously did not support reloading at runtime, as of v3.1 all configuration directives supported in/etc/finit.d/*.confare now supported in/etc/finit.conf - Change
.confdependency + reload handling. Finit no longer relies on mtime of.conffiles, instead an inotify handler tracks file changes for time insensitive dependency tracking - Change condition handling to not rely on mtime but a generation id.
- New configure script option
--enable-redirectto automatically redirectstdoutandstderrof all applications to/dev/null - New
pidsub-option to services when a service does not create a PID file, or when the PID file has another name. Issue #95 - Greatly improved
logsub-option to service/run/tasks, selectively redirectstdoutandstderrusing the new toollogitto either syslog or a logfile. Issue #44 - Support for automatic log rotation of logfiles created by
logoption. Useconfigure --disable-logrotateon systems with a dedicated log rotation service. Issue #44 - Support for disabling service/run/task progress with empty
--description. Note: no description separator gives a default desc. - Create
/etc/mtabsymlink if missing on system (bootmisc plugin) - New hook:
hook/mount/postruns aftermount -abut before thehook/mount/all, wherebootmisc.soruns. This provides the possibility of running a second stage mount command before files in/runand similar are created - Skip
gdbserverwhen unleashing the grim reaper at shutdown - Distribute and install
docs/andcontrib/directories
Fixes
- Reset TTY before restarting it. A program may manipulate the TTY in various ways before the user logs out, Finit needs to reset the TTY to a sane state before restarting it. Issue #84
- On .conf parse errors, do not default to set TTY speed 38400, reuse current TTY speed instead
- Fix run/tasks, must be guaranteed to run once per declared runlevel. All run/tasks on
[S]with a condition<...>failed to run. Finit now tracks run/tasks more carefully, waiting for them to finish before switching to the configured runlevel at boot. Issue #86 - Allow inetd services to be registered with a unique ID, e.g.
:161, issue #87. Found by Westermo - inetd: drop UDP packets from blocked interfaces, issue #88
- Handle obscure inter-plugin dependency issue by calling the netlink plugin before the pidfile plugin on
HOOK_SVC_RECONFevents - Handle event loop failure modes, issue found by Westermo
- Handle API socket errors more gracefully, restart socket
- Do not attempt to load kernel modules more than once at bootstrap
- Remove reboot symlinks properly on uninstall
- Fix regression in condition handling, reconf condition must be kept as a reference point to previous reconfiguration, or bootstrap.
- Fix nasty race condition with internal service stop, abort kill if the service has already terminated, otherwise we may do
kill(0, SIGKILL) - Fix reconfiguration issue with (very quick) systems that don't have highres timers
- Fix formatting of runlevel string in
initctl show - Allow running
initctlwithSTDOUTredirected - Fix regression in
initctl start/stop <ID>, using name worked not id - Fix error handling in
initctl start/stopwithout any argument - Fix issue #81 properly, remove use of SYSV shm IPC completely. Finit now use the API socket for all communication between PID 1 and initctl
- Fix segfault on x86_64 when started with kernel cmdline
--debug - Normalize condition paths on systems with
/runinstead of/var/run
Finit v3.1-rc2
Changes
- Support for more kernel command line settings:
- splash, enable boot progress
- debug, like
--debugbut also enable kernel debug - single, single user mode (no network)
- rescue, new rescue mode
- Support for
IFF_RUNNINGto netlink plugin =>net/IFNAME/running - Support for restarting
initctlAPI socket onSIGHUP - Greatly updated
initctl status <JOB|NAME>command - Support for setting
hardandsoftrlimit for a resource at once - Support for the special debug option
nologinto tty configurations, skips the login prompt and skips immediately to a root shell. Useful during board bringup, in developer builds, etc. Be careful though ... - Advise watchdog dawmon on shutdown and reboot using
SIGPWRand thenSIGTERM. It is recommended the daemon start a timer on the first signal, in case the shutdown process somehow hangs. - New configure script option
--enable-redirectto automatically redirectstdoutandstderrof all applications to/dev/null - New
pidsub-option to services when a service does not create a PID file, or when the PID file has another name. Issue #95 - New
logsub-option to service/run/task to selectively redirectstdoutandstderrusing the new toollogitto either syslog or a logfile. Issue #44
Fixes
- Do not attempt to load kernel modules more than once at bootstrap
- Remove reboot symlinks properly on uninstall
finit-3.1-rc2.tar.xz Distribution tarball
finit-3.1-rc2.tar.xz.md5 595f2eea6bfe11c0c61a2c18c0141b3f
Finit v3.1-rc1
Finit v3.1 require libuEv v2.1.0, or later, and libite v2.0.1, or later.
Changes
- Support for
rlimitper service/run/task/inetd/tty, issue #45 - Support for auto-detecting serial console using Linux SysFS, the new
tty @consoleeliminates the need to keep track of different console devices across embedded platforms:/dev/ttyS0,/dev/ttyAMA0, etc. - Support for calling run/tasks on Finit internal HOOK points, issue #18
- Removed support for long-since deprecated
console DEVsetting - Cosmetic change to login, pressing enter at the
Press enter to ...prompt will now replace that line with the login issue text - Calling
initctlwithout any arguments or options now defaults to show status of all enabled services, and run/task/inetd jobs - Cosmetic change to boot messages, removed
Loading plugins ..., start of inetd services, andLoading configuration .... No end user knows what those plugins and configurations are, i.e. internal state+config - Change kernel WDT timeout (3 --> 30 sec) for built-in watchdog daemon
- Handle
/etc/OverlayFS, reload /etc/finit.d/*.conf aftermount -a - initctl: Add support for printing previous runlevel
- initctl: Support short forms of all commands
- initctl: Support for
initctl touch <CONF>to be used withreload - initctl: Improved output of
initctl show <SVC> - Support reloading
/etc/finit.conf. The main finit.conf file previously did not support reloading at runtime, as of v3.1 all configuration directives supported in/etc/finit.d/*.confare now supported in/etc/finit.conf - Change
.confdependency + reload handling. Finit no longer relies on mtime of.conffiles, instead an inotify handler tracks file changes for time insensitive dependency tracking - Change condition handling to not rely on mtime but a generation id.
Fixes
- Reset TTY before restarting it. A program may manipulate the TTY in various ways before the user logs out, Finit needs to reset the TTY to a sane state before restarting it. Issue #84
- On .conf parse errors, do not default to set TTY speed 38400, reuse current TTY speed instead
- Fix run/tasks, must be guaranteed to run once per declared runlevel. All run/tasks on
[S]with a condition<...>failed to run. Finit now tracks run/tasks more carefully, waiting for them to finish before
switching to the configured runlevel at boot. Issue #86 - Allow inetd services to be registered with a unique ID, e.g.
:161, issue #87. Found by Westermo - inetd: drop UDP packets from blocked interfaces, issue #88
- Handle obscure inter-plugin dependency issue by calling the netlink plugin before the pidfile plugin on
HOOK_SVC_RECONFevents - Handle event loop failure modes, issue found by Westermo
- Handle API socket errors more gracefully, restart socket
- Fix regression in condition handling, reconf condition must be kept as a reference point to previous reconfiguration, or bootstrap.
- Fix nasty race condition with internal service stop, abort kill if the service has already terminated, otherwise we may do
kill(0, SIGKILL) - Fix reconfiguration issue with (very quick) systems that don't have highres timers
- Fix formatting of runlevel string in
initctl show - Allow running
initctlwithSTDOUTredirected - Fix regression in
initctl start/stop <ID>, using name worked not id - Fix error handling in
initctl start/stopwithout any argument - Fix issue #81 properly, remove use of SYSV shm IPC completely. Finit now use the API socket for all communication between PID 1 and initctl
- Fix segfault on x86_64 when started with kernel cmdline
--debug