init has the following hook points to inject scripts:
-`/lib/dracut/hooks/cmdline/*.sh`::
+`/var/lib/dracut/hooks/cmdline/*.sh`::
scripts for command line parsing
-`/lib/dracut/hooks/pre-udev/*.sh`::
+`/var/lib/dracut/hooks/pre-udev/*.sh`::
scripts to run before udev is started
-`/lib/dracut/hooks/pre-trigger/*.sh`::
+`/var/lib/dracut/hooks/pre-trigger/*.sh`::
scripts to run before the main udev trigger is pulled
-`/lib/dracut/hooks/initqueue/*.sh`::
+`/var/lib/dracut/hooks/initqueue/*.sh`::
runs in parallel to the udev trigger
+
Udev events can add scripts here with `/sbin/initqueue`.
If `/sbin/initqueue` is called with the `--onetime` option, the script
will be removed after it was run.
+
-If `/lib/dracut/hooks/initqueue/work` is created then
+If `/var/lib/dracut/hooks/initqueue/work` is created then
this loop can process the jobs in parallel to the udevtrigger.
+
If the udev queue is empty and no root device is found or no root
+
Scripts can remove themselves from the initqueue by `rm $job`.
-`/lib/dracut/hooks/pre-mount/*.sh`::
+`/var/lib/dracut/hooks/pre-mount/*.sh`::
scripts to run before the root filesystem is mounted
+
Network filesystems like NFS that do not use device files are an
exception. Root can be mounted already at this point.
-`/lib/dracut/hooks/mount/*.sh`::
+`/var/lib/dracut/hooks/mount/*.sh`::
scripts to mount the root filesystem
+
If the udev queue is empty and no root device is found or no root
filesystem was mounted, the user will be dropped to a shell after
a timeout.
-`/lib/dracut/hooks/pre-pivot/*.sh`::
+`/var/lib/dracut/hooks/pre-pivot/*.sh`::
scripts to run before latter initramfs cleanups
-`/lib/dracut/hooks/cleanup/*.sh`::
+`/var/lib/dracut/hooks/cleanup/*.sh`::
scripts to run before the real init is executed and the initramfs
disappears
+
for _d in $hookdirs; do
# shellcheck disable=SC2174
- mkdir -m 0755 -p "${initdir}/lib/dracut/hooks/$_d"
+ mkdir -m 0755 -p "${initdir}/var/lib/dracut/hooks/$_d"
done
if [[ $EUID == "0" ]] && ! [[ $DRACUT_NO_MKNOD ]]; then
[[ -c ${initdir}/dev/null ]] || mknod "${initdir}"/dev/null c 1 3
printf -- ' cancel_wait_for_dev /dev/resume; rm -f -- "$job" "%s/initqueue/settled/resume.sh";\n' "$hookdir"
} >> "$hookdir"/initqueue/timeout/resume.sh
- mv /lib/dracut/resume.sh /lib/dracut/hooks/pre-mount/10-resume.sh
+ mv /lib/dracut/resume.sh /var/lib/dracut/hooks/pre-mount/10-resume.sh
else
{
if [ -x /usr/sbin/resume ]; then
Wants=systemd-journald.socket
ConditionPathExists=/usr/lib/initrd-release
ConditionPathExistsGlob=|/etc/cmdline.d/*.conf
-ConditionDirectoryNotEmpty=|/lib/dracut/hooks/cmdline
+ConditionDirectoryNotEmpty=|/var/lib/dracut/hooks/cmdline
ConditionKernelCommandLine=|rd.break=cmdline
Conflicts=shutdown.target emergency.target
After=initrd-root-fs.target initrd-parse-etc.service
After=dracut-initqueue.service dracut-pre-mount.service
ConditionPathExists=/usr/lib/initrd-release
-ConditionDirectoryNotEmpty=|/lib/dracut/hooks/mount
+ConditionDirectoryNotEmpty=|/var/lib/dracut/hooks/mount
ConditionKernelCommandLine=|rd.break=mount
DefaultDependencies=no
Conflicts=shutdown.target emergency.target
Before=initrd-root-fs.target sysroot.mount systemd-fsck-root.service
After=dracut-initqueue.service cryptsetup.target
ConditionPathExists=/usr/lib/initrd-release
-ConditionDirectoryNotEmpty=|/lib/dracut/hooks/pre-mount
+ConditionDirectoryNotEmpty=|/var/lib/dracut/hooks/pre-mount
ConditionKernelCommandLine=|rd.break=pre-mount
Conflicts=shutdown.target emergency.target
Wants=remote-fs.target
After=remote-fs.target
ConditionPathExists=/usr/lib/initrd-release
-ConditionDirectoryNotEmpty=|/lib/dracut/hooks/pre-pivot
-ConditionDirectoryNotEmpty=|/lib/dracut/hooks/cleanup
+ConditionDirectoryNotEmpty=|/var/lib/dracut/hooks/pre-pivot
+ConditionDirectoryNotEmpty=|/var/lib/dracut/hooks/cleanup
ConditionKernelCommandLine=|rd.break=pre-pivot
ConditionKernelCommandLine=|rd.break=cleanup
ConditionKernelCommandLine=|rd.break
After=dracut-pre-udev.service systemd-udevd.service systemd-tmpfiles-setup-dev.service
Wants=dracut-pre-udev.service systemd-udevd.service
ConditionPathExists=/usr/lib/initrd-release
-ConditionDirectoryNotEmpty=|/lib/dracut/hooks/pre-trigger
+ConditionDirectoryNotEmpty=|/var/lib/dracut/hooks/pre-trigger
ConditionKernelCommandLine=|rd.break=pre-trigger
Conflicts=shutdown.target emergency.target
After=dracut-cmdline.service
Wants=dracut-cmdline.service
ConditionPathExists=/usr/lib/initrd-release
-ConditionDirectoryNotEmpty=|/lib/dracut/hooks/pre-udev
+ConditionDirectoryNotEmpty=|/var/lib/dracut/hooks/pre-udev
ConditionKernelCommandLine=|rd.break=pre-udev
ConditionKernelCommandLine=|rd.driver.blacklist
ConditionKernelCommandLine=|rd.driver.pre
done
}
-hookdir=/lib/dracut/hooks
+hookdir=/var/lib/dracut/hooks
export hookdir
source_hook() {
local _dir
_dir=$1
shift
- source_all "/lib/dracut/hooks/$_dir" "$@"
+ source_all "/var/lib/dracut/hooks/$_dir" "$@"
}
check_finished() {
export DRACUT_SYSTEMD=1
fi
export PREFIX="$initdir"
- export hookdir=/lib/dracut/hooks
+ export hookdir=/var/lib/dracut/hooks
# shellcheck source=dracut-dev-lib.sh
. "$moddir/dracut-dev-lib.sh"
ln_r /var/lib/dracut/hooks /lib/dracut/hooks
for _d in $hookdirs shutdown shutdown-emergency; do
- mkdir -m 0755 -p "${initdir}"/lib/dracut/hooks/"$_d"
+ mkdir -m 0755 -p "${initdir}"/var/lib/dracut/hooks/"$_d"
done
}