Releases: finit-project/finit
Releases · finit-project/finit
Finit v4.16
Changes
- Add
initctl switch-rootcommand and plugin hook point. Useful for
systems requiring early boot tasks like LUKS unlock, LVM activation,
or network boot before mounting the real root, by Aaron Andersen - Set USER and LOGNAME environment variables when dropping privileges.
Fixes issues with software like rootless Podman that determines user
identity from environment variables, by Aaron Andersen - Add
remain:yesoption for run/task oneshot commands, similar to the
systemdRemainAfterExit=yes, by Aaron Andersen - Clear service conditions on
initctl reload NAMEto ensure dependent
services are properly updated - Run service
stop:andreload:scripts as non-blocking processes,
preventing Finit from stalling on long-running helper scripts - Guard shutdown with timer watchdog to detect and debug shutdown hangs
- Add
~condition prefix to propagate reload from a dependency to the
dependent service. E.g.,<!~pid/netd>means not only a regular
condition, but whennetdreloads, restart this service too. Similar
to systemd's directivePropagatesReloadTo=, but declared on the
consumer side. Issue #416 tmpfiles: add support for-Eand--exclude-prefixflags
contributed by Aaron Andersen
Fixes
- Fix #464: invalid user:group examples in cgroups.md
- Fix #466: elogind path for Debian-based distros, by Jackie Liu
- Fix #467: TTY services stuck in restart state after non-zero exit.
Throttling logic introduced in v4.15 had duplicate checks causing
infinite timer loop, and TTYs lacked default restart timeout - Fix #475: clear pid condition on service collection to fix stale
deps. When a service crashes (SIGKILL), the RUNNING → HALTED path
bypasses STOPPING wherecond_clear()is normally called, leaving
dependents stuck - Fix #476: dependents not restarted after SIGHUP reload of service in
dependency chain. Addservice_step_all()at end of reload cycle to
guarantee convergence after conditions are reasserted. See also the
new~condition prefix (above) to propagate reload to dependents - Fix #478: fix
<dev/foo>conditions at boot, conditions that exist
before inotify was set up. Found and fixed by Mattias Walström - Fix reload of SIGHUP-capable services incorrectly disrupting their
dependents. E.g.,initctl reload syslogdwould stop dbus, dnsmasq,
etc. even though syslogd handles SIGHUP gracefully and its PID persists - Only remove managed pidfiles in service cleanup. For SysV services
withpid:!/path, the pidfile belongs to the service itself and Finit
should not delete it - Silence spurious cgroup warnings for short-lived processes where the
kernel reaps the child before cgroup assignment completes - Fix handling of already-mounted cgroups in
cgroup_init(), can occur
after switch_root or in container environments - Improve cgroups documentation clarity, grammar, and examples
Finit v4.16-rc1
Changes
- Add
initctl switch-rootcommand and plugin hook point. Useful for
systems requiring early boot tasks like LUKS unlock, LVM activation,
or network boot before mounting the real root, by Aaron Andersen - Set USER and LOGNAME environment variables when dropping privileges.
Fixes issues with software like rootless Podman that determines user
identity from environment variables, by Aaron Andersen - Add
remain:yesoption for run/task oneshot commands, similar to the
systemdRemainAfterExit=yes, by Aaron Andersen - Clear service conditions on
initctl reload NAMEto ensure dependent
services are properly updated - Run service
stop:andreload:scripts as non-blocking processes,
preventing Finit from stalling on long-running helper scripts - Guard shutdown with timer watchdog to detect and debug shutdown hangs
- Add
~condition prefix to propagate reload from a dependency to the
dependent service. E.g.,<!~pid/netd>means not only a regular
condition, but whennetdreloads, restart this service too. Similar
to systemd's directivePropagatesReloadTo=, but declared on the
consumer side. Issue #416 tmpfiles: add support for-Eand--exclude-prefixflags
contributed by Aaron Andersen
Fixes
- Fix #464: invalid user:group examples in cgroups.md
- Fix #466: elogind path for Debian-based distros, by Jackie Liu
- Fix #467: TTY services stuck in restart state after non-zero exit.
Throttling logic introduced in v4.15 had duplicate checks causing
infinite timer loop, and TTYs lacked default restart timeout - Fix #475: clear pid condition on service collection to fix stale
deps. When a service crashes (SIGKILL), the RUNNING → HALTED path
bypasses STOPPING wherecond_clear()is normally called, leaving
dependents stuck - Fix #476: dependents not restarted after SIGHUP reload of service in
dependency chain. Addservice_step_all()at end of reload cycle to
guarantee convergence after conditions are reasserted. See also the
new~condition prefix (above) to propagate reload to dependents - Fix #478: fix
<dev/foo>conditions at boot, conditions that exist
before inotify was set up. Found and fixed by Mattias Walström - Fix reload of SIGHUP-capable services incorrectly disrupting their
dependents. E.g.,initctl reload syslogdwould stop dbus, dnsmasq,
etc. even though syslogd handles SIGHUP gracefully and its PID persists - Only remove managed pidfiles in service cleanup. For SysV services
withpid:!/path, the pidfile belongs to the service itself and Finit
should not delete it - Silence spurious cgroup warnings for short-lived processes where the
kernel reaps the child before cgroup assignment completes - Fix handling of already-mounted cgroups in
cgroup_init(), can occur
after switch_root or in container environments - Improve cgroups documentation clarity, grammar, and examples
Finit v4.15
The Finit project now has a new home page: https://finit-project.github.io
Changes
- Change default reboot to SOC reset from WDT reset, issue #460
- Bump required versions of libite (v2.6.2) and libuev (v2.4.1)
- Allow longer service identifiers (
:id), up to 64 characters - Allow skipping bootstrap wait (180 sec) with Ctrl-C
- Unlock
initctlcommands start/stop/restart/reload service during bootstrap,
shutdown, and reboot. Also, allowinitctl reloadin bootstrap. This makes
it possible to start manual:yes type services at botostrap, for example, which
has been a common feature request - Add support for
clone3()syscall with atomic cgroup assignment, from Linux
kernel 5.3+. Eliminates race conditions where forked processes (e.g., logger
processes) ended up in wrong cgroups. Falls back tofork()on older kernels - Add support for cgroup delegation, useful for, e.g., container runtimes
creating sub-groups for the container instance's processes - Add cgroup leaf name override:
cgroup.system,name:udevdallows using
descriptive names like/system/udevd/instead of filename derived names
like/system/10-hotplug/. Syntax supports combining with other options:
cgroup.system,name:foo,delegate,cpu.max:10000 - Add support for Linux capabilities, allowing services to run with minimal
required privileges instead of running as root. Uses the modern IAB API
(Inheritable, Ambient, Bounding) from libcap. By Aaron Andersen - Add support for supplementary groups for services. Uses the syntax
@user:group,sup1,sup2to explicitly specify supplementary groups, in
addition to reading group membership from/etc/group. By Aaron Andersen - Add CPU throttled information to
initctloutput, showing when a service
has been throttled due to reaching its CPU quota - Add memory field to
initctl --jsonstatus output for cgroup-enabled
services - Default to user and group
root(UID 0) for services - Always check that service user and group resolve to valid UID/GID pairs,
otherwise log error and refuse to start service - Hide cursor at boot and shutdown for cleaner visual experience
- Rename
ttyservices early frominit->gettyeven though no getty
process has been started yet. This to aid in boot timing detection using
tools likebootchartd(BusyBox version or bootchart2 project) when Finit
only shows "Please press Enter to activate this console." - Services with
respawnoption (including TTYs) now delay retry on non-zero
exit codes instead of immediate respawn. Prevents busy-loop when service
fails repeatedly, which on some systems may have a crippling effect
Fixes
- Fix #453: RTC plugin fixes by Ming Liu, Atlas Copco
- Fix #455: ANSI escape sequences logged by tools using glib logging,
caused by use of PTY instead of pipe for stdout/stderr redirection - Fix #462:
/dev/ptsmounted with wrong mode (400 instead of 620), causing
permission issues with pseudo-terminals - getty: fix terminal scrollback issues after login on console TTY. Mouse
scroll wheel and Shift+PgUp/PgDn sometimes would not work properly - Fix flickering and artifacts in
initctl top - Fix file descriptor leak in
initctl top - Fix incorrect "max" limit reporting in
initctl [top|cgroup|--json]output
for child cgroups. Resolves effective limits by walking the cgroup hierarchy - Fix issue with running Finit under
bootchartd(bootchart2 project), always
setPATHandSHELLenvs early, before attempting to mount/procet al - Always reset ownership and permissions on TTY device nodes before launching getty
- Ensure mount/unmount skips
noautoentries
Finit v4.15-rc2
The Finit project now has a new home page: https://finit-project.github.io
Changes
- Change default reboot to SOC reset from WDT reset, issue #460
- Bump required versions of libite (v2.6.2) and libuev (v2.4.1)
- Allow longer service identifiers (
:id), up to 64 characters - Allow skipping bootstrap wait (180 sec) with Ctrl-C
- Unlock
initctlcommands start/stop/restart/reload service during bootstrap,
shutdown, and reboot. Also, allowinitctl reloadin bootstrap. This makes
it possible to start manual:yes type services at botostrap, for example, which
has been a common feature request - Add support for
clone3()syscall with atomic cgroup assignment, from Linux
kernel 5.3+. Eliminates race conditions where forked processes (e.g., logger
processes) ended up in wrong cgroups. Falls back tofork()on older kernels - Add support for cgroup delegation, useful for, e.g., container runtimes
creating sub-groups for the container instance's processes - Add cgroup leaf name override:
cgroup.system,name:udevdallows using
descriptive names like/system/udevd/instead of filename derived names
like/system/10-hotplug/. Syntax supports combining with other options:
cgroup.system,name:foo,delegate,cpu.max:10000 - Add support for Linux capabilities, allowing services to run with minimal
required privileges instead of running as root. Uses the modern IAB API
(Inheritable, Ambient, Bounding) from libcap. By Aaron Andersen - Add support for supplementary groups for services. Uses the syntax
@user:group,sup1,sup2to explicitly specify supplementary groups, in
addition to reading group membership from/etc/group. By Aaron Andersen - Add CPU throttled information to
initctloutput, showing when a service
has been throttled due to reaching its CPU quota - Add memory field to
initctl --jsonstatus output for cgroup-enabled
services - Default to user and group
root(UID 0) for services - Always check that service user and group resolve to valid UID/GID pairs,
otherwise log error and refuse to start service - Hide cursor at boot and shutdown for cleaner visual experience
- Rename
ttyservices early frominit->gettyeven though no getty
process has been started yet. This to aid in boot timing detection using
tools likebootchartd(BusyBox version or bootchart2 project) when Finit
only shows "Please press Enter to activate this console." - Services with
respawnoption (including TTYs) now delay retry on non-zero
exit codes instead of immediate respawn. Prevents busy-loop when service
fails repeatedly, which on some systems may have a crippling effect
Fixes
- Fix #453: RTC plugin fixes by Ming Liu, Atlas Copco
- Fix #455: ANSI escape sequences logged by tools using glib logging,
caused by use of PTY instead of pipe for stdout/stderr redirection - Fix #462:
/dev/ptsmounted with wrong mode (400 instead of 620), causing
permission issues with pseudo-terminals - getty: fix terminal scrollback issues after login on console TTY. Mouse
scroll wheel and Shift+PgUp/PgDn sometimes would not work properly - Fix flickering and artifacts in
initctl top - Fix file descriptor leak in
initctl top - Fix incorrect "max" limit reporting in
initctl [top|cgroup|--json]output
for child cgroups. Resolves effective limits by walking the cgroup hierarchy - Fix issue with running Finit under
bootchartd(bootchart2 project), always
setPATHandSHELLenvs early, before attempting to mount/procet al - Always reset ownership and permissions on TTY device nodes before launching getty
- Ensure mount/unmount skips
noautoentries
Finit v4.15-rc1
Changes
- Change default reboot to SOC reset from WDT reset, issue #460
- Bump required versions of libite (v2.6.2) and libuev (v2.4.1)
- Allow longer service identifiers (
:id), up to 64 characters - Allow skipping bootstrap wait (180 sec) with Ctrl-C
- Unlock
initctlcommands start/stop/restart/reload service during bootstrap,
shutdown, and reboot. Also, allowinitctl reloadin bootstrap. This makes
it possible to start manual:yes type services at botostrap, for example, which
has been a common feature request - Add support for
clone3()syscall with atomic cgroup assignment, from Linux
kernel 5.3+. Eliminates race conditions where forked processes (e.g., logger
processes) ended up in wrong cgroups. Falls back tofork()on older kernels - Add support for cgroup delegation, useful for, e.g., container runtimes
creating sub-groups for the container instance's processes - Add cgroup leaf name override:
cgroup.system,name:udevdallows using
descriptive names like/system/udevd/instead of filename derived names
like/system/10-hotplug/. Syntax supports combining with other options:
cgroup.system,name:foo,delegate,cpu.max:10000
Fixes
- Fix #453: RTC plugin fixes by Ming Liu, Atlas Copco
- Fix #455: ANSI escape sequences logged by tools using glib logging,
caused by use of PTY instead of pipe for stdout/stderr redirection - getty: fix terminal scrollback issues after login on console TTY. Mouse
scroll wheel and Shift+PgUp/PgDn sometimes would not work properly - Fix flickering and artifacts in
initctl top - Fix file descriptor leak in
initctl top - Fix incorrect "max" limit reporting in
initctl [top|cgroup|--json]output
for child cgroups. Resolves effective limits by walking the cgroup hierarchy - Ensure mount/unmount skips
noautoentries
Finit v4.14
Minor bug fix release.
Changes
- Add exit status/signal info when a process dies, by Mattias Berthel
- Extend
service kill:SECto support up to 300 sec. - Extend
norespawndebug to coverservice_retry() - Build without libsystemd replacement by default
Fixes
- Fix #449: ALSA plugin fail-to-build-from-source
- Fix
sysvstop command process environment, should be same as start - Fix state machine ordering issue: enter new config generation after
services disabled in previous generation have been stopped
Finit v4.13
Note
This release introduce a bare bones libsystemd replacement with an
<systemd/sd-daemon.h> include file. Other systemd features are the
reload:script and stop:script, mimicking ExecReload and ExecStop.
Changes
initctl signalcommand has been renamed toinitctl kill- Drop xz tarballs from distribution, gzip is good enough
- New
tmpfilesstand-alone program, refactored from the existing
tmpfiles.d support in Finit, by Aaron Andersen, PR #439--removecommand runs only therandRrules--createis used for all other cases (bootstrap)
- All
notify:systemdservices now log withlogitby default. This
because it supports systemd style log severity, leading"<NUM>" - Support for quoted arguments to run/task/service options, issue #441
- Clear command line arguments after bootstrap, issue #442
- Support for
stop:'script [args]'to stop a sysv/service instead of
the commonfoo-stop-start.sh stop, orSIGTERM, issue #412 - Support for
reload:'script [args]'to trigger a configuration
reload in a service, issue #446
Fixes
- Fix #437: buffer overflow in
initctl status - Fix #438: support very long command lines in
initctl ps/top - Fix #440: broken systemd and s6 readiness notification
- Fix #443: build warnings, by Ming Liu, Atlas Copco
- Fix #444: handle loooooong arguments, by Aaron Andersen
- Fix service's redirected stdout/stderr log priority in fallback mode,
when neitherloggerorlogitis available. This fix also checks
for systemd style log severity, leading"<NUM>"in log messages - Ensure API socket used by
initctlis non-blocking (event loop)
Finit v4.13-rc1
Note
This release introduce a bare bones libsystemd replacement with an
<systemd/sd-daemon>.h include file. Other systemd features are the
reload:script and stop:script, mimicking ExecReload and ExecStop.
Changes
- Drop xz tarballs from distribution, gzip is good enough
- New
tmpfilesstand-alone program, refactored from the existing
tmpfiles.d support in Finit, by Aaron Andersen, PR #439--removecommand runs only therandRrules--createis used for all other cases (bootstrap)
- All
notify:systemdservices now log withlogitby default. This
because it supports systemd style log severity, leading"<NUM>" - Support for quoted arguments to run/task/service options, issue #441
- Clear command line arguments after bootstrap, issue #442
- Support for
stop:'script [args]'to stop a sysv/service instead of
the commonfoo-stop-start.sh stop, orSIGTERM, issue #412 - Support for
reload:'script [args]'to trigger a configuration
reload in a service, issue #446
Fixes
- Fix #437: buffer overflow in
initctl status - Fix #438: support very long command lines in
initctl ps/top - Fix #440: broken systemd and s6 readiness notification
- Fix #443: build warnings, by Ming Liu, Atlas Copco
- Fix #444: handle loooooong arguments, by Aaron Andersen
- Fix service's redirected stdout/stderr log priority in fallback mode,
when neitherloggerorlogitis available. This fix also checks
for systemd style log severity, leading"<NUM>"in log messages - Ensure API socket used by
initctlis non-blocking (event loop)
Finit v4.12
Changes
- Improve notify:s6 readiness compatibility, by Aaron Andersen
- Update
runpartsusage text
Fixes
- Fix variable overloading in urandom plugin
- Fix buffer overwrite in urandom plugin, reported by Aaron Andersen
Finit v4.11
Changes
- Update documentation regarding transition from runlevel S to 2, how
run/tasks must "complete" before Finit can move to the next runlevel - Improve argument handling in bundled getty when launching login
Fixes
- Fix #432: allow services in
setupstate to be stopped. This fixes
a serious blocker introduced in 4.10 that prevented systems from
being rebooted when any service was in this state - Fix fallback
SIGKILLwhen stopping a service withSIGTERMdoes
not work. This fixes a serious issue with services not responding to
the defaultSIGTERM - Fix pre/post/ready/cleanup script execution if service has an
optionalenv:file(leading-) - Fix blocked signals for pre/post/ready/cleanup scripts preventing
normal shutdown when a service/sysv is stopped in its setup state - Fix issue where a pre:script creates a PID file in
/runcause the
service to move from setup state to running. Anysvc_tin setup,
teardown, or cleanup state should be ignored in the pidfile plugin