summary refs log tree commit diff
path: root/nixos/modules/system
diff options
context:
space:
mode:
authorNikolay Amiantov <ab@fmap.me>2015-03-05 18:06:51 +0300
committerVladimír Čunát <vcunat@gmail.com>2015-03-07 13:00:08 +0100
commitb8020184823194a1853b000ef9aeb8e4d12d733f (patch)
tree5115b872fcac2d6aee5d1789be6194b804ef0928 /nixos/modules/system
parent4560b1155169750d4219cbd404a57fec9b4a5e4b (diff)
downloadnixlib-b8020184823194a1853b000ef9aeb8e4d12d733f.tar
nixlib-b8020184823194a1853b000ef9aeb8e4d12d733f.tar.gz
nixlib-b8020184823194a1853b000ef9aeb8e4d12d733f.tar.bz2
nixlib-b8020184823194a1853b000ef9aeb8e4d12d733f.tar.lz
nixlib-b8020184823194a1853b000ef9aeb8e4d12d733f.tar.xz
nixlib-b8020184823194a1853b000ef9aeb8e4d12d733f.tar.zst
nixlib-b8020184823194a1853b000ef9aeb8e4d12d733f.zip
stage-1: fix hibernation (close #6675)
Fixes #6617.
Diffstat (limited to 'nixos/modules/system')
-rw-r--r--nixos/modules/system/boot/stage-1-init.sh10
1 files changed, 7 insertions, 3 deletions
diff --git a/nixos/modules/system/boot/stage-1-init.sh b/nixos/modules/system/boot/stage-1-init.sh
index a34a13602650..5af644279e5f 100644
--- a/nixos/modules/system/boot/stage-1-init.sh
+++ b/nixos/modules/system/boot/stage-1-init.sh
@@ -177,20 +177,24 @@ fi
 if test -e /sys/power/resume -a -e /sys/power/disk; then
     if test -n "@resumeDevice@"; then
         resumeDev="@resumeDevice@"
+        resumeInfo="$(udevadm info -q property "$resumeDev" )"
     else
         for sd in @resumeDevices@; do
             # Try to detect resume device. According to Ubuntu bug:
             # https://bugs.launchpad.net/ubuntu/+source/pm-utils/+bug/923326/comments/1
             # When there are multiple swap devices, we can't know where will hibernate
             # image reside. We can check all of them for swsuspend blkid.
-            if [ "$(udevadm info -q property "$sd" | sed -n 's/^ID_FS_TYPE=//p')" = "swsuspend" ]; then
+            resumeInfo="$(udevadm info -q property "$sd" )"
+            if [ "$(echo "$resumeInfo" | sed -n 's/^ID_FS_TYPE=//p')" = "swsuspend" ]; then
                 resumeDev="$sd"
                 break
             fi
         done
     fi
-    if test -n "$resumeDev"; then
-        readlink -f "$resumeDev" > /sys/power/resume 2> /dev/null || echo "failed to resume..."
+    if test -e "$resumeDev"; then
+        resumeMajor="$(echo "$resumeInfo" | sed -n 's/^MAJOR=//p')"
+        resumeMinor="$(echo "$resumeInfo" | sed -n 's/^MINOR=//p')"
+        echo "$resumeMajor:$resumeMinor" > /sys/power/resume 2> /dev/null || echo "failed to resume..."
     fi
 fi