Finit v4.3
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
module
s 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
andtask/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 #225initctl cond get
support to matchcond [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 leastlo
up at boot - Log output from
ifup -a
(andifdown -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 difficultpid:
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 propername:id
is used instead. Meaning, a service without a custom:ID
orname:
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 insulogin
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 inpre:
andpost
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