Skip to content

Finit v4.3

Compare
Choose a tag to compare
@github-actions github-actions released this 15 May 20:00

Critical bug fix release. If you run a 32-bit target with GLIBC 2.34 you need to upgrade!

Note: system verbosity on console at start and shutdown has been
increased. Now the output of all commands is logged to the
system logger, for early services /dev/kmsg is used.

Also: please notice the updated support for enabling and disabling
kernel and Finit debug messages on the system console. Very
useful when debugging either of them, e.g., a kernel module.
For details, see cmdline.md.

Changes

  • Support for overriding default runlevel from kernel command line. Any runlevel [1-9] may be selected, except 6 (reboot). Issue #261
  • New command line option: finit.fstab=/etc/fstab.custom, with full support for mounting, mount helpers, fsck, and swapon/off, issue #224
  • Support for special device /dev/root, which may not exist in /dev. Finit now looks up the matching block device for / in /sys/block/
  • Loading modules no longer shows arguments in progress output
  • Warning messages in progress output now in yellow, not red, issue #214
  • initctl, new command line option -V,--version for ease of use
  • New condition done for run task, issue #207 by Ming Liu, Atlas Copco
  • Refactor parts of shutdown and reboot sequence for PREEMPT-RT kernels, by Robert Andersson, Mathias Thore, and Ming Liu, Atlas Copco
  • Conditions for run/task/sysv status, e.g. run/foo/success and task/bar/failure. Issue #232, by Ming Liu, Atlas Copco
  • Conditions for services, can be used to synchronize other stanzas:
    • service/foo/running
    • service/foo/halted
    • service/foo/missing
    • service/foo/crashed
    • service/foo/stopped
    • service/foo/busy
    • service/foo/restart
  • initctl signal support, by Jörgen Sigvardsson, issue #225
  • initctl cond get support to match cond [set | clear], issue #255
  • [WARN] messages on console now printed in yellow, issue #214
  • Network services now also stopped when going to runlevel 6 (reboot), not just runlevel 0 (shutdown) or 1 (single-user)
  • When ifup is missing on the system, bring at least lo up at boot
  • Log output from ifup -a (and ifdown -a), to syslog
  • Avoid blocking PID 1 when starting SysV init scripts
  • Allow custom pid: for SysV init scripts
  • Document supported types of forking/non-forking services
  • Auto-detect running in some common forms of containers
  • Simplify shutdown/reboot when running in a container
  • Log to stderr when running in a container w/o syslog daemon
  • Add support for type:forking to services, already supported but with a very difficult pid: syntax, issue #223. Docs updated
  • Support for setting global environment variables in finit.conf, please note: this also affects Finit itself, be careful!
  • Extended environment variables for pre/post scripts, issue #189
  • Document secret service option respawn, which bypasses the crash semantics, allowing endless restarts
  • Document secret HOOK_BANNER, the first hook point before the banner
  • Document slightly confusing initctl reload foo command. It does not reload the service's .conf file! Issue #263
  • Log changes; all instances where previously the basename cmd of a service was used to identify the service, now the proper name:id is used instead. Meaning, a service without a custom :ID or name: will display the same as before, but with any of those customization the name and name:id will now be shown. Note: this may affect any log scrapers out there!
  • New plugin: hook-scripts, allows run-parts(8) style scripts to run on any hook point. Contributed by Tobias Waldekranz
  • initctl (reboot) falls back to -f when it detects it is in sulogin recovery mode, issue #247
  • The bundled sulogin is no longer enabled by default, in favor of distribution versions. Enable with ./configure --with-sulogin
  • Support args to sysv-like scripts, e.g. bridge-stp br0 start
  • The modules-load plugin now skips all lines starting with # and ;. Furthermore, files in /etc/modules-load.d/*.conf are now read in lexicographic order and UNIX backup files (foo.conf~) are skipped
  • The name:id tuple is now more consistently used in all log and debug messages instead of the basename of the command
  • Simplify error output of initctl start/stop/restart/signal, no more extra usage help, just a plain error message
  • Exit codes of initctl have changed to use LSB script standard and BSD sysexits.h exit codes. As before, a non-zero exit is error or missing
  • Add support for initctl -q to more commands: stop, start, restart, reload, signal, etc.

Fixes

  • Fix nasty 32/64-bit alignment issue between finit and its plugins, applicable to 32-bit targets with GLIBC 2.34 and later. External plugins must make sure to use, at least: -D_TIME_BITS=64
  • Fix #215: disable cgroup support at runtime if kernel lacks support or does not have the required controllers (cpu)
  • Fix #217: iwatcher initialization issue, by Ming Liu, Atlas Copco
  • Fix #218: initctl matches too many services, by Ming Liu, Atlas Copco
  • Fix #219: not all filesystems unmounted at shutdown, by Ming Liu, Mathias Thore, and Robert Andersson, Atlas Copco
  • Fix #226: initctl shows wrong PID for crashing services
  • Fix #227: reboot stalls if process stopped with [WARN]
  • Fix #233: initctl shows wrong status for run/task, by Sergio Morlans and Ming Liu, Atlas Copco
  • Fix #248: source env:file also in pre: and post scripts
  • Fix #260: drop limit on device name in Checking filesystem... output
  • Fix start/stop and monitoring (restart) of SysV init scripts and forking services, see the updated documentation for details
  • Fix call to swapoff at shutdown, does not support -e flag
  • Fix suspend to RAM issue. Previously reboot(RB_SW_SUSPEND) was used, now the modern /sys/power/state API is used instead.
  • Fix nasty run/task/service matcher bug, triggered by stanzas using the same basename of a command but different :ID. Caused Finit to match with already registered but different run/task/service