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>
69 lines
2.3 KiB
Markdown
69 lines
2.3 KiB
Markdown
Rescue Mode
|
|
===========
|
|
|
|
Finit supports a rescue mode which is activated by the `rescue` option
|
|
on the kernel command line. See [cmdline docs](../cmdline.md) for how to
|
|
activate it.
|
|
|
|
This rescue mode can be disabled at configure time using:
|
|
|
|
configure --without-rescue
|
|
|
|
The rescue mode comes in two flavors; *traditional* and *fallback*.
|
|
|
|
> [!NOTE]
|
|
> In this mode `initctl` will not work. Use the `-f` flag to force
|
|
> `reboot`, `shutdown`, or `poweroff`.
|
|
|
|
Traditional
|
|
-----------
|
|
|
|
This is what most users expect. A very early maintenance login prompt,
|
|
served by the system `sulogin` program from util-linux, or BusyBox. If
|
|
that is not found in `$PATH`, the bundled `/libexec/finit/sulogin`
|
|
program is used instead. If a successful login is made, or if the user
|
|
exits (Ctrl-D), the rescue mode is ended and the system boots up
|
|
normally.
|
|
|
|
> [!WARNING]
|
|
> The bundled sulogin in Finit can at configure time be given another
|
|
> user than the default (root). If the sulogin user does not have a
|
|
> password, or __the account is locked__, the user is presented with a
|
|
> prompt: `"Press enter to enter maintenance mode."`, which will open
|
|
> up a root shell *without prompting for password*!
|
|
|
|
Fallback
|
|
--------
|
|
|
|
If no `sulogin` program is found, Finit tries to bring up as much of its
|
|
own functionality as possible, yet limiting many aspects, meaning; no
|
|
network, no `fsck` of file systems in `/etc/fstab`, no `/etc/rc.local`,
|
|
no `runparts`, and most plugins are skipped (except those that provide
|
|
functionality for the condition subsystem).
|
|
|
|
Instead of reading `/etc/finit.conf` et al, system configuration is read
|
|
from `/lib/finit/rescue.conf`, which can be freely modified by the
|
|
system administrator.
|
|
|
|
The bundled default `rescue.conf` contains nothing more than:
|
|
|
|
runlevel = 1
|
|
tty rescue {
|
|
runlevel = "12345"
|
|
rescue = true
|
|
}
|
|
|
|
The `tty` block has `rescue` set, which works similar to the board
|
|
bring-up setting `notty`. The major difference being that `sulogin`
|
|
is started to query for root/admin password. If `sulogin` is not found,
|
|
`rescue` behaves like `notty` and gives a plain root shell prompt.
|
|
|
|
If Finit cannot find `/lib/finit/rescue.conf` it falls back to a
|
|
built-in equivalent, which runs in every runlevel it can:
|
|
|
|
tty rescue {
|
|
runlevel = "12345789"
|
|
rescue = true
|
|
}
|
|
|
|
There is no way to exit the *fallback* rescue mode. |