From: Andrey Borzenkov Date: Wed, 13 Jan 2010 15:07:13 +0000 (+0100) Subject: Add user suspend support X-Git-Tag: 004~15 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5c7821b6c552bc43f88c6522729b6a7f087e8f60;p=thirdparty%2Fdracut.git Add user suspend support This patch adds support for user mode suspend to disk. It is installed in parallel to kernel mode suspend module; either will fail if system was not suspended using correct tool so next one can be tried. Signed-off-by: Andrey Borzenkov --- diff --git a/dracut.spec b/dracut.spec index 326a3e7b5..99446720e 100644 --- a/dracut.spec +++ b/dracut.spec @@ -186,6 +186,7 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/dracut/modules.d/95znet %{_datadir}/dracut/modules.d/95terminfo %{_datadir}/dracut/modules.d/95udev-rules +%{_datadir}/dracut/modules.d/95uswsusp %{_datadir}/dracut/modules.d/98syslog %{_datadir}/dracut/modules.d/99base %attr(0644,root,root) %ghost %config(missingok,noreplace) %{_localstatedir}/log/dracut.log diff --git a/modules.d/95uswsusp/check b/modules.d/95uswsusp/check new file mode 100755 index 000000000..ba9547950 --- /dev/null +++ b/modules.d/95uswsusp/check @@ -0,0 +1,2 @@ +#!/bin/sh +[ -x /usr/sbin/resume ] diff --git a/modules.d/95uswsusp/install b/modules.d/95uswsusp/install new file mode 100755 index 000000000..f8afe3ac3 --- /dev/null +++ b/modules.d/95uswsusp/install @@ -0,0 +1,6 @@ +#!/bin/bash +inst /usr/sbin/resume +[ -f /etc/suspend.conf ] && inst /etc/suspend.conf + +inst_hook cmdline 10 "$moddir/parse-uswsusp.sh" +inst_hook mount 10 "$moddir/resume-uswsusp.sh" diff --git a/modules.d/95uswsusp/parse-uswsusp.sh b/modules.d/95uswsusp/parse-uswsusp.sh new file mode 100755 index 000000000..7a0925f35 --- /dev/null +++ b/modules.d/95uswsusp/parse-uswsusp.sh @@ -0,0 +1,20 @@ +#!/bin/sh +if resume=$(getarg resume=) && ! getarg noresume; then + export resume +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 + +if splash=$(getarg splash=); then + export splash +else + unset splash +fi diff --git a/modules.d/95uswsusp/resume-uswsusp.sh b/modules.d/95uswsusp/resume-uswsusp.sh new file mode 100755 index 000000000..9b1856711 --- /dev/null +++ b/modules.d/95uswsusp/resume-uswsusp.sh @@ -0,0 +1,11 @@ +#!/bin/sh +case "$splash" in + quiet ) + a_splash="-P splash=y" + ;; + * ) + a_splash="-P splash=n" + ;; +esac + +/usr/sbin/resume $a_splash "$resume"