#!/bin/sh
+#set -e
+
+# initramfs-tools header
+
PREREQ=""
-DESCRIPTION="Configuring fstab..."
FSTAB=/root/etc/fstab
-. /scripts/live-functions
-
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
+
+. /scripts/live-functions
+
+if [ -n "${NOFSTAB}" ]
+then
+ exit 0
+fi
+
+log_begin_msg "Configuring fstab"
+
+# live-initramfs script
+
+# Create a fake fstab only if it doesn't exist or if its the debootstrap template
+if [ ! -f "${FSTAB}" ] || grep -qs 'UNCONFIGURED FSTAB FOR BASE SYSTEM' "${FSTAB}"
+then
+
+cat > ${FSTAB} << EOF
+# /etc/fstab: static file system information.
+#
+# <file system> <mount point> <type> <options> <dump> <pass>
-cat > $FSTAB <<EOF
-unionfs / unionfs rw 0 0
-tmpfs /tmp tmpfs nosuid,nodev 0 0
EOF
-rm -f /root/etc/rcS.d/S*checkroot.sh
+fi
+
+if ! grep -qs "^${UNIONTYPE}" "${FSTAB}"
+then
+ echo "${UNIONTYPE} / ${UNIONTYPE} rw 0 0" >> "${FSTAB}"
+fi
+
+if ! grep -qs "^tmpfs /tmp" "${FSTAB}"
+then
+ echo "tmpfs /tmp tmpfs nosuid,nodev 0 0" >> "${FSTAB}"
+fi
+
+if [ -n "${SWAPON}" ]
+then
+ devices=""
+
+ for device in /dev/[hs]d[a-z][0-9]*
+ do
+ if ! [ -b "${device}" ]
+ then
+ continue
+ fi
+
+ # udev (>= 146) no longer provides vol_id
+ if [ -x /lib/udev/vol_id ]
+ then
+ # lenny
+ /lib/udev/vol_id ${device%%[0-9]*} 2>/dev/null | grep -q "^ID_FS_USAGE=raid" && continue
+ else
+ # squeeze
+ /sbin/blkid -o udev -p ${device%%[0-9]*} | grep -q "^ID_FS_USAGE=raid" && 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
+ done
+
+ # Remove all auto swap entries
+ if grep -qs "swap swap" "${FSTAB}"
+ then
+ grep -v "swap swap" "${FSTAB}" > "${FSTAB}".tmp
+ mv "${FSTAB}".tmp "${FSTAB}"
+ fi
+
+ # Add new swap entries
+ for device in ${devices}
+ do
+ echo "${device} swap swap defaults 0 0" >> "${FSTAB}"
+ done
+fi
+
+# disabled for now
+#rm -f /root/etc/rcS.d/S*checkroot.sh
+
+if [ "${NOFASTBOOT}" != "Yes" ]
+then
+ touch root/fastboot
+fi
log_end_msg