]> git.pld-linux.org Git - projects/geninitrd.git/blame - mod-swsusp.sh
luks: initial support for luks2 tokens
[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
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
27find_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
45initrd_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.432858 seconds and 4 git commands to generate.