"target" is also the name used in the debian installer for the installation target while "prefix" is too ambiguous.
135 lines
2.8 KiB
Bash
Executable File
135 lines
2.8 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# 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/
|
|
|
|
|
|
TARGET=$1
|
|
|
|
#
|
|
# Source our common functions
|
|
#
|
|
if [ -e /usr/share/xen-tools/common.sh ]; then
|
|
. /usr/share/xen-tools/common.sh
|
|
else
|
|
. ./hooks/common.sh
|
|
fi
|
|
|
|
|
|
#
|
|
# Log our start
|
|
#
|
|
logMessage Script $0 starting
|
|
|
|
logMessage Filesystem options are ${options}
|
|
|
|
#
|
|
# Find the root device.
|
|
#
|
|
# 1. default to xvda.
|
|
#
|
|
# 2. If --ide is specified use hda.
|
|
#
|
|
# 3. If --scsi is specified use sda.
|
|
#
|
|
# 4. Otherwise use a named $disk_device
|
|
#
|
|
device=xvda
|
|
if [ "${ide}" ]; then
|
|
device=hda
|
|
elif [ "${scsi}" ]; then
|
|
device=sda
|
|
else
|
|
if [ ! -z "${disk_device}" ]; then
|
|
device=`basename $disk_device`
|
|
fi
|
|
fi
|
|
|
|
logMessage "Root device is /dev/$device"
|
|
|
|
|
|
#
|
|
# Now we have the options we can create the fstab.
|
|
#
|
|
has_xfs=0
|
|
has_reiserfs=0
|
|
has_btrfs=0
|
|
cat <<E_O_FSTAB > ${TARGET}/etc/fstab
|
|
# /etc/fstab: static file system information.
|
|
#
|
|
# <file system> <mount point> <type> <options> <dump> <pass>
|
|
proc /proc proc defaults 0 0
|
|
devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 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
|
|
;;
|
|
btrfs)
|
|
has_btrfs=1
|
|
;;
|
|
esac
|
|
|
|
if [ "${partdata2}" = "swap" ]; then
|
|
echo "/dev/${device}${part} none swap sw 0 0" >> ${TARGET}/etc/fstab
|
|
else
|
|
echo "/dev/${device}${part} ${partdata3} ${partdata2} ${partdata4} 0 1" >> ${TARGET}/etc/fstab
|
|
fi
|
|
done
|
|
|
|
|
|
logMessage Checking for filesystem tools to install
|
|
|
|
#
|
|
# Install any required packages for the given root filesystem
|
|
#
|
|
if [ "$has_xfs" -eq 1 ]; then
|
|
installPackage ${TARGET} xfsprogs
|
|
fi
|
|
if [ "$has_reiserfs" -eq 1 ]; then
|
|
if isAPT; then
|
|
installDebianPackage reiserfsprogs
|
|
elif isYum; then
|
|
installRPMPackage reiserfs-utils
|
|
else
|
|
logMessage "Unable to install reiserfs tools; no package manager recognized"
|
|
fi
|
|
fi
|
|
if [ "$has_btrfs" -eq 1 ]; then
|
|
if isAPT; then
|
|
installDebianPackage btrfs-tools
|
|
elif isYum; then
|
|
installRPMPackage btrfs-progs
|
|
else
|
|
logMessage "Unable to install btrfs tools; no package manager recognized"
|
|
fi
|
|
fi
|
|
|
|
|
|
#
|
|
# Log our finish
|
|
#
|
|
logMessage Script $0 finished
|