Skip to content

Releases: finit-project/finit

Finit v5.0-rc1

Finit v5.0-rc1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 29 Aug 14:41
5.0-rc1
a274677

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-keventd opts out, libblkid is
    required to build it), while the hotplug plugin, which runs an external
    udevd, mdevd, or mdev, 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.d directories under /lib, /run, and /etc with
      udev's precedence and masking. A curated ruleset derived from eudev
      3.2.14 is installed by default, --without-udev-rules skips 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, and usb_id

    • device nodes with per-subsystem default permissions, persistent
      symlinks (/dev/disk/by-uuid, by-label, by-id, by-path, plus
      by-id/by-path for input, serial, sound, v4l, and tape), kernel
      firmware load requests, and module loading from MODALIAS

    • predictable network interface names via the eudev ruleset,
      net.ifnames=0 on 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. The pid/keventd condition
      is deferred until the coldplug queue has drained, so services
      gating on it can assume /dev is populated and symlinks are live

    • keventd -S, the udevadm settle equivalent, 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), and driver/<name>, asserted while a
      driver is bound to at least one device

  • Generated /run/finit/system/*.conf files for bundled services (keventd,
    watchdogd, runparts) are now read before /lib/finit/system/*.conf instead
    of after. Built-ins can now be referenced in if: statements from system
    .conf files and overridden by name from both /lib/finit/system and
    /etc/finit.d, the latter is still always read last

  • The dbus.so plugin, which starts an external dbus-daemon, is now enabled
    by default. It does nothing on systems without a dbus-daemon installed,
    and --disable-dbus-plugin opts out. The daemon it used to register from C
    now lives in 20-dbus.conf, and the directories it needs in
    tmpfiles.d/dbus.conf, so both can be overridden from /etc like any other
    system file. Those directories are no longer chowned to messagebus,
    matching how Finit ships directories for other daemons

  • The bundled sulogin and watchdogd are now built and installed by
    default, like keventd and the D-Bus support. --without-sulogin and
    --without-watchdog opt out. Note, Finit starts watchdogd by itself
    when the WDT device node exists

  • The tty block takes passenv, which the line-based format has had since
    v4.4 (issue #286) and the block format was missing

  • New provides setting for run/task/service/sysv blocks, naming conditions
    the service asserts in addition to its own pid/<ident>. Lets variants of
    one service, qualified with if, 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 command setting 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 -- registering org.finit on the
    standard system bus when a dbus-daemon is reachable. No external
    libdbus/sd-bus/GIO dependency. The bus implements the stock
    org.freedesktop.DBus, Peer, Introspectable, and Properties
    interfaces. See D-Bus Integration for the full surface, build
    flag, and dbus-send/dbus-monitor examples

  • New org.finit.Manager1 interface at /org/finit/manager: ListServices,
    GetService, Start/Stop/Restart/Reload, SetRunlevel, SetDebug,
    Signal, Suspend, and the Reboot/Halt/Poweroff triplet, which take
    a timeout argument arming the emergency shutdown bypass like initctl -t.
    Read-only properties Runlevel, PrevRunlevel, Version; signals
    ServiceStateChanged (sss) and RunlevelChanged (ss)

  • New org.finit.Service1 interface at /org/finit/service/<encoded>, one
    object per loaded service, with Start/Stop/Restart/Reload for
    working off an object handle rather than passing the identity string around

  • New org.finit.Cond1 interface at /org/finit/cond: Get, Set, Clear,
    List, Dump for user-defined conditions, with a
    ConditionChanged (ss) signal

  • keventd serves org.finit.Device1 on its own bus at /run/keventd/bus:
    Settle, Trigger, Info, RulesReload, queue-state properties, and a
    DeviceProcessed (ss) signal. The udevadm settle/trigger/info
    equivalents are thereby bus methods and keventd -S asks the running daemon
    first. Finit also gained a Manager1.ConfigReloaded signal, fired when
    initctl reload completes, 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

  • initctl now transparently routes through D-Bus when the bus is reachable,
    with the legacy INIT_SOCKET transport as a fallback: start, stop,
    restart, reload, reload <svc>, reboot, halt, poweroff,
    suspend, debug, signal, runlevel, and cond {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 as dbus-monitor, but scoped to Finit and with
      no address plumbing required.

    • Issuing initctl cond set/clr over D-Bus also fires the
      Cond1.ConditionChanged signal, 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 SIGKILL or killed by SIGSEGV, core dumped, in place of
    the bare numeric by 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 hit system/10-hotplug.conf, where the two udevd blocks
    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-daemon for 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 SIGUNKOWN returned by sig_name() for unknown signal
    numbers, now spelled correctly as SIGUNKNOWN. Surfaced by the new restart
    log above

Finit v4.17

Choose a tag to compare

@github-actions github-actions released this 28 Apr 08:25
4.17
e74dff9

Changes

  • Add Plymouth boot splash plugin to manage the plymouthd lifecycle across boot,
    switch_root, and shutdown. Activated by the splash kernel 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
    via TIOCSCTTY, and TERM is set automatically — linux for virtual terminals
    and vt102 for 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 with tcdrain(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 to STOPPING before SIGTERM is sent to the parent,
    preventing them from crashing with an incremented restart counter
  • Fix /var/tmp mode in tmpfiles.d/var.conf from 0777 to 1777 (sticky bit)
    to match /tmp, by Aaron Andersen
  • Fix potential memory corruption in config parser: stale pointer captures of
    PATH and SHELL at 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

Finit v4.17-rc1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 28 Apr 07:12
4.17-rc1
eb913e8

Changes

  • Add Plymouth boot splash plugin to manage the plymouthd lifecycle across boot,
    switch_root, and shutdown. Activated by the splash kernel 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
    via TIOCSCTTY, and TERM is set automatically — linux for virtual terminals
    and vt102 for 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 with tcdrain(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 to STOPPING before SIGTERM is sent to the parent,
    preventing them from crashing with an incremented restart counter
  • Fix /var/tmp mode in tmpfiles.d/var.conf from 0777 to 1777 (sticky bit)
    to match /tmp, by Aaron Andersen
  • Fix potential memory corruption in config parser: stale pointer captures of
    PATH and SHELL at 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

Choose a tag to compare

@github-actions github-actions released this 27 Feb 09:44
4.16
17c6791

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

Finit v4.16-rc1

Finit v4.16-rc1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 24 Feb 04:44
4.16-rc1
cef5049

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

Finit v4.15

Choose a tag to compare

@github-actions github-actions released this 01 Jan 15:53
4.15
d7fd5bc

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 initctl commands start/stop/restart/reload service during bootstrap,
    shutdown, and reboot. Also, allow initctl reload in 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 to fork() 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:udevd allows 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,sup2 to explicitly specify supplementary groups, in
    addition to reading group membership from /etc/group. By Aaron Andersen
  • Add CPU throttled information to initctl output, showing when a service
    has been throttled due to reaching its CPU quota
  • Add memory field to initctl --json status 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 tty services early from init -> getty even though no getty
    process has been started yet. This to aid in boot timing detection using
    tools like bootchartd (BusyBox version or bootchart2 project) when Finit
    only shows "Please press Enter to activate this console."
  • Services with respawn option (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/pts mounted 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
    set PATH and SHELL envs early, before attempting to mount /proc et al
  • Always reset ownership and permissions on TTY device nodes before launching getty
  • Ensure mount/unmount skips noauto entries

Finit v4.15-rc2

Finit v4.15-rc2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 01 Jan 15:08
4.15-rc2
3f98220

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 initctl commands start/stop/restart/reload service during bootstrap,
    shutdown, and reboot. Also, allow initctl reload in 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 to fork() 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:udevd allows 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,sup2 to explicitly specify supplementary groups, in
    addition to reading group membership from /etc/group. By Aaron Andersen
  • Add CPU throttled information to initctl output, showing when a service
    has been throttled due to reaching its CPU quota
  • Add memory field to initctl --json status 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 tty services early from init -> getty even though no getty
    process has been started yet. This to aid in boot timing detection using
    tools like bootchartd (BusyBox version or bootchart2 project) when Finit
    only shows "Please press Enter to activate this console."
  • Services with respawn option (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/pts mounted 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
    set PATH and SHELL envs early, before attempting to mount /proc et al
  • Always reset ownership and permissions on TTY device nodes before launching getty
  • Ensure mount/unmount skips noauto entries

Finit v4.15-rc1

Finit v4.15-rc1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 18 Dec 06:24
4.15-rc1
702a606

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 initctl commands start/stop/restart/reload service during bootstrap,
    shutdown, and reboot. Also, allow initctl reload in 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 to fork() 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:udevd allows 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 noauto entries

Finit v4.14

Choose a tag to compare

@github-actions github-actions released this 29 Aug 15:15
4.14
6f6267f

Minor bug fix release.

Changes

  • Add exit status/signal info when a process dies, by Mattias Berthel
  • Extend service kill:SEC to support up to 300 sec.
  • Extend norespawn debug to cover service_retry()
  • Build without libsystemd replacement by default

Fixes

  • Fix #449: ALSA plugin fail-to-build-from-source
  • Fix sysv stop 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

Choose a tag to compare

@github-actions github-actions released this 10 Jul 16:45
4.13
8548417

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 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

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 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)