Skip to content

Finit v4.15

Latest

Choose a tag to compare

@github-actions github-actions released this 01 Jan 15:53
· 4 commits to master since this release
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