]>
Commit | Line | Data |
---|---|---|
152a5bf1 AM |
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 | ||
d56b7287 | 16 | swap_dev="$(awk '/^\/dev\// { print $1 }' /proc/swaps | grep -v /dev/zram | head -1)" |
152a5bf1 | 17 | if [ -z "$swap_dev" ]; then |
55248df6 AM |
18 | warn "Cannot determine swap device. You may try add specific device to kernel command line. Disabling swsusp support." |
19 | USE_SWSUSP=no | |
152a5bf1 AM |
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() { | |
d56b7287 | 28 | swap_dev="$(awk '/^\/dev\// { print $1 }' /proc/swaps | grep -v /dev/zram | head -1)" |
152a5bf1 AM |
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 | } |