summaryrefslogtreecommitdiffstats
path: root/builder/dnbd3-rootfs
diff options
context:
space:
mode:
Diffstat (limited to 'builder/dnbd3-rootfs')
-rw-r--r--builder/dnbd3-rootfs/hooks/copy-dracut-systemd-files-into-newroot.sh24
-rwxr-xr-xbuilder/dnbd3-rootfs/module-setup.sh15
2 files changed, 36 insertions, 3 deletions
diff --git a/builder/dnbd3-rootfs/hooks/copy-dracut-systemd-files-into-newroot.sh b/builder/dnbd3-rootfs/hooks/copy-dracut-systemd-files-into-newroot.sh
new file mode 100644
index 00000000..1e9366e2
--- /dev/null
+++ b/builder/dnbd3-rootfs/hooks/copy-dracut-systemd-files-into-newroot.sh
@@ -0,0 +1,24 @@
+#!/bin/env bash
+# Dracut may not be installed on the new root. Thus copy all services over.
+systemdsystemunitdir="$(
+ dirname "$(find / -name dracut-mount.service -type f -print -quit)")"
+mkdir --parents "${NEWROOT}/${systemdsystemunitdir}"
+for file in \
+ dracut-cmdline.service \
+ dracut-initqueue.service \
+ dracut-mount.service \
+ dracut-pre-mount.service \
+ dracut-pre-pivot.service \
+ dracut-pre-trigger.service \
+ dracut-pre-udev.service; do
+ cp "${systemdsystemunitdir}/$file" \
+ "${NEWROOT}/${systemdsystemunitdir}/$file"
+ ln -s ../"$file" \
+ "${NEWROOT}/${systemdsystemunitdir}/initrd.target.wants/$file"
+done
+
+# Needed to be able to go back to dracut at system shutdown.
+mkdir /temp_mnt
+mount --bind / /temp_mnt/
+cp -rT /temp_mnt /run/initramfs
+umount /temp_mnt && rmdir /temp_mnt
diff --git a/builder/dnbd3-rootfs/module-setup.sh b/builder/dnbd3-rootfs/module-setup.sh
index 9b931c44..a1514f91 100755
--- a/builder/dnbd3-rootfs/module-setup.sh
+++ b/builder/dnbd3-rootfs/module-setup.sh
@@ -6,6 +6,12 @@ core.import logging
core.import utils
# TODO set log level via dracut logging options
+# (use $dracut_args
+#((len=${#dracut_args[@]}))
+#for ((i=0; i < len; i++)); do
+ #[[ ${dracut_args[$i]} == "--regenerate-all" ]] && \
+ #unset dracut_args[$i]
+#done
logging.set_log_level debug
logging.set_commands_log_level debug
@@ -78,7 +84,7 @@ check() {
depends() {
# DEBUG: echo base network bash kernel-modules systemd-initrd dracut-systemd fs-lib rootfs-block
- echo base network bash kernel-modules
+ echo base network bash kernel-modules shutdown
# NOTE: btrfs module should be used if it would work.
}
@@ -145,11 +151,14 @@ install() {
/usr/bin/dnbd3root
inst_simple "${moddir}/services/dnbd3root.service" \
"${systemdsystemunitdir}/dnbd3root.service"
- # don't kill at switch_root
+
+ # copy systemd services to new root (so they don't get killed after
+ # switch_root)
mkdir -p "${initdir}/${systemdsystemunitdir}/initrd-root-fs.target.wants"
ln_r "${systemdsystemunitdir}/dnbd3root.service" \
"${systemdsystemunitdir}/initrd-root-fs.target.wants/dnbd3root.service"
- inst_hook pre-pivot 95 "$moddir/hooks/copy-dnbd3-generator-into-newroot.sh"
+ inst_hook pre-pivot 00 "$moddir/hooks/copy-dnbd3-generator-into-newroot.sh"
+ inst_hook pre-pivot 00 "$moddir/hooks/copy-dracut-systemd-files-into-newroot.sh"
else
inst_hook pre-mount 10 "$moddir/hooks/prepare-root-partition.sh"
fi