Applying patch from Michael Prokop <mika@grml.org> to support udev >= 0.140.
[live-boot-grml.git] / scripts / live-bottom / 13swap
index fcef76c..448c90a 100755 (executable)
@@ -1,44 +1,65 @@
 #!/bin/sh
 
-PREREQ=""
-DESCRIPTION="Setting up swap..."
-FSTAB=/root/etc/fstab
+#set -e
 
-. /scripts/live-functions
+# initramfs-tools header
+
+PREREQ=""
 
 prereqs()
 {
-       echo "$PREREQ"
+       echo "${PREREQ}"
 }
 
-case $1 in
-# get pre-requisites
-prereqs)
-       prereqs
-       exit 0
-       ;;
+case "${1}" in
+       prereqs)
+               prereqs
+               exit 0
+               ;;
 esac
 
-log_begin_msg "$DESCRIPTION"
+# live-initramfs header
+
+if [ -z "${SWAPON}" ] || [ -n "${NOFSTAB}" ]
+then
+       exit 0
+fi
+
+. /scripts/live-functions
+
+log_begin_msg "Setting up swap"
 
+# live-initramfs script
+
+FSTAB=/root/etc/fstab
 devices=""
-for device in /dev/[hs]d[a-z][0-9]*; do
-    if ! [ -b "$device" ]; then
-        continue
-    fi
-
-    magic=$(/bin/dd if="$device" bs=4086 skip=1 count=1 2>/dev/null | /bin/dd bs=10 count=1 2>/dev/null) || continue
-    
-    if [ "$magic" = "SWAPSPACE2" -o "$magic" = "SWAP-SPACE" ]; then
-#        log "Found $device"
-        devices="$devices $device"
-        fi
+
+for device in /dev/[hs]d[a-z][0-9]*
+do
+       if ! [ -b "${device}" ]
+       then
+               continue
+       fi
+
+       /lib/udev/vol_id ${device%%[0-9]*} 2>/dev/null | grep -q "^ID_FS_USAGE=raid" && continue
+
+       magic=$(/bin/dd if="${device}" bs=4086 skip=1 count=1 2>/dev/null | /bin/dd bs=10 count=1 2>/dev/null) || continue
+
+       if [ "${magic}" = "SWAPSPACE2" -o "${magic}" = "SWAP-SPACE" ]
+       then
+               #log "Found ${device}"
+               devices="${devices} ${device}"
+       fi
 done
 
-for device in $devices; do
-    cat >> $FSTAB <<EOF
-$device swap swap defaults 0 0
-EOF
+for device in ${devices}
+do
+
+if ! grep -qs  "^${device} swap" "${FSTAB}"
+then
+       echo "${device} swap swap defaults 0 0" >> "${FSTAB}"
+fi
+
 done
 
 log_end_msg