e7aed6c0551ee861335509e4f3d0fd70abf4bfc5
[live-boot-grml.git] / scripts / boot / 3020-swapon
1 #!/bin/sh
2
3 #set -e
4
5 Swap ()
6 {
7         for _PARAMETER in ${_CMDLINE}
8         do
9                 case "${_PARAMETER}" in
10                         live-boot.swap=*|swap=*)
11                                 LIVE_SWAP="true"
12                                 LIVE_SWAP_DEVICES="${_PARAMETER#*swap=}"
13                                 ;;
14
15                         live-boot.swap|swap)
16                                 LIVE_SWAP="true"
17                                 ;;
18                 esac
19         done
20
21         case "${LIVE_SWAP}" in
22                 true)
23                         ;;
24
25                 *)
26                         return 0
27                         ;;
28         esac
29
30         LIVE_SWAP_DEVICES="${LIVE_SWAP_DEVICES:-/dev/sd* /dev/vd*}"
31
32         if [ -e /root/etc/fstab.d ]
33         then
34                 # wheezy
35                 _FSTAB="/root/etc/fstab.d/swap"
36         else
37                 # squeeze
38                 _FSTAB="/root/etc/fstab"
39         fi
40
41         for _DEVICE in $(echo ${LIVE_SWAP_DEVICES} | sed -e 's|,| |g')
42         do
43                 if [ ! -b "${_DEVICE}" ]
44                 then
45                         continue
46                 fi
47
48                 blkid -o udev -p ${_DEVICE%%[0-9]*} | grep -q "^ID_FS_USAGE=raid" && continue
49
50                 _MAGIC="$(/bin/dd if=${_DEVICE} bs=4086 skip=1 count=1 2>/dev/null | /bin/dd bs=10 count=1 2>/dev/null)" || continue
51
52                 case "${_MAGIC}" in
53                         SWAPSPACE2|SWAP-SPACE)
54                                 _SWAP_DEVICES="${_SWAP_DEVICES} ${_DEVICE}"
55                                 ;;
56                 esac
57         done
58
59         # Remove all auto swap entries
60         if grep -qs "swap swap" "${_FSTAB}"
61         then
62                 grep -v "swap swap" "${_FSTAB}" > "${_FSTAB}".tmp
63                 mv "${_FSTAB}".tmp "${_FSTAB}"
64         fi
65
66         # Add new swap entries
67         for _DEVICE in ${_SWAP_DEVICES}
68         do
69                 echo "${_DEVICE} swap swap defaults 0 0" >> "${_FSTAB}"
70         done
71 }