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>
2.0 KiB
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.)
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 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/condinitctl enable/disable: enabled run/task/service is activated on the runlevel change from S to 2initctl touch/show/create/delete/list:create, provided the non-interactive mode is used, again changes take effect in the runlevel change directly after bootstrapinitctl -f reboot/poweroff/halt: provided the-fflag is used to force direct kernel commands
Tip
you can set a
usr/condition in/etc/rc.localand have a service/task in runlevel 2 depend on it to execute.