]>
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 | ||
16 | swap_dev="$(awk '/^\/dev\// { print $1 }' /proc/swaps | head -1)" | |
17 | if [ -z "$swap_dev" ]; then | |
18 | warn "Cannot determine swap device. You may try add specific device to kernel command line" | |
19 | else | |
20 | verbose "swsusp: will try to resume from swap device $swap_dev" | |
21 | fi | |
22 | } | |
23 | ||
24 | # find modules for for swsusp | |
25 | # @access public | |
26 | find_modules_swsusp() { | |
27 | swap_dev="$(awk '/^\/dev\// { print $1 }' /proc/swaps | head -1)" | |
28 | ||
29 | # save state | |
30 | local vgvolumes=$LVM_VGVOLUMES | |
31 | find_modules_for_devpath $swap_dev | |
32 | ||
33 | # check for saved state, differenciate between rootfs VG | |
34 | if [ "$LVM_VGVOLUMES" != "$vgvolumes" ]; then | |
35 | # add swap device to LVM_SUSPENDVG | |
36 | LVM_SUSPENDVG="$LVM_SUSPENDVG $LVM_VGVOLUMES" | |
37 | LVM_VGVOLUMES=$vgvolumes | |
38 | verbose "swap device is on LVM" | |
39 | fi | |
40 | } | |
41 | ||
42 | # generate initrd fragment | |
43 | # @access public | |
44 | initrd_gen_swsusp() { | |
45 | if ! is_yes "$USE_SWSUSP"; then | |
46 | return | |
47 | fi | |
48 | ||
49 | verbose "Setting up swsusp..." | |
50 | ||
51 | mkdir -p $DESTDIR${swap_dev%/*} | |
52 | inst $swap_dev $swap_dev | |
53 | ||
54 | mount_dev | |
55 | mount_sys | |
56 | echo "swap_dev=$swap_dev" | add_linuxrc | |
57 | ||
58 | add_linuxrc <<-'EOF' | |
59 | resume=no | |
60 | for arg in $CMDLINE; do | |
61 | if [ "${arg##resume=/dev/}" != "${arg}" ]; then | |
62 | swap_dev=${arg##resume=} | |
63 | resume=yes | |
64 | elif [ "${arg##resume=}" != "${arg}" ]; then | |
65 | resume=${arg##resume=} | |
66 | fi | |
67 | done | |
68 | ||
69 | if [ "$resume" = "yes" ] && [ -n "$swap_dev" ]; then | |
70 | echo "Resuming from $swap_dev..." | |
71 | echo "$swap_dev" > /sys/power/resume | |
72 | fi | |
73 | EOF | |
74 | } |