mirror of
https://github.com/troglobit/finit.git
synced 2026-10-25 12:04:36 +00:00
Drop doc/bootstrap.md, inaccurate and confusing to users
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
1 parent
d5738da307
commit
eaef302420
3 files changed
+26
-95
No files matched your search
@@ -3,7 +3,6 @@
|
|||||||
|
|
||||||
* [Introduction](#introduction)
|
* [Introduction](#introduction)
|
||||||
* [Features](#features)
|
* [Features](#features)
|
||||||
* [Bootstrap](doc/bootstrap.md#bootstrap)
|
|
||||||
* [Runlevels](#runlevels)
|
* [Runlevels](#runlevels)
|
||||||
* [Syntax](doc/config.md#syntax)
|
* [Syntax](doc/config.md#syntax)
|
||||||
* [Runparts & /etc/rc.local](#runparts--etcrclocal)
|
* [Runparts & /etc/rc.local](#runparts--etcrclocal)
|
||||||
@@ -391,8 +390,7 @@ Right after the runlevel change when all services have started properly,
|
|||||||
No configuration stanza in `/etc/finit.conf` is required for `rc.local`.
|
No configuration stanza in `/etc/finit.conf` is required for `rc.local`.
|
||||||
If it exists and is an executable shell script Finit calls it at the very
|
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 on hooks
|
end of the boot, before calling the `HOOK_SYSTEM_UP`. See more on hooks
|
||||||
in [doc/plugins.md](doc/plugins.md#hooks), and about the system bootstrap
|
in [doc/plugins.md](doc/plugins.md#hooks).
|
||||||
in [doc/bootstrap.md](doc/bootstrap.md).
|
|
||||||
|
|
||||||
|
|
||||||
### Limitations
|
### Limitations
|
||||||
|
|||||||
@@ -1,63 +0,0 @@
|
|||||||
Bootstrap
|
|
||||||
=========
|
|
||||||
|
|
||||||
0. Get bearings, disable kernel logs, initialize TTY and print banner,
|
|
||||||
unless `HOOK_BANNER` is defined, then call that instead
|
|
||||||
1. Prepare emergency shell, if enabled
|
|
||||||
2. Set up initial signal handlers
|
|
||||||
3. Set up default $PATH early
|
|
||||||
4. Mount `/proc` and `/sys`
|
|
||||||
5. Check kernel command line for `debug` to figure out log level
|
|
||||||
6. Load all `.so` plugins
|
|
||||||
7. Call `fsck` on file systems listed in `/etc/fstab`
|
|
||||||
8. Populate `/dev` using either udev or mdev, depending on system type
|
|
||||||
9. Parse `/etc/finit.conf`
|
|
||||||
10. Start built-in watchdog, if enabled and `WDT_DEVNODE` exists. This
|
|
||||||
means any WDT that requires a kernel module need to be either
|
|
||||||
compiled into the kernel, or insmod'ed in `/etc/finit.conf`
|
|
||||||
11. Load all `/etc/finit.d/*.conf` files and set hostname
|
|
||||||
12. Remount `/` read-write if `/` is listed in `/etc/fstab` without `ro`
|
|
||||||
13. Call 1st level hooks, `HOOK_ROOTFS_UP`
|
|
||||||
14. Mount all file systems listed in `/etc/fstab` and swap, if available.
|
|
||||||
Finit verifies that `/dev/shm`, `/dev/pts`, `/run`, and `/tmp` are
|
|
||||||
mounted. If not, Finit mounts them as `tmpfs` because otherwise the rest
|
|
||||||
of the boot may fail. On any mount error `HOOK_MOUNT_ERROR` is called.
|
|
||||||
After mount, regardless of error, `HOOK_MOUNT_POST` is called
|
|
||||||
15. Enable SysV init signals
|
|
||||||
16. Call 2nd level hooks, `HOOK_BASEFS_UP`
|
|
||||||
17. Cleanup stale files from `/tmp/*` et al and (re)create temporary files and
|
|
||||||
directories according to [tmpfiles.d(5)][], handled by `bootmisc` plugin
|
|
||||||
18. Load kernel params from `/etc/sysctl.d/*.conf`, `/etc/sysctl.conf`
|
|
||||||
et al. (Supports all locations that SysV init does.), handled by
|
|
||||||
`procps` plugin
|
|
||||||
19. Start all 'S' runlevel tasks and services
|
|
||||||
20. Bring up loopback interface and all `/etc/network/interfaces`, if
|
|
||||||
the `.conf` setting `network <SCRIPT>` is set, it is called instead
|
|
||||||
21. Call 3rd level hooks, `HOOK_NETWORK_UP`
|
|
||||||
22. If `runparts <DIR>` is set, [run-parts(8)][] is called on `<DIR>`
|
|
||||||
23. Switch to the configured runlevel from `/etc/finit.conf`, default 2.
|
|
||||||
At every runlevel change all `*.conf` files in `/etc/finit.d/` are
|
|
||||||
(re)loaded and new services, tasks, and blocking run commands are
|
|
||||||
started. Provided they are allowed in the new runlevel and all of
|
|
||||||
their conditions, if any, are set.
|
|
||||||
24. Call 4th level hooks, `HOOK_SVC_UP`
|
|
||||||
25. Call `/etc/rc.local`, if it exists and is an executable shell script
|
|
||||||
26. Call 5th level (last) hooks, `HOOK_SYSTEM_UP`
|
|
||||||
27. Start all configured TTYs
|
|
||||||
|
|
||||||
In (19) and (23) tasks and services defined in `/etc/finit.conf` and
|
|
||||||
`/etc/finit.d/*.conf` are started.
|
|
||||||
|
|
||||||
Notice the seven hook points that are called at various point in the
|
|
||||||
bootstrap process. This is where plugins can extend the boot in any
|
|
||||||
way they please. There are other hook points available, for more on
|
|
||||||
this, see [plugins.md](plugins.md).
|
|
||||||
|
|
||||||
For instance, at `HOOK_BASEFS_UP` a plugin could read an XML file from a
|
|
||||||
USB stick, convert/copy its contents to the system's `/etc/` directory,
|
|
||||||
well before all 'S' runlevel tasks are started. This could be used with
|
|
||||||
system images that are created read-only and all configuration is stored
|
|
||||||
on external media.
|
|
||||||
|
|
||||||
[run-parts(8)]: http://manpages.debian.org/cgi-bin/man.cgi?query=run-parts
|
|
||||||
[tmpfiles.d(5)]: https://www.freedesktop.org/software/systemd/man/tmpfiles.d.html
|
|
||||||
+25
-29
@@ -202,12 +202,13 @@ order, and `swapoff` is called.
|
|||||||
- ` 0`: shutdown
|
- ` 0`: shutdown
|
||||||
|
|
||||||
Runlevels are declared per service/run/task/sysv command. Starting in
|
Runlevels are declared per service/run/task/sysv command. Starting in
|
||||||
runlevel S ([bootStrap](bootstrap.md)), usually only for tasks supposed
|
runlevel S (bootStrap), usually only for tasks supposed to run once at
|
||||||
to run once at boot, and services like `syslogd`, which you need to
|
boot, and services like `syslogd`, which you need to start and run
|
||||||
start and run throughout the whole time your system is up. Before `S`
|
throughout the whole time your system is up.
|
||||||
is started, however, Finit performs a lot of housekeeping tasks like
|
|
||||||
mounting all filesystems, calling `fsck` if needed, and making sure the
|
Before `S` is started, however, Finit performs a lot of housekeeping
|
||||||
everything is OK.
|
tasks like mounting all filesystems, calling `fsck` if needed, and
|
||||||
|
making sure the everything is OK.
|
||||||
|
|
||||||
task [S] /lib/console-setup/console-setup.sh
|
task [S] /lib/console-setup/console-setup.sh
|
||||||
service [S12345] env:-/etc/default/rsyslog rsyslogd -n $RSYSLOGD_ARGS
|
service [S12345] env:-/etc/default/rsyslog rsyslogd -n $RSYSLOGD_ARGS
|
||||||
@@ -520,7 +521,7 @@ following directives:
|
|||||||
|
|
||||||
|
|
||||||
> **Note:** not all directives are available in `/etc/finit.d/*.conf`
|
> **Note:** not all directives are available in `/etc/finit.d/*.conf`
|
||||||
> and some directives are only available at [bootstrap][], runlevel `S`,
|
> and some directives are only available at bootstrap, runlevel `S`,
|
||||||
> see [Limitations](#limitations) below for details.
|
> see [Limitations](#limitations) below for details.
|
||||||
|
|
||||||
|
|
||||||
@@ -533,7 +534,7 @@ the contents of that file is used.
|
|||||||
|
|
||||||
Deprecated. We recommend using `/etc/hostname` instead.
|
Deprecated. We recommend using `/etc/hostname` instead.
|
||||||
|
|
||||||
> **Note:** only read and executed in runlevel S ([bootstrap][]).
|
> **Note:** only read and executed in runlevel S (bootstrap).
|
||||||
|
|
||||||
|
|
||||||
### Kernel Modules
|
### Kernel Modules
|
||||||
@@ -551,7 +552,7 @@ BusyBox mdev tool, add to `/etc/mdev.conf`:
|
|||||||
|
|
||||||
$MODALIAS=.* root:root 0660 @modprobe -b "$MODALIAS"
|
$MODALIAS=.* root:root 0660 @modprobe -b "$MODALIAS"
|
||||||
|
|
||||||
> **Note:** only read and executed in runlevel S ([bootstrap][]).
|
> **Note:** only read and executed in runlevel S (bootstrap).
|
||||||
|
|
||||||
|
|
||||||
### Networking
|
### Networking
|
||||||
@@ -564,7 +565,7 @@ Deprecated. We recommend using dedicated task/run stanzas per runlevel,
|
|||||||
or `/etc/network/interfaces` if you have a system with `ifupdown`, like
|
or `/etc/network/interfaces` if you have a system with `ifupdown`, like
|
||||||
Debian, Ubuntu, Linux Mint, or an embedded BusyBox system.
|
Debian, Ubuntu, Linux Mint, or an embedded BusyBox system.
|
||||||
|
|
||||||
> **Note:** only read and executed in runlevel S ([bootstrap][]).
|
> **Note:** only read and executed in runlevel S (bootstrap).
|
||||||
|
|
||||||
|
|
||||||
### Alternate finit.d/
|
### Alternate finit.d/
|
||||||
@@ -619,7 +620,7 @@ stanzas can share the same rlimits if they are in the same .conf.
|
|||||||
|
|
||||||
**Syntax:** `runlevel <N>`
|
**Syntax:** `runlevel <N>`
|
||||||
|
|
||||||
The system runlevel to go to after [bootstrap][] (S) has completed. `N`
|
The system runlevel to go to after bootstrap (S) has completed. `N`
|
||||||
is the runlevel number 0-9, where 6 is reserved for reboot and 0 for
|
is the runlevel number 0-9, where 6 is reserved for reboot and 0 for
|
||||||
halt.
|
halt.
|
||||||
|
|
||||||
@@ -628,7 +629,7 @@ Finit disables networking in this mode.
|
|||||||
|
|
||||||
*Default:* 2
|
*Default:* 2
|
||||||
|
|
||||||
> **Note:** only read and executed in runlevel S ([bootstrap][]).
|
> **Note:** only read and executed in runlevel S (bootstrap).
|
||||||
|
|
||||||
|
|
||||||
### One-shot Commands (sequence)
|
### One-shot Commands (sequence)
|
||||||
@@ -966,9 +967,8 @@ previous stanza can also be written as:
|
|||||||
**Syntax:** `runparts [progress] [sysv] <DIR>`
|
**Syntax:** `runparts [progress] [sysv] <DIR>`
|
||||||
|
|
||||||
Call [run-parts(8)][] on `DIR` to run start scripts. All executable
|
Call [run-parts(8)][] on `DIR` to run start scripts. All executable
|
||||||
files, or scripts, in the directory are called, in alphabetic order.
|
files in the directory are called, in alphabetic order. The scripts in
|
||||||
The scripts in this directory are executed at the very end of runlevel
|
this directory are executed at the very end of runlevel `S`.
|
||||||
`S`, [bootstrap][].
|
|
||||||
|
|
||||||
A common use-case for runparts scripts is to create and enable/disable
|
A common use-case for runparts scripts is to create and enable/disable
|
||||||
services, which Finit will then apply when changing runlevel from S to
|
services, which Finit will then apply when changing runlevel from S to
|
||||||
@@ -993,10 +993,9 @@ before continuing. None of them can issue commands to start, stop, or
|
|||||||
restart other services. Also, ensure all your services and programs
|
restart other services. Also, ensure all your services and programs
|
||||||
either terminate or start in the background or you will block Finit.
|
either terminate or start in the background or you will block Finit.
|
||||||
|
|
||||||
> **Note:** `runparts` scrips are only read and executed in runlevel S
|
> **Note:** `runparts` scrips are only read and executed in runlevel S.
|
||||||
> ([bootstrap][]). See [hook scripts](plugins.md#hooks) for other ways
|
> See [hook scripts](plugins.md#hooks) for other ways to run scripts at
|
||||||
> to run scripts at certain points during the complete lifetime of the
|
> certain points during the complete lifetime of the system.
|
||||||
> system.
|
|
||||||
|
|
||||||
**Recommendations:**
|
**Recommendations:**
|
||||||
|
|
||||||
@@ -1109,8 +1108,8 @@ can be omitted to keep the kernel default.
|
|||||||
tty [12345] @console noclear vt220
|
tty [12345] @console noclear vt220
|
||||||
|
|
||||||
On really bare bones systems, or for board bringup, Finit can give you a
|
On really bare bones systems, or for board bringup, Finit can give you a
|
||||||
shell prompt as soon as [bootstrap][] is done, without opening any
|
shell prompt as soon as bootstrap is done, without opening any device
|
||||||
device node:
|
node:
|
||||||
|
|
||||||
tty [12345789] notty
|
tty [12345789] notty
|
||||||
|
|
||||||
@@ -1345,12 +1344,11 @@ Watchdog
|
|||||||
When built `--with-watchdog` a separate service is built and installed
|
When built `--with-watchdog` a separate service is built and installed
|
||||||
in `/libexec/finit/watchdogd`. If this exists at runtime, and the WDT
|
in `/libexec/finit/watchdogd`. If this exists at runtime, and the WDT
|
||||||
device node exists, Finit will start it and treat it as the elected
|
device node exists, Finit will start it and treat it as the elected
|
||||||
watchdog service to delegate its reboot to. See [bootstrap][] for
|
watchdog service to delegate its reboot to. This delegation is to
|
||||||
details. This delegation is to ensure that the system is rebooted by a
|
ensure that the system is rebooted by a hardware watchdog timer -- on
|
||||||
hardware watchdog timer -- on many embedded systems this is crucial to
|
many embedded systems this is crucial to ensure all circuits on the
|
||||||
ensure all circuits on the board are properly reset for the next boot,
|
board are properly reset for the next boot, in effect ensuring the
|
||||||
in effect ensuring the system works the same after both a power-on and
|
system works the same after both a power-on and reboot event.
|
||||||
reboot event.
|
|
||||||
|
|
||||||
The delegation is performed at the very last steps of system shutdown,
|
The delegation is performed at the very last steps of system shutdown,
|
||||||
if reboot has been selected and an elected watchdog is known, first a
|
if reboot has been selected and an elected watchdog is known, first a
|
||||||
@@ -1372,8 +1370,6 @@ device descriptor. If the kernel driver has been built without this,
|
|||||||
the only option is to remove `/libexec/finit/watchdogd` or build without
|
the only option is to remove `/libexec/finit/watchdogd` or build without
|
||||||
it at configure time.
|
it at configure time.
|
||||||
|
|
||||||
[bootstrap]: bootstrap.md
|
|
||||||
|
|
||||||
|
|
||||||
keventd
|
keventd
|
||||||
-------
|
-------
|
||||||
|
|||||||
Reference in new issue
Block a user