]> git.pld-linux.org Git - projects/geninitrd.git/blob - mod-swsusp.sh
luks: initial support for luks2 tokens
[projects/geninitrd.git] / mod-swsusp.sh
1 #!/bin/sh
2 # geninitrd mod: swsusp
3 #
4 USE_SWSUSP=${USE_SWSUSP:-yes}
5
6 # resume device
7 swap_dev=""
8
9 # setup geninitrd module
10 # @access       public
11 setup_mod_swsusp() {
12         if ! is_yes "$USE_SWSUSP"; then
13                 return
14         fi
15
16         swap_dev="$(awk '/^\/dev\// { print $1 }' /proc/swaps | grep -v /dev/zram | head -1)"
17         if [ -z "$swap_dev" ]; then
18             warn "Cannot determine swap device. You may try add specific device to kernel command line. Disabling swsusp support."
19             USE_SWSUSP=no
20         else
21             verbose "swsusp: will try to resume from swap device $swap_dev"
22         fi
23 }
24
25 # find modules for for swsusp
26 # @access       public
27 find_modules_swsusp() {
28         swap_dev="$(awk '/^\/dev\// { print $1 }' /proc/swaps | grep -v /dev/zram | head -1)"
29
30         # save state
31         local vgvolumes=$LVM_VGVOLUMES
32         find_modules_for_devpath $swap_dev
33
34         # check for saved state, differenciate between rootfs VG
35         if [ "$LVM_VGVOLUMES" != "$vgvolumes" ]; then
36                 # add swap device to LVM_SUSPENDVG
37                 LVM_SUSPENDVG="$LVM_SUSPENDVG $LVM_VGVOLUMES"
38                 LVM_VGVOLUMES=$vgvolumes
39                 verbose "swap device is on LVM"
40         fi
41 }
42
43 # generate initrd fragment
44 # @access       public
45 initrd_gen_swsusp() {
46         if ! is_yes "$USE_SWSUSP"; then
47                 return
48         fi
49
50         verbose "Setting up swsusp..."
51
52         mkdir -p $DESTDIR${swap_dev%/*}
53         inst $swap_dev $swap_dev
54
55         mount_dev
56         mount_sys
57         echo "swap_dev=$swap_dev" | add_linuxrc
58
59         add_linuxrc <<-'EOF'
60         resume=no
61         for arg in $CMDLINE; do
62                 if [ "${arg##resume=/dev/}" != "${arg}" ]; then
63                         swap_dev=${arg##resume=}
64                         resume=yes
65                 elif [ "${arg##resume=}" != "${arg}" ]; then
66                         resume=${arg##resume=}
67                 fi
68         done
69
70         if [ "$resume" = "yes" ] && [ -n "$swap_dev" ]; then
71                 echo "Resuming from $swap_dev..."
72                 echo "$swap_dev" > /sys/power/resume
73         fi
74         EOF
75 }
This page took 0.090351 seconds and 3 git commands to generate.