+#!/bin/sh
+
+# This is a copy of 90-make-fstab, with a bug fixed.
+# It should be removed once the bug is fixed upstream.
+
+#
+# This script is responsible for setting up /etc/fstab upon the
+# new instance.
+#
+# This should be a simple job, but it is complicated by some of the
+# differences between filesystems - some root filesystems will require
+# the installation of new packages, and we have to handle that here.
+#
+# Steve
+# --
+# http://www.steve.org.uk/
+
+
+prefix=$1
+
+#
+# Source our common functions
+#
+if [ -e /usr/lib/xen-tools/common.sh ]; then
+ . /usr/lib/xen-tools/common.sh
+else
+ . ./hooks/common.sh
+fi
+
+
+#
+# Log our start
+#
+logMessage Script $0 starting
+
+
+#
+# Make sure we use ide style device names if required
+#
+device=sda
+if [ "${ide}" ]; then
+ device=hda
+fi
+
+#
+# Now we have the options we can create the fstab.
+#
+has_xfs=0
+has_reiserfs=0
+cat <<E_O_FSTAB > ${prefix}/etc/fstab
+# /etc/fstab: static file system information.
+#
+# <file system> <mount point> <type> <options> <dump> <pass>
+proc /proc proc defaults 0 0
+E_O_FSTAB
+for part in `seq 1 ${NUMPARTITIONS}`; do
+ eval "PARTITION=\"\${PARTITION${part}}\""
+ OLDIFS="${IFS}"
+ IFS=:
+ x=0
+ for partdata in ${PARTITION}; do
+ eval "partdata${x}=\"${partdata}\""
+ x=$(( $x+1 ))
+ done
+ IFS="${OLDIFS}"
+
+ case "${partdata2}" in
+ xfs)
+ has_xfs=1
+ ;;
+ reiserfs)
+ has_reiserfs=1
+ ;;
+ esac
+
+ if [ "${partdata2}" = "swap" ]; then
+ echo "${partdata7} none swap sw 0 0" >> ${prefix}/etc/fstab
+ else
+ echo "${partdata7} ${partdata3} ${partdata2} ${partdata4} 0 1" >> ${prefix}/etc/fstab
+ fi
+done
+
+
+#
+# Finally we can install any required packages for the given root
+# filesystem
+#
+if [ $has_xfs -eq 1 ]; then
+ installDebianPackage ${prefix} xfsprogs
+fi
+if [ $has_reiserfs -eq 1 ]; then
+ installDebianPackage ${prefix} reiserfsprogs
+fi
+
+
+#
+# Log our finish
+#
+logMessage Script $0 finished