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