summaryrefslogtreecommitdiffstats
path: root/modules.d/dnbd3-rootfs/hooks/copy-dracut-systemd-files-into-newroot.sh
blob: d0e847ca0a896819af588e6ae25a00236be8f10e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/env bash
# -*- coding: utf-8 -*-
type emergency_shell >/dev/null 2>&1 || source /lib/dracut-lib.sh

# Dracut may not be installed on the new root. Thus copy all services over.
dracut_mount_unit_path="$(systemctl show -p FragmentPath dracut-mount.service \
	| cut -c 14-)"
systemd_system_unit_path="${dracut_mount_unit_path%/*}"
new_systemd_system_unit_path="${NEWROOT}/lib/systemd/system"

mkdir --parents "$new_systemd_system_unit_path/initrd.target.wants"
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 "${systemd_system_unit_path}/${file}" \
		"${new_systemd_system_unit_path}/${file}"
	# "ln" returns an error if the link already exists.
	source_path="../${file}"
	target_path="${new_systemd_system_unit_path}/initrd.target.wants/${file}"
	ln --symbolic "$source_path" "$target_path" &>/dev/null || \
	warn "Failed to link \"$source_path\" to \"$target_path\"."
done