]> git.pld-linux.org Git - projects/geninitrd.git/blame - mod-swsusp.sh
- swsusp support from mis@pld-linux
[projects/geninitrd.git] / mod-swsusp.sh
CommitLineData
152a5bf1
AM
1#!/bin/sh
2# geninitrd mod: swsusp
3#
4USE_SWSUSP=${USE_SWSUSP:-yes}
5
6# resume device
7swap_dev=""
8
9# setup geninitrd module
10# @access public
11setup_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
26find_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
44initrd_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}
This page took 0.036119 seconds and 4 git commands to generate.