diff --git a/modules.d/95resume/install b/modules.d/95resume/install index 945611e9..cecd2fc0 100755 --- a/modules.d/95resume/install +++ b/modules.d/95resume/install @@ -1,5 +1,4 @@ #!/bin/bash -dracut_install echo inst_hook cmdline 10 "$moddir/parse-resume.sh" inst_hook pre-udev 30 "$moddir/resume-genrules.sh" inst_hook mount 90 "$moddir/resume.sh" diff --git a/modules.d/95resume/parse-resume.sh b/modules.d/95resume/parse-resume.sh index 447e1512..94d71126 100755 --- a/modules.d/95resume/parse-resume.sh +++ b/modules.d/95resume/parse-resume.sh @@ -5,3 +5,11 @@ if resume=$(getarg resume=) && ! getarg noresume; then else unset resume fi + +case "$resume" in + LABEL=*) + resume="$(echo $resume | sed 's,/,\\x2f,g')" + resume="/dev/disk/by-label/${resume#LABEL=}" ;; + UUID=*) + resume="/dev/disk/by-uuid/${resume#UUID=}" ;; +esac diff --git a/modules.d/95resume/resume-genrules.sh b/modules.d/95resume/resume-genrules.sh index 108c3f7b..7c957150 100755 --- a/modules.d/95resume/resume-genrules.sh +++ b/modules.d/95resume/resume-genrules.sh @@ -1,6 +1,8 @@ -resume=$(getarg resume=) && ! getarg noresume && { -( - /bin/echo -e 'KERNEL=="'${resume#/dev/}'", RUN+="/bin/echo %M:%m > /sys/power/resume"' - /bin/echo -e 'SYMLINK=="'${resume#/dev/}'", RUN+="/bin/echo %M:%m > /sys/power/resume"' -) >> /etc/udev/rules.d/99-resume.rules -} +if [ -n "$resume" ]; then + ( + printf 'KERNEL=="%s", RUN+="/bin/echo %%M:%%m > /sys/power/resume"\n' \ + ${resume#/dev/} + printf 'SYMLINK=="%s", RUN+="/bin/echo %%M:%%m > /sys/power/resume"\n' \ + ${resume#/dev/} + ) >> /etc/udev/rules.d/99-resume.rules +fi