#!/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