Tags: finit-project/finit
Tags
Finit v4.16 GA Changes: - Add `initctl switch-root` command 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:yes` option for run/task oneshot commands, similar to the systemd `RemainAfterExit=yes`, by Aaron Andersen - Clear service conditions on `initctl reload NAME` to ensure dependent services are properly updated - Run service `stop:` and `reload:` 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 when `netd` reloads, restart this service too. Similar to systemd's directive `PropagatesReloadTo=`, but declared on the consumer side. Issue #416 - `tmpfiles`: add support for `-E` and `--exclude-prefix` flags 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 where `cond_clear()` is normally called, leaving dependents stuck - Fix #476: dependents not restarted after SIGHUP reload of service in dependency chain. Add `service_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 syslogd` would stop dbus, dnsmasq, etc. even though syslogd handles SIGHUP gracefully and its PID persists - Only remove managed pidfiles in service cleanup. For SysV services with `pid:!/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 Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
Finit v4.16-rc1 Changes: - Add `initctl switch-root` command 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:yes` option for run/task oneshot commands, similar to the systemd `RemainAfterExit=yes`, by Aaron Andersen - Clear service conditions on `initctl reload NAME` to ensure dependent services are properly updated - Run service `stop:` and `reload:` 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 when `netd` reloads, restart this service too. Similar to systemd's directive `PropagatesReloadTo=`, but declared on the consumer side. Issue #416 - `tmpfiles`: add support for `-E` and `--exclude-prefix` flags 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 where `cond_clear()` is normally called, leaving dependents stuck - Fix #476: dependents not restarted after SIGHUP reload of service in dependency chain. Add `service_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 syslogd` would stop dbus, dnsmasq, etc. even though syslogd handles SIGHUP gracefully and its PID persists - Only remove managed pidfiles in service cleanup. For SysV services with `pid:!/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 Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
Finit v4.13 GA - `initctl signal` command has been renamed to `initctl kill` - Drop xz tarballs from distribution, gzip is good enough - New `tmpfiles` stand-alone program, refactored from the existing tmpfiles.d support in Finit, by Aaron Andersen, PR #439 - `--remove` command runs only the `r` and `R` rules - `--create` is used for all other cases (bootstrap) - All `notify:systemd` services now log with `logit` by 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 common `foo-stop-start.sh stop`, or `SIGTERM`, issue #412 - Support for `reload:'script [args]'` to trigger a configuration reload in a service, issue #446 - 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 neither `logger` or `logit` is available. This fix also checks for systemd style log severity, leading `"<NUM>"` in log messages - Ensure API socket used by `initctl` is non-blocking (event loop) Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
Finit v4.13-rc1 - Drop xz tarballs from distribution, gzip is good enough - New `tmpfiles` stand-alone program, refactored from the existing tmpfiles.d support in Finit, by Aaron Andersen, PR #439 - `--remove` command runs only the `r` and `R` rules - `--create` is used for all other cases (bootstrap) - All `notify:systemd` services now log with `logit` by 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 common `foo-stop-start.sh stop`, or `SIGTERM`, issue #412 - Support for `reload:'script [args]'` to trigger a configuration reload in a service, issue #446 - 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 neither `logger` or `logit` is available. This fix also checks for systemd style log severity, leading `"<NUM>"` in log messages - Ensure API socket used by `initctl` is non-blocking (event loop) Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
PreviousNext