Repository navigation
Releases: finit-project/finit
Release list
Finit v5.0-rc1
Changes
-
keventd is now a full device manager, promoted from the power supply
monitor it was in v4, and the device management defaults have swapped:
keventd is enabled by default (--without-keventdopts out, libblkid is
required to build it), while the hotplug plugin, which runs an external
udevd,mdevd, ormdev, is now opt-in. With the plugin enabled,
keventd steps back to passive mode and monitors only power supply
events, as before. As the system device manager it replaces mdev,
mdevd, and udevd, and handles:-
udev rules: an engine covering most of the udev(7) grammar --
parent-chain matching,PROGRAM/RESULT,IMPORT,RUN,
GOTO/LABEL, and the standard substitutions -- reading the usual
udev/rules.ddirectories under/lib,/run, and/etcwith
udev's precedence and masking. A curated ruleset derived from eudev
3.2.14 is installed by default,--without-udev-rulesskips it.
See Device Manager for the supported subset and the
few deliberate divergences -
builtins used by the ruleset:
blkid,hwdb,input_id,kmod,
net_id,path_id, andusb_id -
device nodes with per-subsystem default permissions, persistent
symlinks (/dev/disk/by-uuid,by-label,by-id,by-path, plus
by-id/by-pathfor input, serial, sound, v4l, and tape), kernel
firmware load requests, and module loading fromMODALIAS -
predictable network interface names via the eudev ruleset,
net.ifnames=0on the kernel command line keeps classic names.
Note: switching a system over to keventd can rename its NICs -
coldplug: as device manager keventd starts with
-c, replaying add
events for hardware present at boot. Thepid/keventdcondition
is deferred until the coldplug queue has drained, so services
gating on it can assume/devis populated and symlinks are live -
keventd -S, theudevadm settleequivalent, asks the running
daemon over D-Bus and falls back to polling the kernel's uevent
sequence number -
libudev compatibility: per-device properties in
/run/udev/data
and processed uevents rebroadcast to netlink group 0x4, so
libudev-zero consumers, e.g. compositors and libinput, see hotplug
events -
new conditions for the service engine:
dev/<node>for device
nodes,class/<subsystem>/<name>for sysfs class devices without a
node (LEDs, IIO, DSA ports), anddriver/<name>, asserted while a
driver is bound to at least one device
-
-
Generated
/run/finit/system/*.conffiles for bundled services (keventd,
watchdogd, runparts) are now read before/lib/finit/system/*.confinstead
of after. Built-ins can now be referenced inif:statements from system
.conf files and overridden by name from both/lib/finit/systemand
/etc/finit.d, the latter is still always read last -
The
dbus.soplugin, which starts an externaldbus-daemon, is now enabled
by default. It does nothing on systems without adbus-daemoninstalled,
and--disable-dbus-pluginopts out. The daemon it used to register from C
now lives in20-dbus.conf, and the directories it needs in
tmpfiles.d/dbus.conf, so both can be overridden from/etclike any other
system file. Those directories are no longer chowned tomessagebus,
matching how Finit ships directories for other daemons -
The bundled
suloginandwatchdogdare now built and installed by
default, like keventd and the D-Bus support.--without-suloginand
--without-watchdogopt out. Note, Finit startswatchdogdby itself
when the WDT device node exists -
The
ttyblock takespassenv, which the line-based format has had since
v4.4 (issue #286) and the block format was missing -
New
providessetting for run/task/service/sysv blocks, naming conditions
the service asserts in addition to its ownpid/<ident>. Lets variants of
one service, qualified withif, share the barrier condition downstream
services wait for, which a block title alone could not express. Any
namespace is allowed, and a second claim on the same condition is refused
with a warning naming the owner -
The
commandsetting in a block takes a list of candidates for the same
service,command = { "/lib/systemd/systemd-udevd", "-udevd" }, and Finit
starts the first one it finds. The line-based format could only express
this by repeating the whole stanza per candidate -
Finit now ships with a built-in brokerless D-Bus implementation, libink,
exposing the running init system as a peer on its own private bus at
/run/finit/bus, and -- opportunistically -- registeringorg.finiton the
standard system bus when adbus-daemonis reachable. No external
libdbus/sd-bus/GIOdependency. The bus implements the stock
org.freedesktop.DBus,Peer,Introspectable, andProperties
interfaces. See D-Bus Integration for the full surface, build
flag, anddbus-send/dbus-monitorexamples -
New
org.finit.Manager1interface at/org/finit/manager:ListServices,
GetService,Start/Stop/Restart/Reload,SetRunlevel,SetDebug,
Signal,Suspend, and theReboot/Halt/Powerofftriplet, which take
a timeout argument arming the emergency shutdown bypass likeinitctl -t.
Read-only propertiesRunlevel,PrevRunlevel,Version; signals
ServiceStateChanged (sss)andRunlevelChanged (ss) -
New
org.finit.Service1interface at/org/finit/service/<encoded>, one
object per loaded service, withStart/Stop/Restart/Reloadfor
working off an object handle rather than passing the identity string around -
New
org.finit.Cond1interface at/org/finit/cond:Get,Set,Clear,
List,Dumpfor user-defined conditions, with a
ConditionChanged (ss)signal -
keventd serves
org.finit.Device1on its own bus at/run/keventd/bus:
Settle,Trigger,Info,RulesReload, queue-state properties, and a
DeviceProcessed (ss)signal. Theudevadmsettle/trigger/info
equivalents are thereby bus methods andkeventd -Sasks the running daemon
first. Finit also gained aManager1.ConfigReloadedsignal, fired when
initctl reloadcompletes, for external condition providers and monitoring -
Privileged D-Bus methods accept root and members of the
--with-group
group; everyone else is refused. On the local bus the caller's uid and
groups come straight from the kernel (SO_PEERCRED+SO_PEERGROUPS), so
the check never blocks PID 1 on an NSS lookup. Over the system bus the uid
is resolved from the broker (GetConnectionUnixUser) and privileged methods
are root-only. Read-only methods are open -
initctlnow transparently routes through D-Bus when the bus is reachable,
with the legacyINIT_SOCKETtransport as a fallback:start,stop,
restart,reload,reload <svc>,reboot,halt,poweroff,
suspend,debug,signal,runlevel, andcond {get,set,clr}all use
the new path. Two new subcommands show up that have no legacy equivalent:-
initctl monitor-- streams every signal on the bus to the terminal,
one line per delivery (HH:MM:SS iface.member(args)), until
interrupted. Same idea asdbus-monitor, but scoped to Finit and with
no address plumbing required. -
Issuing
initctl cond set/clrover D-Bus also fires the
Cond1.ConditionChangedsignal, so observers see user-driven state
changes the same way they see service-driven ones.
-
-
Restart log now spells out the signal name and flags core dumps,
e.g.killed by SIGKILLorkilled by SIGSEGV, core dumped, in place of
the bare numericby signal: N. Gives operators a much stronger breadcrumb
when a daemon dies unexpectedly
Fixes
- Reject a .conf file that declares the same block title twice. The title is
the service identity and libConfuse merges two sections sharing one, so the
file loaded as a single service holding a mix of both declarations,
silently. This hitsystem/10-hotplug.conf, where the twoudevdblocks
left only the second command, dropping the service on systems that only have
systemd-udevd. The same title in another file is still how a system .conf
is overridden - Remove stale daemon-owned (
pid:!) pidfiles after unclean exits. When a
daemon dies via SIGKILL/OOM/segfault, or exits early during startup, its
pidfile lingers and can prevent the next instance from starting --
dbus-daemonfor example refuses to start when its pidfile already exists,
so Finit's restart loop gives up. Finit now drops the file when it still
names the just-reaped PID and that PID is no longer alive (the liveness
check guards against PID reuse). This is a controlled exception to the
long-standing rule that Finit does not touch service-owned pidfiles - Fix misspelled
SIGUNKOWNreturned bysig_name()for unknown signal
numbers, now spelled correctly asSIGUNKNOWN. Surfaced by the new restart
log above
Finit v4.17
Changes
- Add Plymouth boot splash plugin to manage the
plymouthdlifecycle across boot,
switch_root, and shutdown. Activated by thesplashkernel command line
argument. By Aaron Andersen - Add
tty:option for run/task/service stanzas to acquire a controlling
terminal. The device is opened as stdin, set as the session's controlling TTY
viaTIOCSCTTY, andTERMis set automatically —linuxfor virtual terminals
andvt102for serial lines. By Ollie Gutierrez - Improve console output atomicity at boot and shutdown: description and status
([ OK ]/[FAIL]) are emitted in a single write so kernel messages cannot
split them. If output has been scrolled away, the description is re-printed
before the final status line. Console buffer is drained withtcdrain(2)and
ANSI attributes are reset before handing control back to the kernel at
shutdown/reboot
Fixes
- Fix reverse-dependency condition handling on reload: when a service without
SIGHUP support is reloaded, its condition is now cleared immediately so
dependents transition toSTOPPINGbeforeSIGTERMis sent to the parent,
preventing them from crashing with an incremented restart counter - Fix
/var/tmpmode intmpfiles.d/var.conffrom0777to1777(sticky bit)
to match/tmp, by Aaron Andersen - Fix potential memory corruption in config parser: stale pointer captures of
PATHandSHELLat startup could dangle after environment modification;
conf_reset_env()now reads from the live environment instead, by Vasily Zubko - Fix plugin name registration: replace
__FILE__macro with explicit string
literals in all plugin structs and debug messages, preventing subtle build-
system–dependent macro expansion issues, by Vasily Zubko
Finit v4.17-rc1
Changes
- Add Plymouth boot splash plugin to manage the
plymouthdlifecycle across boot,
switch_root, and shutdown. Activated by thesplashkernel command line
argument. By Aaron Andersen - Add
tty:option for run/task/service stanzas to acquire a controlling
terminal. The device is opened as stdin, set as the session's controlling TTY
viaTIOCSCTTY, andTERMis set automatically —linuxfor virtual terminals
andvt102for serial lines. By Ollie Gutierrez - Improve console output atomicity at boot and shutdown: description and status
([ OK ]/[FAIL]) are emitted in a single write so kernel messages cannot
split them. If output has been scrolled away, the description is re-printed
before the final status line. Console buffer is drained withtcdrain(2)and
ANSI attributes are reset before handing control back to the kernel at
shutdown/reboot
Fixes
- Fix reverse-dependency condition handling on reload: when a service without
SIGHUP support is reloaded, its condition is now cleared immediately so
dependents transition toSTOPPINGbeforeSIGTERMis sent to the parent,
preventing them from crashing with an incremented restart counter - Fix
/var/tmpmode intmpfiles.d/var.conffrom0777to1777(sticky bit)
to match/tmp, by Aaron Andersen - Fix potential memory corruption in config parser: stale pointer captures of
PATHandSHELLat startup could dangle after environment modification;
conf_reset_env()now reads from the live environment instead, by Vasily Zubko - Fix plugin name registration: replace
__FILE__macro with explicit string
literals in all plugin structs and debug messages, preventing subtle build-
system–dependent macro expansion issues, by Vasily Zubko
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)