mirror of
https://github.com/troglobit/finit.git
synced 2026-10-16 10:39:35 +00:00
Reference sections kept pointing at the line-based format they no longer
document. `sysv` and `task` sent the reader to Services for "<COND>",
the cgroups chapter opened by listing three legacy directives and then
explained further down that only two of them exist here, and the logging
chapter still gave "log:prio:facility.level,tag:ident" as the full
syntax.
Some claims were wrong independent of the format:
- a sysv is a supervised daemon, grouped with service in
SVC_TYPE_DAEMON, not a variation on task
- restart-max has no upper bound of 255, or any other
- the built-in rescue fallback runs in 12345789, not 12345
- conditional loading quotes system/10-hotplug.conf, not
system/hotplug.conf
- the key spells conflicts, not conflict
- the built-in getty no longer wants TERM last, it is a key
`if` takes either a service name or, in angle brackets, a condition,
decided in svc_ifthen(). Only the examples showed this, so it is now
said.
Terminology follows the split index.md already draws: a block is the new
format, a stanza the line-based one.
src/rescue.conf was still line-based, missed because it sits in src/
rather than system/ or contrib/.
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
50 lines
2.0 KiB
Markdown
50 lines
2.0 KiB
Markdown
Runparts & `/etc/rc.local`
|
|
==========================
|
|
|
|
At the end of the boot, when all bootstrap (`S`) tasks and services have
|
|
started, but not networking, Finit calls its built-in [run-parts(8)][]
|
|
command on any configured `runparts = "DIR"` directory. This happens just
|
|
before changing to the configured runlevel (default 2). (Networking is
|
|
enabled just prior to changing from single user mode.)
|
|
|
|
```aconf
|
|
runparts = "/etc/rc.d/"
|
|
```
|
|
|
|
Right after the runlevel change when all services have started properly,
|
|
`/etc/rc.local` is called.
|
|
|
|
No setting in `/etc/finit.conf` is required for `rc.local`.
|
|
If it exists and is an executable shell script Finit calls it at the very
|
|
end of the boot, before calling the `HOOK_SYSTEM_UP`. See more in the
|
|
[Hook Scripts](plugins.md#hooks) section.
|
|
|
|
|
|
### Limitations
|
|
|
|
It is not possible to call Finit via signals or use `initctl` in any
|
|
runparts or `/etc/rc.local` script. This because Finit is single
|
|
threaded and is calling these scripts in a blocking fashion at the end
|
|
of runlevel S, at which point the event loop has not yet been started.
|
|
|
|
The event loop is the whole thing which Finit is built around, except
|
|
for runlevel S, which remains a slow procession through a lot of set up,
|
|
with a few hooks and blocking call outs to external scripts.
|
|
|
|
However, not all `initctl` commands are prohibited. Supported commands:
|
|
|
|
- `initctl cond`: only operate on files in `/run/finit/cond`
|
|
- `initctl enable/disable`: enabled run/task/service is activated on
|
|
the runlevel change from S to 2
|
|
- `initctl touch/show/create/delete/list`: `create`, provided the
|
|
non-interactive mode is used, again changes take effect in the
|
|
runlevel change directly after bootstrap
|
|
- `initctl -f reboot/poweroff/halt`: provided the `-f` flag is used to
|
|
force direct kernel commands
|
|
|
|
> [!TIP]
|
|
> you can set a `usr/` condition in `/etc/rc.local` and have a
|
|
> service/task in runlevel 2 depend on it to execute.
|
|
|
|
[run-parts(8)]: https://manpages.debian.org/cgi-bin/man.cgi?query=run-parts
|