]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
resume: generate rules already in parse-resume.sh
authorHarald Hoyer <harald@redhat.com>
Wed, 6 Mar 2013 16:02:49 +0000 (17:02 +0100)
committerHarald Hoyer <harald@redhat.com>
Wed, 6 Mar 2013 16:29:11 +0000 (17:29 +0100)
modules.d/95resume/parse-resume.sh

index b460a16938fb631c2416680db6a4b4039c555ada..9da155075d8feca5b019214e5cb64ba59cb5f43f 100755 (executable)
@@ -24,3 +24,51 @@ if splash=$(getarg splash=); then
 else
     unset splash
 fi
+
+case "$splash" in
+    quiet )
+        a_splash="-P splash=y"
+    ;;
+    * )
+        a_splash="-P splash=n"
+    ;;
+esac
+
+if [ -n "$resume" ]; then
+    {
+        printf "KERNEL==\"%s\", ACTION==\"add|change\", SYMLINK+=\"/dev/resume\"\n" \
+            ${resume#/dev/};
+        printf "SYMLINK==\"%s\", ACTION==\"add|change\", SYMLINK+=\"/dev/resume\"\n" \
+            ${resume#/dev/};
+    } >> /etc/udev/rules.d/99-resume-link.rules
+
+    {
+        if [ -x /usr/sbin/resume ]; then
+            printf "KERNEL==\"%s\", ACTION==\"add|change\", ENV{ID_FS_TYPE}==\"suspend|swsuspend|swsupend\", RUN+=\"/sbin/initqueue --finished --unique --name 00resume /usr/sbin/resume %s \'%s\'\"\n" \
+                ${resume#/dev/} "$a_splash" "$resume";
+            printf "SYMLINK==\"%s\", ACTION==\"add|change\", ENV{ID_FS_TYPE}==\"suspend|swsuspend|swsupend\", RUN+=\"/sbin/initqueue --finished --unique --name 00resume /usr/sbin/resume %s \'%s\'\"\n" \
+                ${resume#/dev/} "$a_splash" "$resume";
+        fi
+        printf "KERNEL==\"%s\", ACTION==\"add|change\", ENV{ID_FS_TYPE}==\"suspend|swsuspend|swsupend\", RUN+=\"/sbin/initqueue --finished --unique --name 00resume echo %%M:%%m > /sys/power/resume\"\n" \
+            ${resume#/dev/};
+        printf "SYMLINK==\"%s\", ACTION==\"add|change\", ENV{ID_FS_TYPE}==\"suspend|swsuspend|swsupend\", RUN+=\"/sbin/initqueue --finished --unique --name 00resume echo %%M:%%m  > /sys/power/resume\"\n" \
+            ${resume#/dev/};
+    } >> /etc/udev/rules.d/99-resume.rules
+
+    printf '[ -e "%s" ] && { ln -s "%s" /dev/resume; rm "$job" "%s/initqueue/timeout/resume.sh"; }\n' \
+        "$resume" "$resume" "$hookdir" >> $hookdir/initqueue/settled/resume.sh
+
+    printf 'warn "Cancelling resume operation. Device not found."; cancel_wait_for_dev /dev/resume; rm "$job" "%s/initqueue/settled/resume.sh";' \
+        "$hookdir" >> $hookdir/initqueue/timeout/resume.sh
+
+    wait_for_dev "/dev/resume"
+    mv /lib/dracut/resume.sh /lib/dracut/hooks/pre-mount/10-resume.sh
+elif ! getarg noresume; then
+    {
+        if [ -x /usr/sbin/resume ]; then
+            printf "SUBSYSTEM==\"block\", ACTION==\"add|change\", ENV{ID_FS_TYPE}==\"suspend|swsuspend|swsupend\", RUN+=\"/sbin/initqueue --finished --unique --name 00resume /usr/sbin/resume %s \$tempnode\"\n" "$a_splash"
+        fi
+        echo "SUBSYSTEM==\"block\", ACTION==\"add|change\", ENV{ID_FS_TYPE}==\"suspend|swsuspend|swsupend\"," \
+            " RUN+=\"/sbin/initqueue --finished --unique --name 00resume echo %M:%m > /sys/power/resume\"";
+    } >> /etc/udev/rules.d/99-resume.rules
+fi