]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
base/dracut-lib.sh: extend wait_for_dev() for systemd
authorHarald Hoyer <harald@redhat.com>
Wed, 6 Mar 2013 16:08:49 +0000 (17:08 +0100)
committerHarald Hoyer <harald@redhat.com>
Wed, 6 Mar 2013 16:29:12 +0000 (17:29 +0100)
modules.d/99base/dracut-lib.sh

index 94ff33f85fbc59a409c816b7de841b9a8910e671..93283b54d108573b710f98afa5f6dd11ca41ed99 100755 (executable)
@@ -826,13 +826,24 @@ wait_for_mount()
 wait_for_dev()
 {
     local _name
-    _name="$(str_replace "$1" '/' '\\x2f')"
+    _name="$(str_replace "$1" '/' '\x2f')"
     printf '[ -e "%s" ]\n' $1 \
-        >> "$hookdir/initqueue/finished/devexists-${_name}.sh"
+        >> "${PREFIX}$hookdir/initqueue/finished/devexists-${_name}.sh"
     {
         printf '[ -e "%s" ] || ' $1
         printf 'warn "\"%s\" does not exist"\n' $1
-    } >> "$hookdir/emergency/80-${_name}.sh"
+    } >> "${PREFIX}$hookdir/emergency/80-${_name}.sh"
+
+    if [ -n "$DRACUT_SYSTEMD" ]; then
+        _name="${1%%/}"
+        _name="${_name##/}"
+        _name="$(str_replace "$_name" '-' '\x2d')"
+        _name="$(str_replace "$_name" '/' '-')"
+        if ! [ -L ${PREFIX}/etc/systemd/system/dracut.target.requires/${_name}.device ]; then
+            [ -d ${PREFIX}/etc/systemd/system/dracut.target.requires ] || mkdir -p ${PREFIX}/etc/systemd/system/dracut.target.requires
+            ln -s ../${_name}.device ${PREFIX}/etc/systemd/system/dracut.target.requires/${_name}.device
+        fi
+    fi
 }
 
 cancel_wait_for_dev()