summaryrefslogtreecommitdiffstats
path: root/builder/dnbd3-rootfs/hooks
diff options
context:
space:
mode:
Diffstat (limited to 'builder/dnbd3-rootfs/hooks')
-rw-r--r--builder/dnbd3-rootfs/hooks/copy-dracut-systemd-files-into-newroot.sh24
1 files changed, 24 insertions, 0 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