Releases: finit-project/finit
Finit v4.9
Caution
This release changes how Finit reacts to the exit status of pre:
scripts. Finit will now no longer start the main process if its
pre: script fails for any reason. So, if you have pre scripts that,
e.g., create directories, make sure they are idempotent.
Changes
- Add individual timeout (optional) support for pre/post/ready scripts
- Add support for systems with broken RTC, i.e., those that at power-on
may reset the RTC to a random date instead of zero, issue #418 - Add support for detecting "in-container" when in
systemd-nspawn - Check exit status of
pre:scripts, on failure drive service/sysv to
crashedstate. (The exit code ofpost:scripts remain ignored) - All pre/post/ready scripts are now also searched for in
$PATH - Reset color attributes and clear screen when starting up. This is
for boot loaders like GRUB, which leave background color artifacts
Fixes
- Fix #415: only mark reverse-dependencies "dirty" if the main service
does not support SIGHUP. This helps avoid unnecessary restarts of
services that depend on a service that supports SIGHUP - Fix #417: leaking inotify watchers in the cgroup subsystem
- Fix #421: add support for
nofailmount option in/etc/fstab - Fix #425: ordering bug in detecting .conf file changes to services
andinitctl reload, or runlevel changes - Fix
initctl touchof template services, previously marking a
service created from a template as "dirty" did not take - Fix unintended restart of template "siblings". I.e.,
initctl touch
of instantiated template service A affected B from same template - Fix buggy
--with-rtc-date=DATEconfigure option - Fix kill on timeout of pre/post/ready scripts
Finit v4.9-rc1
Caution
This release changes how Finit reacts to the exit status of pre:
scripts. Finit will now no longer start the main process if its
pre: script fails for any reason. So, if you have pre scripts that,
e.g., create directories, make sure they are idempotent.
Changes
- Add individual timeout (optional) support for pre/post/ready scripts
- Add support for systems with broken RTC, i.e., those that at power-on
may reset the RTC to a random date instead of zero, issue #418 - Add support for detecting "in-container" when in
systemd-nspawn - Check exit status of
pre:scripts, on failure drive service/sysv to
crashedstate. (The exit code ofpost:scripts remain ignored) - All pre/post/ready scripts are now also searched for in
$PATH - Reset color attributes and clear screen when starting up. This is
for boot loaders like GRUB, which leave background color artifacts
Fixes
- Fix #415: only mark reverse-dependencies "dirty" if the main service
does not support SIGHUP. This helps avoid unnecessary restarts of
services that depend on a service that supports SIGHUP - Fix #417: leaking inotify watchers in the cgroup subsystem
- Fix #422: honor
notfailflag in/etc/fstab - Fix #425: ordering bug in detecting .conf file changes to services
andinitctl reload, or runlevel changes - Fix
initctl touchof template services, previously marking a
service created from a template as "dirty" did not take - Fix unintended restart of template "siblings". I.e.,
initctl touch
of instantiated template service A affected B from same template - Fix buggy
--with-rtc-date=DATEconfigure option - Fix kill on timeout of pre/post/ready scripts
Finit v4.8
Changes
- Avoid remounting already mounted
/runand/tmpdirectories. This extends the existing support for detecting mounted directories to include complex mount hierarchies are in use, overlayfs and tmpfs mounts. Feature by Mathias Thore, Atlas Copco - getty: trigger /etc/issue compat mode for Alpine Linux
- tmpfiles.d: skip
x11.confunless X11 common plugin is enabled - tmpfiles.d: ignore x/X command, nos support for cleanup at runtime
- Drop debug mode
-Dfromudevdinhotplug.conf.in, allow the user to set this in/etc/default/udevdinstead - Certain initctl APIs at bootstrap are not supported, update warning log to include command (number) for troubleshooting, issue #398
- Add support for hwrng to urandom plugin and check for empty seed
- Add
runparts -b(batch mode) support, disables escape sequences - New configure
--without-rc-local, disables/etc/rc.localsupport - New configure
--disable-cgroupoption, disables cgroup v2 detection initctl show [email protected]now shows how an enabled template service has been evaluated by Finit, issue #411- Extend
initctltimeout connecting and waiting for Finit reply. The previous 2 + 2 second poll timeout has proved to be too short on more complex systems. Now a 15 + 15 second timeout is applied which should be more resistant to temporary overload scenarios, issue #407
Fixes
- Fix #397: system shutdown/reboot can block on console input if action is started remotely (ssh). Caused by legact TTY screen size probing, removed from both bootstrap and shutdown/reboot
- Fix #400: both
HOOK_MOUNT_ERRORandsulogin()fail to trigger on either mount orfsckerrors. Problem caused by unresolved status from pipe, callingpclose()without extracting exit status - Fix #402:
initctl touchdoes not respect-n(no error) flag - Fix #403:
initctl touchdoes not support template services - Fix #404: possible undefined behavior when
--with-fstab=nois set - Fix #405:
@consolegetty does not work withtty0 ttyS0 - Fix #409: prevent tmpfiles from following symlinks for
L+andR, otherwise symlink targets would also be removed. Found and fixed by Mathias Thore and Ming Liu, Atlas Copco - Fix #414: Frr Zebra immediately restarts on
initctl stop zebra. The fix likely works for all Frr/Quagga services due to the way they create and delete their pid file - Cosmetic issue with
[ OK ]messages being printed out of order at shutdown/reboot. Caused by nested calls toservice_stop() - Cosmetic issue with duplicate "Restoring RTC" message at bootstrap
Finit v4.7
Changes
- Silence "not available" messages for run/task/service with
nowarn - Update docs,
cgroup.rootworkaround forSCHED_RRtasks - Drop runlevels 0 and 6 from
keventd, not needed at reboot/poweroff - Mount
/dev/shmwith mode 1777 (sticky bit) - Mount
/dev/mqueueif available, inspiration from Alpine Linux - Update Alpine Linux installer and configuration files, tested on
Alpine v3.19, some assembly still required
Fixes
- Fix confusing warning message when tmpfiles.d fails to install symlink
- Fix tmpfiles.d legacy
/run/lock/subsys, ordering - Add missing
/var/tmpand/var/lock -> /run/lock(tmpfiles.d) - Fix #388: log redirection broken unless Finit runs in debug mode.
Found and fixed by Ryan Rorison - Fix #389: must libc requires
libgen.hforbasename()function.
Reported and worked around with newbasenm()function by Stargirl - Fix #392:
service/foo/readycondition reasserted on pidfile removal
Finit v4.6
Changes
- Add support for service
notify:pidandreadiness noneglobal
option to change how Finit expects readiness notification, issue #386
Fixes
- Fix #383: dbus and runparts regression in Finit v4.5. The configure
script must expandFINIT_RUNPATH_before defining it inconfig.h - Fix #384: service environment variables drop everything but the first
argument, e.g.,VAR="foo bar qux"drops everything butfoo - Fix #385: internal conditions, e.g.,
<int/bootstrap>turn into flux
when leaving bootstrap, causing depending services to stop - Fix #387: global environment variables declared with
set VAR=NAMEdo
not drop leadingset, causing'set VAR'='NAME'in env. - Sanity check environment variables, for services and globally. Ensure
the variable name (key) does not contain spaces, or a leadingset
Finit v4.5
Changes
- Refactor
runpartsand/etc/rc.localto no longer block the main loop, allowinginitctlcalls to interact with Finit. Issue #356 - Refactor the
runstanza to no longer block the main loop, issue #362 - Allow
suloginwith a user different fromroot, issue #357 - Allow disabling invocation of rescue mode from kernel command line
- Add
initctl -fto force-skip asking Finit for existing services when creating new services during bootstrap, e.g./etc/rc.local initctl runlevelnow returnsN Sinstead ofN 10in bootstrapinitctl runlevel Nduring bootstrap is now allowed. It changes the next runlevel to go to when bootstrap has completed. Effectively overriding therunlevel Nstatement in/etc/finit.conf- Improved logging on failure to
execvp()a run/task/service, now witherrno, e.g., "No such file or directory" when the command is missing from$PATH - Add Bash completion support for
initctl, configurable, issue #360 - Handle absolute path to
initctl [enable|disable], not supported - Update
finit.conf(5)man page with the recommended directory hierarchy in/etc/finit.d/ - The
runpartscode has been split into/libexec/finit/runparts - The
runpartscommand now takes two options:sysvandprogress. The former ensures onlySNNfooandKNNfooscripts are run. - Add SysV Init Compatibility section to documentation
- Increased MAX path for commands, and arguments: 64 -> 256
- The bundled watchdog daemon no longer tries to log at startup, because syslog is not available yet, any startup message leak to console
- Extend
if:option with runtime evaluation of conditions. E.g., start a task onlyif:<run/foo/failure>(here the run task 'foo' failed) - Document new
if:,conflict:,nowarnoptions for run/task/service first introduced in v4.4 - Failure to open fstab should log to console, not just log to
/dev/kmsg - Rename
/lib/finit/system/*.conf, added numbered prefix to ensure proper execution order, e.g.,udevdshould always run first - Plugins and bundled services: dbus, keventd, watchdogd, and runparts, are now loaded after all services in
/lib/finit/system/. A new runtime-only path (for inspection) in/run/finit/system/is used - Redirect
log*output to console whenfinit.debugis enabled - Assert
<int/container>condition if we detect running in container - Add support for mdev's netlink daemon mode, issue #367
- Add support for mdevd in
10-hotplug.conf, preferred over plain mdev - Disable modprobe plugin by default, udevd and mdev/mdevd loads modules
- Update documentation for run/task shell limitations, issue #376
- Update documentation regarding automount of
/runand/tmp - Update plugin documentation, add section about limited tmpfiles.d(5) support
- Skip registering service when
if:!namematches a known service. This allows conditional loading of alternative services, e.g. if udevd is already loaded we do not need mdevd - Drop
doc/bootstrap.md, inaccurate and confusing to users
Fixes
-
Fix #227: believed to have been fixed in v4.3, the root cause was actually that Finit was waiting for a process that was no longer in the system. The fix is to ask the kernel on process-stop-timeout and replay the lost PID so that Finit can continue with reboot/shutdown
-
Fix #358: fix inotify events for
/etc/finit.conf, improved log messages and error handling -
Fix #361: cgroup move fail if run/task/services start as non-root. Regression in the v4.4 release cycle while adding support for the pre:/post:/ready: scripts. Now the latter scripts also properly run in their correct cgroup
-
Fix #366: document
fsck.*kernel command line options and simplify the configure flags--enable-fsckfixand--enable-fastbootto only adjust the default values for thefsck.*options. -
Fix #371: swap load order of
/lib/finit/system/*vs/etc/finit.d/*
We must run10-hotplug.conffirst to ensure devices and modules are up and loaded before the user's run/task/services are called. The order at bootstrap is now saved in/run/finit/conf.orderfor inspection,/run/finit/exec.ordershows the start order of each process -
Fix #372: lost
udevadmcalls due to overloading -
Adjust final
udevadm settletimeout: 5 -> 30 sec -
Fixed dbus plugin, the function that located
<pidfile> ...in thedbus/system.confcaused spurious line breaks which led to the service not being loaded properly -
The
runpartsexecutor now skips backup files (foo~) -
The
runpartsstanza now properly appendsstartto scripts that start withS[0-9]+. This has been broken for a very long time. -
Fix #377: expand service
env:filevariables, allow constructs like:RUNDIR=/var/run/somesvc DAEMON_ARGS=--workdir $RUNDIR --other-args... -
Fix #378: warn on console if run/task times out during bootstrap
-
Fix #378: add run/task support for
<!>to allow transition from bootstrap to multi-user runlevel even though task has not run yet. -
Fix #382: do not clear
<service/foo/STATE>conditions on reload.
Introduced back in v4.3-rc2, 82cc10b, the support for automatic service conditions have had a weird and unintended behavior. Any change in state (seedoc/svc-machine.png) caused Finit to clear out all previously acquired service conditions.However, when moving between RUNNING and PAUSED states, a service should not have its conditions cleared. The PAUSED state, seen also by all conditions moving to FLUX, is only temporary while an
initctl reloadis processed. If a service has no changes to be applied it will move back to RUNNING.Also, we cannot clear the service conditions because other run/task or services may depend on it and clearing them would cause Finit to
SIGTERMthese processes (since they are no longer eligible to run).
Finit v4.5-rc5
Changes
- Refactor
runpartsand/etc/rc.localto no longer block the main
loop, allowinginitctlcalls to interact with Finit. Issue #356 - Refactor the
runstanza to no longer block the main loop, issue #362 - Allow
suloginwith a user different fromroot, issue #357 - Allow disabling invocation of rescue mode from kernel command line
- Add
initctl -fto force-skip asking Finit for existing services
when creating new services during bootstrap, e.g./etc/rc.local initctl runlevelnow returnsN Sinstead ofN 10in bootstrapinitctl runlevel Nduring bootstrap is now allowed. It changes
the next runlevel to go to when bootstrap has completed. Effectively
overriding therunlevel Nstatement in/etc/finit.conf- Improved logging on failure to
execvp()a run/task/service, now
witherrno, e.g., "No such file or directory" when the command
is missing from$PATH - Add support for Bash completion to
initctl, issue #360 - Handle absolute path to
initctl [enable|disable], not supported - Update
finit.conf(5)man page with the recommended directory
hierarchy in/etc/finit.d/ - The
runpartscode has been split into/libexec/finit/runparts - The
runpartscommand now takes two options:sysvandprogress.
The former ensures onlySNNfooandKNNfooscripts are run. - Add SysV Init Compatibility section to documentation
- Increased MAX path for commands, and arguments: 64 -> 256
- The bundled watchdog daemon no longer tries to log at startup, because
syslog is not available yet, any startup message leak to console - Extend
if:option with runtime evaluation of conditions. E.g., start
a task onlyif:<run/foo/failure>(here the run task 'foo' failed) - Document new
if:,conflict:,nowarnoptions for run/task/service
first introduced in v4.4 - Failure to open fstab should log to console, not just log to
/dev/kmsg - Rename
/lib/finit/system/*.conf, added numbered prefix to ensure
proper execution order, e.g.,udevdshould always run first - Plugins and bundled services: dbus, keventd, watchdogd, and runparts,
are now loaded after all services in/lib/finit/system/. A new
runtime-only path (for inspection) in/run/finit/system/is used
Fixes
- Fix #227: believed to have been fixed in v4.3, the root cause was
actually that Finit was waiting for a process that was no longer in
the system. The fix is to ask the kernel on process-stop-timeout and
replay the lost PID so that Finit can continue with reboot/shutdown - Fix #358: fix inotify events for
/etc/finit.conf, improved log
messages and error handling - Fix #361: cgroup move fail if run/task/services start as non-root.
Regression in the v4.4 release cycle while adding support for the
pre:/post:/ready: scripts. Now the latter scripts also properly run
in their correct cgroup - Fix #366: document
fsck.*kernel command line options and simplify
the configure flags--enable-fsckfixand--enable-fastbootto
only adjust the default values for thefsck.*options. - Fix #371: swap load order of
/lib/finit/system/*vs/etc/finit.d/*
We must run10-hotplug.conffirst to ensure devices and modules are
up and loaded before the user's run/task/services are called. The order
at bootstrap is now saved in/run/finit/conf.orderfor inspection,
/run/finit/exec.ordershows the start order of each process - Fix #372: lost
udevadmcalls due to overloading - Fixed dbus plugin, the function that located
<pidfile> ...in the
dbus/system.confcaused spurious line breaks which led to the
service not being loaded properly - The
runpartsexecutor now skips backup files (foo~) - The
runpartsstanza now properly appendsstartto scripts that
start withS[0-9]+. This has been broken for a very long time.
Finit v4.5-rc4
Changes
- Refactor
runpartsand/etc/rc.localto no longer block the main
loop, allowinginitctlcalls to interact with Finit. Issue #356 - Refactor the
runstanza to no longer block the main loop, issue #362 - Allow
suloginwith a user different fromroot, issue #357 - Allow disabling invocation of rescue mode from kernel command line
- Add
initctl -fto force-skip asking Finit for existing services
when creating new services during bootstrap, e.g./etc/rc.local initctl runlevelnow returnsN Sinstead ofN 10in bootstrapinitctl runlevel Nduring bootstrap is now allowed. It changes
the next runlevel to go to when bootstrap has completed. Effectively
overriding therunlevel Nstatement in/etc/finit.conf- Improved logging on failure to
execvp()a run/task/service, now
witherrno, e.g., "No such file or directory" when the command
is missing from$PATH - Add support for Bash completion to
initctl, issue #360 - Handle absolute path to
initctl [enable|disable], not supported - Update
finit.conf(5)man page with the recommended directory
hierarchy in/etc/finit.d/ - The
runpartscode has been split into/libexec/finit/runparts - The
runpartscommand now takes two options:sysvandprogress.
The former ensures onlySNNfooandKNNfooscripts are run. - Add SysV Init Compatibility section to documentation
- Increased MAX path for commands, and arguments: 64 -> 256
- The bundled watchdog daemon no longer tries to log at startup, because
syslog is not available yet, any startup message leak to console - Extend
if:option with runtime evaluation of conditions. E.g., start
a task onlyif:<run/foo/failure>(here the run task 'foo' failed) - Document new
if:,conflict:,nowarnoptions for run/task/service
first introduced in v4.4
Fixes
- Fix #227: believed to have been fixed in v4.3, the root cause was
actually that Finit was waiting for a process that was no longer in
the system. The fix is to ask the kernel on process-stop-timeout and
replay the lost PID so that Finit can continue with reboot/shutdown - Fix #358: fix inotify events for
/etc/finit.conf, improved log
messages and error handling - Fix #361: cgroup move fail if run/task/services start as non-root.
Regression in the v4.4 release cycle while adding support for the
pre:/post:/ready: scripts. Now the latter scripts also properly run
in their correct cgroup - Fix #366: document
fsck.*kernel command line options and simplify
the configure flags--enable-fsckfixand--enable-fastbootto
only adjust the default values for thefsck.*options. - The
runpartsexecutor now skips backup files (foo~) - The
runpartsstanza now properly appendsstartto scripts that
start withS[0-9]+. This has been broken for a very long time.
Finit v4.5-rc3
Changes
- Refactor
runpartsand/etc/rc.localto no longer block the main
loop, allowinginitctlcalls to interact with Finit. Issue #356 - Refactor the
runstanza to no longer block the main loop, issue #362 - Allow
suloginwith a user different fromroot, issue #357 - Allow disabling invocation of rescue mode from kernel command line
- Add
initctl -fto force-skip asking Finit for existing services
when creating new services during bootstrap, e.g./etc/rc.local initctl runlevelnow returnsN Sinstead ofN 10in bootstrap- Improved logging on failure to
execvp()a run/task/service, now
witherrno, e.g., "No such file or directory" when the command
is missing from$PATH - Add support for Bash completion to
initctl, issue #360 - Handle absolute path to
initctl [enable|disable], not supported - Update
finit.conf(5)man page with the recommended directory
hierarchy in/etc/finit.d/ - The
runpartscode has been split into/libexec/finit/runparts - The
runpartscommand now takes two options:sysvandprogress.
The former ensures onlySNNfooandKNNfooscripts are run. - Add SysV Init Compatibility section to documentation
- Increased MAX path for commands, and arguments: 64 -> 256
- The bundled watchdog daemon no longer tries to log at startup, because
syslog is not available yet, any startup message leak to console
Fixes
- Fix #227: believed to have been fixed in v4.3, the root cause was
actually that Finit was waiting for a process that was no longer in
the system. The fix is to ask the kernel on process-stop-timeout and
replay the lost PID so that Finit can continue with reboot/shutdown - Fix #358: fix inotify events for
/etc/finit.conf, improved log
messages and error handling - Fix #361: cgroup move fail if run/task/services start as non-root.
Regression in the v4.4 release cycle while adding support for the
pre:/post:/ready: scripts. Now the latter scripts also properly run
in their correct cgroup - Fix #366: document
fsck.*kernel command line options and simplify
the configure flags--enable-fsckfixand--enable-fastbootto
only adjust the default values for thefsck.*options. - The
runpartsexecutor now skips backup files (foo~) - The
runpartsstanza now properly appendsstartto scripts that
start withS[0-9]+. This has been broken for a very long time.
Finit v4.5-rc2
Changes
- Refactor
runpartsand/etc/rc.localto no longer block the main loop, allowing these scripts to callinitctlto interact with Finit. Still in a limited way due to them being used at bootstrap, issue #356 - Refactor the
runstanza to no longer block the main loop, issue #362 - Allow
suloginwith a user different fromroot, issue #357 - Allow disabling invocation of rescue mode from kernel command line
- Add
initctl -fto force-skip asking Finit for existing services when creating new services during bootstrap, e.g./etc/rc.local initctl runlevelnow returnsN Sinstead ofN 10in bootstrap- Improved logging on failure to
execvp()a run/task/service, now witherrno, e.g., "No such file or directory" when the command is missing from$PATH - Add support for Bash completion to
initctl, issue #360 - Handle absolute path to
initctl [enable|disable], not supported - Update
finit.conf(5)man page with the recommended directory hierarchy in/etc/finit.d/ - The
runpartscode has been split into/libexec/finit/runparts - Add SysV Init Compatibility section to documentation
- Increased MAX path for commands, and arguments: 64 -> 256
Fixes
- Fix #227: believed to have been fixed in v4.3, the root cause was actually that Finit was waiting for a process that was no longer in the system. The fix is to ask the kernel on process-stop-timeout and replay the lost PID so that Finit can continue with reboot/shutdown
- Fix #358: fix inotify events for
/etc/finit.conf, improved log messages and error handling - Fix #361: cgroup move fail if run/task/services start as non-root. Regression in the v4.4 release cycle while adding support for the pre:/post:/ready: scripts. Now the latter scripts also properly run in their correct cgroup
- The
runpartsexecutor now skips backup files (foo~) - The
runpartsstanza now properly appendsstartto scripts that start withS[0-9]+. This has been broken for a very long time.