199 lines
5.9 KiB
Diff
199 lines
5.9 KiB
Diff
|
From 89f7217954231dc11307cc481f1e3ca8ad3ad001 Mon Sep 17 00:00:00 2001
|
||
|
From: Harald Hoyer <harald@redhat.com>
|
||
|
Date: Mon, 5 Aug 2013 11:22:55 +0200
|
||
|
Subject: [PATCH] dracut.asc: small corrections
|
||
|
|
||
|
---
|
||
|
dracut.asc | 75 ++++++++++++++------------------------------------------------
|
||
|
1 file changed, 16 insertions(+), 59 deletions(-)
|
||
|
|
||
|
diff --git a/dracut.asc b/dracut.asc
|
||
|
index 4de3dbf..dfad67e 100644
|
||
|
--- a/dracut.asc
|
||
|
+++ b/dracut.asc
|
||
|
@@ -777,25 +777,12 @@ scripts and udev rules.
|
||
|
[[stages]]
|
||
|
== Boot Process Stages
|
||
|
|
||
|
-The init script in _99base_ is the main script, which prepares the root file
|
||
|
-system for usage, runs udev, mounts the real root device, kills the remaining
|
||
|
-processes, and switches to the real root device for further booting. dracut
|
||
|
-modules can insert custom script at various points, to control the boot process.
|
||
|
+dracut modules can insert custom script at various points, to control the boot
|
||
|
+process.
|
||
|
These hooks are plain directories containing shell scripts ending with ".sh",
|
||
|
which are sourced by init.
|
||
|
Common used functions are in _dracut-lib.sh_, which can be sourced by any script.
|
||
|
|
||
|
-
|
||
|
-
|
||
|
-=== Basic Setup
|
||
|
-
|
||
|
-The first thing init does, is to mount _/proc_ and _/sys_ and manually create
|
||
|
-the basic device nodes and symbolic links in _/dev_ needed to execute basic
|
||
|
-commands. Then logging is setup according to kernel command line arguments.
|
||
|
-_/dev/pts_ and _/dev/shm_ are mounted and the first hook is sourced.
|
||
|
-
|
||
|
-
|
||
|
-
|
||
|
=== Hook: cmdline
|
||
|
|
||
|
The _cmdline_ hook is a place to insert scripts to parse the kernel command line
|
||
|
@@ -813,63 +800,49 @@ This hook is executed right after the cmdline hook and a check if root and
|
||
|
rootok were set. Here modules can take action with the final root, and before
|
||
|
udev has been run.
|
||
|
|
||
|
-
|
||
|
-
|
||
|
=== Start Udev
|
||
|
|
||
|
Now udev is started and the logging for udev is setup.
|
||
|
|
||
|
-
|
||
|
-
|
||
|
=== Hook: pre-trigger
|
||
|
|
||
|
In this hook, you can set udev environment variables with **udevadm control
|
||
|
--property=KEY=_value_** or control the further execution of udev with
|
||
|
udevadm.
|
||
|
|
||
|
-
|
||
|
-
|
||
|
=== Trigger Udev
|
||
|
|
||
|
udev is triggered by calling udevadm trigger, which sends add events for all
|
||
|
devices and subsystems.
|
||
|
|
||
|
-
|
||
|
-
|
||
|
=== Main Loop
|
||
|
|
||
|
-Now the main loop of 99base/init begins. Here we loop until udev has settled and
|
||
|
-all scripts in _initqueue/finished_ returned true. In this loop there are three
|
||
|
-hooks, where scripts can be inserted by calling /sbin/initqueue.
|
||
|
-
|
||
|
-
|
||
|
+In the main loop of dracut loops until udev has settled and
|
||
|
+all scripts in _initqueue/finished_ returned true.
|
||
|
+In this loop there are three hooks, where scripts can be inserted
|
||
|
+by calling /sbin/initqueue.
|
||
|
|
||
|
==== Initqueue
|
||
|
|
||
|
This hook gets executed every time a script is inserted here, regardless of the
|
||
|
udev state.
|
||
|
|
||
|
-
|
||
|
-
|
||
|
==== Initqueue settled
|
||
|
|
||
|
-This hooks gets executed every time udev has settled.
|
||
|
-
|
||
|
+This hooks (initqueue/settled) gets executed every time udev has settled.
|
||
|
|
||
|
|
||
|
==== Initqueue timeout
|
||
|
|
||
|
-This hooks gets executed, when the main loop counter becomes half of the
|
||
|
+This hooks (initqueue/timeout) gets executed, when the main loop counter becomes half of the
|
||
|
rd.retry counter.
|
||
|
|
||
|
-
|
||
|
-
|
||
|
==== Initqueue finished
|
||
|
|
||
|
-This hook is called after udev has settled and if all scripts herein return 0
|
||
|
-the main loop will be ended.
|
||
|
-
|
||
|
-
|
||
|
+This hook (initqueue/finished) is called after udev has settled and
|
||
|
+if all scripts herein return 0 the main loop will be ended.
|
||
|
+Abritary scripts can be added here, to loop in the
|
||
|
+initqueue until something happens, which a dracut module wants to wait for.
|
||
|
|
||
|
=== Hook: pre-mount
|
||
|
|
||
|
@@ -877,20 +850,15 @@ Before the root device is mounted all scripts in the hook pre-mount are
|
||
|
executed. In some cases (e.g. NFS) the real root device is already mounted,
|
||
|
though.
|
||
|
|
||
|
-
|
||
|
-
|
||
|
=== Hook: mount
|
||
|
|
||
|
This hook is mainly to mount the real root device.
|
||
|
|
||
|
-
|
||
|
-
|
||
|
=== Hook: pre-pivot
|
||
|
|
||
|
This hook is called before cleanup hook, This is a good place for
|
||
|
actions other than cleanups which need to be called before pivot.
|
||
|
|
||
|
-
|
||
|
=== Hook: cleanup
|
||
|
|
||
|
This hook is the last hook and is called before init finally switches root to
|
||
|
@@ -900,21 +868,18 @@ needed anymore.
|
||
|
|
||
|
=== Cleanup and switch_root
|
||
|
|
||
|
-Init kills all udev processes, cleans up the environment, sets up the arguments
|
||
|
-for the real init process and finally calls switch_root. switch_root removes the
|
||
|
-whole filesystem hierarchy of the initramfs, chroot()s to the real root device
|
||
|
-and calls /sbin/init with the specified arguments.
|
||
|
+Init (or systemd) kills all udev processes, cleans up the environment,
|
||
|
+sets up the arguments for the real init process and finally calls switch_root.
|
||
|
+switch_root removes the whole filesystem hierarchy of the initramfs,
|
||
|
+chroot()s to the real root device and calls /sbin/init with the specified arguments.
|
||
|
|
||
|
To ensure all files in the initramfs hierarchy can be removed, all processes
|
||
|
still running from the initramfs should not have any open file descriptors left.
|
||
|
|
||
|
-
|
||
|
-
|
||
|
== Network Infrastructure
|
||
|
|
||
|
FIXME
|
||
|
|
||
|
-
|
||
|
== Writing a Module
|
||
|
|
||
|
A simple example module is _96insmodpost_, which modprobes a kernel module after
|
||
|
@@ -926,8 +891,6 @@ First we create a check() function, which just exits with 0 indicating that this
|
||
|
module should be included by default.
|
||
|
|
||
|
check():
|
||
|
-
|
||
|
-
|
||
|
----
|
||
|
return 0
|
||
|
----
|
||
|
@@ -937,8 +900,6 @@ priority number 20 called _parse-insmodpost.sh_. It also installs the
|
||
|
_insmodpost.sh_ script in _/sbin_.
|
||
|
|
||
|
install():
|
||
|
-
|
||
|
-
|
||
|
----
|
||
|
inst_hook cmdline 20 "$moddir/parse-insmodpost.sh"
|
||
|
inst_simple "$moddir/insmodpost.sh" /sbin/insmodpost.sh
|
||
|
@@ -949,8 +910,6 @@ rd.driver.post, blacklists the module from being autoloaded and installs the
|
||
|
hook _insmodpost.sh_ in the _initqueue/settled_.
|
||
|
|
||
|
_parse-insmodpost.sh_:
|
||
|
-
|
||
|
-
|
||
|
----
|
||
|
for p in $(getargs rd.driver.post=); do
|
||
|
echo "blacklist $p" >> /etc/modprobe.d/initramfsblacklist.conf
|
||
|
@@ -967,8 +926,6 @@ modprobe the kernel modules specified in all rd.driver.post kernel command line
|
||
|
parameters. It runs after udev has settled and is only called once (--onetime).
|
||
|
|
||
|
_insmodpost.sh_:
|
||
|
-
|
||
|
-
|
||
|
----
|
||
|
. /lib/dracut-lib.sh
|
||
|
|