mirror of
https://github.com/troglobit/finit.git
synced 2026-10-08 08:24:43 +07:00
dbus.md was orphaned: not in dist_docs_DATA, not linked from the user guide. Wire it into the doc dist and link it from the index features list, features.md, initctl.md, and plugins.md, where the dbus.so plugin entry now disambiguates the external system bus from the built-in org.finit API. Document the 64-peer cap, the supported AddMatch keys, the busconfig policy file, the legacy-parity edge semantics with the deliberate SetRunlevel InvalidArgs divergence, the reload-signal behavior of Service1.Reload, and the reboot family timeout. Refresh the stale initctl.md usage paste, add monitor and the D-Bus transport to initctl(8), add /run/finit/bus to the filesystem layout, and flatten the ChangeLog D-Bus entry to house style. Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
84 lines
4.2 KiB
Markdown
84 lines
4.2 KiB
Markdown
Introduction
|
|
============
|
|
|
|
{ align=right width=40% }
|
|
|
|
> Reverse engineered from the [EeePC fastinit][]
|
|
> "gaps filled with frog DNA …"
|
|
> — [Claudio Matsuoka][]
|
|
|
|
Finit is a process starter and [supervisor][1] designed to run as PID 1
|
|
on Linux systems. It consists of a set of [plugins](plugins.md) and can
|
|
be set up using [configuration files](config/files.md). Plugins start
|
|
at [hook points](plugins.md#hooks) and can run various set up tasks
|
|
and/or install event handlers that later provide runtime services, e.g.,
|
|
PID file monitoring, or [conditions](conditions.md).
|
|
|
|
Features
|
|
--------
|
|
|
|
* [Runlevels](config/runlevels.md), defined per service
|
|
* [One-shot tasks](config/task-and-run.md), [services](config/services.md) (daemons), or [SysV init][4] start/stop scripts
|
|
* [Runparts](config/runparts.md) and `/etc/rc.local` support
|
|
* Process supervision similar to [systemd][]
|
|
* Fine-grained privilege control:
|
|
- [Linux capabilities](config/capabilities.md) for minimal required privileges
|
|
- [Supplementary groups](config/services.md#non-privileged-services) for multi-group resource access
|
|
* [Sourcing environment files](config/service-env.md)
|
|
* [Conditions](conditions.md) for network/process/custom dependencies
|
|
* [Readiness notification](config/service-sync.md); PID files (native) for synchronizing system
|
|
startup, support for systemd [sd_notify()][], or [s6 style][] too
|
|
* Limited support for [tmpfiles.d(5)][] (no aging, attributes, or subvolumes)
|
|
* [Pre/Post script actions](config/service-wrappers.md)
|
|
* Rudimentary [templating support](config/templating.md)
|
|
* [Tooling](initctl.md) to enable/disable services
|
|
* [D-Bus API](dbus.md), `org.finit` control and signals for bus clients
|
|
* [Automatic reload](features.md#automatic-reload) of modified configuration files (optional)
|
|
* [Built-in getty](config/tty.md)
|
|
* Built-in watchdog, with support for hand-over to [watchdogd][]
|
|
* Built-in support for Debian/BusyBox [`/etc/network/interfaces`][3]
|
|
* [Cgroups v2](config/cgroups.md), both configuration and monitoring in [`initctl top`](initctl.md)
|
|
* [Plugin support](plugins.md) for customization
|
|
* Proper [rescue mode](config/rescue.md) with bundled `sulogin` for protected maintenance shell
|
|
* [Switch root](switchroot.md) support for initramfs-to-real-root transitions
|
|
* Integration with [watchdogd][] for full system supervision
|
|
* [Logging](config/logging.md) to kernel ring buffer before `syslogd` has started, see the
|
|
recommended [sysklogd][] project for complete logging integration
|
|
and how to log to the kernel ring buffer from scripts using `logger`
|
|
|
|
For a more thorough overview, see the [Features](features.md) section.
|
|
|
|
> [!TIP]
|
|
> See [SysV Init Compatibility](config/sysv.md) for help to
|
|
> quickly get going with an existing SysV or BusyBox init setup.
|
|
|
|
|
|
Origin
|
|
------
|
|
|
|
This project is based on the [original finit][] by [Claudio Matsuoka][]
|
|
which was reverse engineered from syscalls of the [EeePC fastinit][].
|
|
|
|
Finit is developed and maintained by [Joachim Wiberg][] at [GitHub][6].
|
|
Please file bug reports, clone it, or send pull requests for bug fixes
|
|
and proposed extensions.
|
|
|
|
|
|
|
|
[1]: https://en.wikipedia.org/wiki/Process_supervision
|
|
[3]: https://manpages.debian.org/unstable/ifupdown2/interfaces.5.en.html
|
|
[4]: https://en.wikipedia.org/wiki/Init
|
|
[5]: https://en.wikipedia.org/wiki/Runlevel
|
|
[6]: https://github.com/finit-project/finit
|
|
[dinit]: https://davmac.org/projects/dinit/
|
|
[systemd]: https://www.freedesktop.org/wiki/Software/systemd/
|
|
[sd_notify()]: https://www.freedesktop.org/software/systemd/man/sd_notify.html
|
|
[s6 style]: https://skarnet.org/software/s6/notifywhenup.html
|
|
[tmpfiles.d(5)]: https://www.freedesktop.org/software/systemd/man/tmpfiles.d.html
|
|
[EeePC fastinit]: https://web.archive.org/web/20071208212450/http://wiki.eeeuser.com/boot_process:the_boot_process
|
|
[original finit]: http://helllabs.org/finit/
|
|
[Claudio Matsuoka]: https://github.com/cmatsuoka
|
|
[Joachim Wiberg]: https://troglobit.com
|
|
[watchdogd]: https://troglobit.com/watchdogd.html
|
|
[sysklogd]: https://github.com/troglobit/sysklogd/
|