1
0
mirror of synced 2026-03-29 10:45:48 +00:00

Refactoring: Massive code deduplication in hooks directory (Part 2)

All hooks files which were identical in two groups (debianoid and
redhatoid) have been moved to the new hooks/common directory and now
have symbolic links to the according new files at their old locations.
This commit is contained in:
Axel Beckert
2012-06-04 16:47:59 +02:00
parent fc736c040d
commit 2e9394d010
36 changed files with 789 additions and 2798 deletions

View File

@@ -1,112 +0,0 @@
#!/bin/sh
#
# This script sets up the networking files for the new image.
#
# 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 have an /etc/sysconfig/network-scripts directory.
#
mkdir -p ${prefix}/etc/sysconfig/network-scripts/
#
# Test for static vs. DHCP
#
if [ -z "${dhcp}" ]; then
#
# Setup the initial interface
#
cat <<E_O_STATIC >${prefix}/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=${ip1}
NETMASK=${netmask}
GATEWAY=${gateway}
E_O_STATIC
#
# Now setup any other ones.
#
interface=1
count=2
while [ "${count}" -le "${ip_count}" ]; do
value=\$ip${count}
value=`eval echo $value`
logMessage Adding etho:${interface}
cat <<E_O_STATIC >${prefix}/etc/sysconfig/network-scripts/ifcfg-eth0:${interface}
DEVICE=eth0:${interface}
ONBOOT=yes
BOOTPROTO=static
IPADDR=${value}
NETMASK=${netmask}
E_O_STATIC
count=`expr $count + 1`
interface=`expr $interface + 1`
done
#
# Hooks are run chrooted, hence the resolv.conf is moved
# temporarily to /etc/resolv.conf.old. Use that file, it
# will be restored after hooks are run.
#
if [ '' != "$nameserver" ]; then
rm -f ${prefix}/etc/resolv.conf.old
for ns in $nameserver; do
echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old
done
else
cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old
fi
else
cat <<E_O_DHCP >${prefix}/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
E_O_DHCP
chroot ${prefix} /usr/bin/yum -y install dhclient
fi
#
# Don't forget to setup the default route.
#
cat <<EOF >${prefix}/etc/sysconfig/network
NETWORKING=yes
GATEWAY=${gateway}
HOSTNAME=${hostname}
EOF
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1 @@
../common/40-setup-networking-rpm

View File

@@ -1,42 +0,0 @@
#!/bin/sh
#
# This script installs OpenSSH upon the new system.
#
# 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
#
# Install the OpenSSH server.
#
if [ ! -d ${prefix}/proc ]; then
mkdir -p ${prefix}/proc
fi
mount -o bind /proc ${prefix}/proc
chroot ${prefix} /usr/bin/yum -y install openssh-server passwd
umount ${prefix}/proc
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1 @@
../common/70-install-ssh-rpm

View File

@@ -1,41 +0,0 @@
#!/bin/sh
#
# Install modules from the host system into the new image.
#
# 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
#
# Copy the modules from the host to the new system - we should only
# really copy the *correct* modules, but we don't know what they are.
#
mkdir -p ${prefix}/lib/modules
cp -au /lib/modules/*/ ${prefix}/lib/modules
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1 @@
../common/80-install-modules-rpm

View File

@@ -1,123 +0,0 @@
#!/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/
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
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 > ${prefix}/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" >> ${prefix}/etc/fstab
else
echo "/dev/${device}${part} ${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
#if [ $has_btrfs -eq 1 ]; then
# installDebianPackage ${prefix} btrfs-tools
#fi
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1 @@
../common/90-make-fstab-rpm

View File

@@ -1,112 +0,0 @@
#!/bin/sh
#
# This script sets up the networking files for the new image.
#
# 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 have an /etc/sysconfig/network-scripts directory.
#
mkdir -p ${prefix}/etc/sysconfig/network-scripts/
#
# Test for static vs. DHCP
#
if [ -z "${dhcp}" ]; then
#
# Setup the initial interface
#
cat <<E_O_STATIC >${prefix}/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=${ip1}
NETMASK=${netmask}
GATEWAY=${gateway}
E_O_STATIC
#
# Now setup any other ones.
#
interface=1
count=2
while [ "${count}" -le "${ip_count}" ]; do
value=\$ip${count}
value=`eval echo $value`
logMessage Adding etho:${interface}
cat <<E_O_STATIC >${prefix}/etc/sysconfig/network-scripts/ifcfg-eth0:${interface}
DEVICE=eth0:${interface}
ONBOOT=yes
BOOTPROTO=static
IPADDR=${value}
NETMASK=${netmask}
E_O_STATIC
count=`expr $count + 1`
interface=`expr $interface + 1`
done
#
# Hooks are run chrooted, hence the resolv.conf is moved
# temporarily to /etc/resolv.conf.old. Use that file, it
# will be restored after hooks are run.
#
if [ '' != "$nameserver" ]; then
rm -f ${prefix}/etc/resolv.conf.old
for ns in $nameserver; do
echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old
done
else
cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old
fi
else
cat <<E_O_DHCP >${prefix}/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
E_O_DHCP
chroot ${prefix} /usr/bin/yum -y install dhclient
fi
#
# Don't forget to setup the default route.
#
cat <<EOF >${prefix}/etc/sysconfig/network
NETWORKING=yes
GATEWAY=${gateway}
HOSTNAME=${hostname}
EOF
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1 @@
../common/40-setup-networking-rpm

View File

@@ -1,42 +0,0 @@
#!/bin/sh
#
# This script installs OpenSSH upon the new system.
#
# 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
#
# Install the OpenSSH server.
#
if [ ! -d ${prefix}/proc ]; then
mkdir -p ${prefix}/proc
fi
mount -o bind /proc ${prefix}/proc
chroot ${prefix} /usr/bin/yum -y install openssh-server passwd
umount ${prefix}/proc
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1 @@
../common/70-install-ssh-rpm

View File

@@ -1,41 +0,0 @@
#!/bin/sh
#
# Install modules from the host system into the new image.
#
# 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
#
# Copy the modules from the host to the new system - we should only
# really copy the *correct* modules, but we don't know what they are.
#
mkdir -p ${prefix}/lib/modules
cp -au /lib/modules/*/ ${prefix}/lib/modules
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1 @@
../common/80-install-modules-rpm

View File

@@ -0,0 +1,170 @@
#!/bin/sh
#
# This script sets up the /etc/network/interface file for the new
# image.
#
# 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 have an /etc/network directory.
#
mkdir -p ${prefix}/etc/network
#
# A function to setup DHCP for our new image.
#
setupDynamicNetworking ()
{
#
# The host is using DHCP.
#
cat <<E_O_DHCP > ${prefix}/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
# post-up ethtool -K eth0 tx off
#
# The commented out line above will disable TCP checksumming which
# might resolve problems for some users. It is disabled by default
#
E_O_DHCP
}
#
# A function to setup static IP addresses for our new image.
#
setupStaticNetworking ()
{
#
# if $p2p is set then add a "pointopoint" setting.
#
point='';
if [ ! -z "${p2p}" ]; then
point="pointopoint ${p2p}"
else
point=''
fi
#
# broadcast address?
#
bcast='';
if [ ! -z "${broadcast}" ]; then
bcast=" broadcast ${broadcast}"
fi
#
# We have a static IP address
#
cat <<E_O_STATIC >${prefix}/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address ${ip1}
gateway ${gateway}
netmask ${netmask}
${bcast}
${point}
# post-up ethtool -K eth0 tx off
#
# The commented out line above will disable TCP checksumming which
# might resolve problems for some users. It is disabled by default
#
E_O_STATIC
interface=1
count=2
while [ "${count}" -le "${ip_count}" ]; do
value=\$ip${count}
value=`eval echo $value`
logMessage Adding etho:${interface}
cat <<E_O_STATIC >>${prefix}/etc/network/interfaces
auto eth0:${interface}
iface eth0:${interface} inet static
address ${value}
netmask ${netmask}
# post-up ethtool -K eth0 tx off
E_O_STATIC
count=`expr $count + 1`
interface=`expr $interface + 1`
done
#
# Hooks are run chrooted, hence the resolv.conf is moved
# temporarily to /etc/resolv.conf.old. Use that file, it
# will be restored after hooks are run.
#
if [ '' != "$nameserver" ]; then
rm -f ${prefix}/etc/resolv.conf.old
for ns in $nameserver; do
echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old
done
else
cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old
fi
}
#
# Call the relevant function
#
if [ -z "${dhcp}" ]; then
logMessage "Setting up static networking"
setupStaticNetworking
else
logMessage "Setting up DHCP networking"
setupDynamicNetworking
fi
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1,112 @@
#!/bin/sh
#
# This script sets up the networking files for the new image.
#
# 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 have an /etc/sysconfig/network-scripts directory.
#
mkdir -p ${prefix}/etc/sysconfig/network-scripts/
#
# Test for static vs. DHCP
#
if [ -z "${dhcp}" ]; then
#
# Setup the initial interface
#
cat <<E_O_STATIC >${prefix}/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=${ip1}
NETMASK=${netmask}
GATEWAY=${gateway}
E_O_STATIC
#
# Now setup any other ones.
#
interface=1
count=2
while [ "${count}" -le "${ip_count}" ]; do
value=\$ip${count}
value=`eval echo $value`
logMessage Adding etho:${interface}
cat <<E_O_STATIC >${prefix}/etc/sysconfig/network-scripts/ifcfg-eth0:${interface}
DEVICE=eth0:${interface}
ONBOOT=yes
BOOTPROTO=static
IPADDR=${value}
NETMASK=${netmask}
E_O_STATIC
count=`expr $count + 1`
interface=`expr $interface + 1`
done
#
# Hooks are run chrooted, hence the resolv.conf is moved
# temporarily to /etc/resolv.conf.old. Use that file, it
# will be restored after hooks are run.
#
if [ '' != "$nameserver" ]; then
rm -f ${prefix}/etc/resolv.conf.old
for ns in $nameserver; do
echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old
done
else
cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old
fi
else
cat <<E_O_DHCP >${prefix}/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
E_O_DHCP
chroot ${prefix} /usr/bin/yum -y install dhclient
fi
#
# Don't forget to setup the default route.
#
cat <<EOF >${prefix}/etc/sysconfig/network
NETWORKING=yes
GATEWAY=${gateway}
HOSTNAME=${hostname}
EOF
#
# Log our finish
#
logMessage Script $0 finished

67
hooks/common/70-install-ssh-deb Executable file
View File

@@ -0,0 +1,67 @@
#!/bin/sh
#
# This script installs OpenSSH Server on the newly created guest.
#
# It does this by generating the keys within the host, since guests
# do not have the necessary /dev/random and /dev/urandom to generate
# their own keys before boot.
#
# Dmitry Nedospasov
# --
# http://nedos.net/
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
#
# Since our guests doesn't have an RNG, generate the keys from the host
#
# First, create an ssh directory
#
mkdir -p ${prefix}/etc/ssh
#
# Second, Generate the Host RSA Key
#
if [ ! -f ${prefix}/etc/ssh/ssh_host_rsa_key ]; then
if ssh-keygen -t rsa -N "" -f ${prefix}/etc/ssh/ssh_host_rsa_key -C "root@${hostname}"; then
logMessage "successfully generetaged Host RSA"
else
logMessage "failed to generate Host RSA Key"
fi
fi
#
# Third, Generate the Host DSA Key
#
if [ ! -f ${prefix}/etc/ssh/ssh_host_dsa_key ]; then
if ssh-keygen -t dsa -N "" -f ${prefix}/etc/ssh/ssh_host_dsa_key -C "root@${hostname}"; then
logMessage "successfully generetaged Host DSA"
else
logMessage "failed to generate Host DSA Key"
fi
fi
#
# Install ssh
#
installDebianPackage ${prefix} openssh-server
#
# Log our finish
#
logMessage Script $0 finished

42
hooks/common/70-install-ssh-rpm Executable file
View File

@@ -0,0 +1,42 @@
#!/bin/sh
#
# This script installs OpenSSH upon the new system.
#
# 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
#
# Install the OpenSSH server.
#
if [ ! -d ${prefix}/proc ]; then
mkdir -p ${prefix}/proc
fi
mount -o bind /proc ${prefix}/proc
chroot ${prefix} /usr/bin/yum -y install openssh-server passwd
umount ${prefix}/proc
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1,86 @@
#!/bin/sh
#
# Install modules from the host system into the new image, and
# ensure that 'module-init-tools' is setup.
#
# This is most likely required if you're using a custom kernel
# for your Xen system. But even if it isn't required it can't
# really do anything bad; just waste a bit of space.
#
# 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
if [ ${pygrub} ]; then
logMessage "pygrub set, skipping module install"
else
#
# The name of the package containing the correct modules.
#
linux_modules_package="linux-modules-$(uname -r)"
#
# Attempt to install that package. This will either work on an Etch
# system, or fail on a Sarge/custom kernel.
#
if [ -n "${modules}" -a -d "${modules}" ]; then
#
# Modules path was specified during install
#
logMessage "Copying modules from ${modules}"
mkdir -p ${prefix}/lib/modules
cp -au ${modules} ${prefix}/lib/modules
elif chroot ${prefix} /usr/bin/apt-cache show ${linux_modules_package} >/dev/null 2>/dev/null; then
logMessage "Package '${linux_modules_package}' is available - installing"
#
# If it worked then we can install the package.
#
installDebianPackage ${prefix} ${linux_modules_package}
else
#
# Fall back to copying over modules from the host to the new
# system.
#
logMessage "Package '${linux_modules_package}' is not available"
logMessage "Copying modules from /lib/modules/$(uname -r)"
mkdir -p ${prefix}/lib/modules
cp -au /lib/modules/$(uname -r) ${prefix}/lib/modules
fi
#
# Install the module-init-tools package.
#
installDebianPackage ${prefix} module-init-tools
fi # if pygrub
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1,41 @@
#!/bin/sh
#
# Install modules from the host system into the new image.
#
# 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
#
# Copy the modules from the host to the new system - we should only
# really copy the *correct* modules, but we don't know what they are.
#
mkdir -p ${prefix}/lib/modules
cp -au /lib/modules/*/ ${prefix}/lib/modules
#
# Log our finish
#
logMessage Script $0 finished

120
hooks/common/90-make-fstab-deb Executable file
View File

@@ -0,0 +1,120 @@
#!/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/
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
#
# 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 > ${prefix}/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" >> ${prefix}/etc/fstab
else
echo "/dev/${device}${part} ${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
if [ $has_btrfs -eq 1 ]; then
installDebianPackage ${prefix} btrfs-tools
fi
#
# Log our finish
#
logMessage Script $0 finished

123
hooks/common/90-make-fstab-rpm Executable file
View File

@@ -0,0 +1,123 @@
#!/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/
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
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 > ${prefix}/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" >> ${prefix}/etc/fstab
else
echo "/dev/${device}${part} ${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
#if [ $has_btrfs -eq 1 ]; then
# installDebianPackage ${prefix} btrfs-tools
#fi
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -1,170 +0,0 @@
#!/bin/sh
#
# This script sets up the /etc/network/interface file for the new
# image.
#
# 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 have an /etc/network directory.
#
mkdir -p ${prefix}/etc/network
#
# A function to setup DHCP for our new image.
#
setupDynamicNetworking ()
{
#
# The host is using DHCP.
#
cat <<E_O_DHCP > ${prefix}/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
# post-up ethtool -K eth0 tx off
#
# The commented out line above will disable TCP checksumming which
# might resolve problems for some users. It is disabled by default
#
E_O_DHCP
}
#
# A function to setup static IP addresses for our new image.
#
setupStaticNetworking ()
{
#
# if $p2p is set then add a "pointopoint" setting.
#
point='';
if [ ! -z "${p2p}" ]; then
point="pointopoint ${p2p}"
else
point=''
fi
#
# broadcast address?
#
bcast='';
if [ ! -z "${broadcast}" ]; then
bcast=" broadcast ${broadcast}"
fi
#
# We have a static IP address
#
cat <<E_O_STATIC >${prefix}/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address ${ip1}
gateway ${gateway}
netmask ${netmask}
${bcast}
${point}
# post-up ethtool -K eth0 tx off
#
# The commented out line above will disable TCP checksumming which
# might resolve problems for some users. It is disabled by default
#
E_O_STATIC
interface=1
count=2
while [ "${count}" -le "${ip_count}" ]; do
value=\$ip${count}
value=`eval echo $value`
logMessage Adding etho:${interface}
cat <<E_O_STATIC >>${prefix}/etc/network/interfaces
auto eth0:${interface}
iface eth0:${interface} inet static
address ${value}
netmask ${netmask}
# post-up ethtool -K eth0 tx off
E_O_STATIC
count=`expr $count + 1`
interface=`expr $interface + 1`
done
#
# Hooks are run chrooted, hence the resolv.conf is moved
# temporarily to /etc/resolv.conf.old. Use that file, it
# will be restored after hooks are run.
#
if [ '' != "$nameserver" ]; then
rm -f ${prefix}/etc/resolv.conf.old
for ns in $nameserver; do
echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old
done
else
cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old
fi
}
#
# Call the relevant function
#
if [ -z "${dhcp}" ]; then
logMessage "Setting up static networking"
setupStaticNetworking
else
logMessage "Setting up DHCP networking"
setupDynamicNetworking
fi
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1 @@
../common/40-setup-networking-deb

View File

@@ -1,67 +0,0 @@
#!/bin/sh
#
# This script installs OpenSSH Server on the newly created guest.
#
# It does this by generating the keys within the host, since guests
# do not have the necessary /dev/random and /dev/urandom to generate
# their own keys before boot.
#
# Dmitry Nedospasov
# --
# http://nedos.net/
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
#
# Since our guests doesn't have an RNG, generate the keys from the host
#
# First, create an ssh directory
#
mkdir -p ${prefix}/etc/ssh
#
# Second, Generate the Host RSA Key
#
if [ ! -f ${prefix}/etc/ssh/ssh_host_rsa_key ]; then
if ssh-keygen -t rsa -N "" -f ${prefix}/etc/ssh/ssh_host_rsa_key -C "root@${hostname}"; then
logMessage "successfully generetaged Host RSA"
else
logMessage "failed to generate Host RSA Key"
fi
fi
#
# Third, Generate the Host DSA Key
#
if [ ! -f ${prefix}/etc/ssh/ssh_host_dsa_key ]; then
if ssh-keygen -t dsa -N "" -f ${prefix}/etc/ssh/ssh_host_dsa_key -C "root@${hostname}"; then
logMessage "successfully generetaged Host DSA"
else
logMessage "failed to generate Host DSA Key"
fi
fi
#
# Install ssh
#
installDebianPackage ${prefix} openssh-server
#
# Log our finish
#
logMessage Script $0 finished

1
hooks/dapper/70-install-ssh Symbolic link
View File

@@ -0,0 +1 @@
../common/70-install-ssh-deb

View File

@@ -1,120 +0,0 @@
#!/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/
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
#
# 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 > ${prefix}/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" >> ${prefix}/etc/fstab
else
echo "/dev/${device}${part} ${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
if [ $has_btrfs -eq 1 ]; then
installDebianPackage ${prefix} btrfs-tools
fi
#
# Log our finish
#
logMessage Script $0 finished

1
hooks/dapper/90-make-fstab Symbolic link
View File

@@ -0,0 +1 @@
../common/90-make-fstab-deb

View File

@@ -1,170 +0,0 @@
#!/bin/sh
#
# This script sets up the /etc/network/interface file for the new
# image.
#
# 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 have an /etc/network directory.
#
mkdir -p ${prefix}/etc/network
#
# A function to setup DHCP for our new image.
#
setupDynamicNetworking ()
{
#
# The host is using DHCP.
#
cat <<E_O_DHCP > ${prefix}/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
# post-up ethtool -K eth0 tx off
#
# The commented out line above will disable TCP checksumming which
# might resolve problems for some users. It is disabled by default
#
E_O_DHCP
}
#
# A function to setup static IP addresses for our new image.
#
setupStaticNetworking ()
{
#
# if $p2p is set then add a "pointopoint" setting.
#
point='';
if [ ! -z "${p2p}" ]; then
point="pointopoint ${p2p}"
else
point=''
fi
#
# broadcast address?
#
bcast='';
if [ ! -z "${broadcast}" ]; then
bcast=" broadcast ${broadcast}"
fi
#
# We have a static IP address
#
cat <<E_O_STATIC >${prefix}/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address ${ip1}
gateway ${gateway}
netmask ${netmask}
${bcast}
${point}
# post-up ethtool -K eth0 tx off
#
# The commented out line above will disable TCP checksumming which
# might resolve problems for some users. It is disabled by default
#
E_O_STATIC
interface=1
count=2
while [ "${count}" -le "${ip_count}" ]; do
value=\$ip${count}
value=`eval echo $value`
logMessage Adding etho:${interface}
cat <<E_O_STATIC >>${prefix}/etc/network/interfaces
auto eth0:${interface}
iface eth0:${interface} inet static
address ${value}
netmask ${netmask}
# post-up ethtool -K eth0 tx off
E_O_STATIC
count=`expr $count + 1`
interface=`expr $interface + 1`
done
#
# Hooks are run chrooted, hence the resolv.conf is moved
# temporarily to /etc/resolv.conf.old. Use that file, it
# will be restored after hooks are run.
#
if [ '' != "$nameserver" ]; then
rm -f ${prefix}/etc/resolv.conf.old
for ns in $nameserver; do
echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old
done
else
cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old
fi
}
#
# Call the relevant function
#
if [ -z "${dhcp}" ]; then
logMessage "Setting up static networking"
setupStaticNetworking
else
logMessage "Setting up DHCP networking"
setupDynamicNetworking
fi
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1 @@
../common/40-setup-networking-deb

View File

@@ -1,67 +0,0 @@
#!/bin/sh
#
# This script installs OpenSSH Server on the newly created guest.
#
# It does this by generating the keys within the host, since guests
# do not have the necessary /dev/random and /dev/urandom to generate
# their own keys before boot.
#
# Dmitry Nedospasov
# --
# http://nedos.net/
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
#
# Since our guests doesn't have an RNG, generate the keys from the host
#
# First, create an ssh directory
#
mkdir -p ${prefix}/etc/ssh
#
# Second, Generate the Host RSA Key
#
if [ ! -f ${prefix}/etc/ssh/ssh_host_rsa_key ]; then
if ssh-keygen -t rsa -N "" -f ${prefix}/etc/ssh/ssh_host_rsa_key -C "root@${hostname}"; then
logMessage "successfully generetaged Host RSA"
else
logMessage "failed to generate Host RSA Key"
fi
fi
#
# Third, Generate the Host DSA Key
#
if [ ! -f ${prefix}/etc/ssh/ssh_host_dsa_key ]; then
if ssh-keygen -t dsa -N "" -f ${prefix}/etc/ssh/ssh_host_dsa_key -C "root@${hostname}"; then
logMessage "successfully generetaged Host DSA"
else
logMessage "failed to generate Host DSA Key"
fi
fi
#
# Install ssh
#
installDebianPackage ${prefix} openssh-server
#
# Log our finish
#
logMessage Script $0 finished

1
hooks/debian/70-install-ssh Symbolic link
View File

@@ -0,0 +1 @@
../common/70-install-ssh-deb

View File

@@ -1,86 +0,0 @@
#!/bin/sh
#
# Install modules from the host system into the new image, and
# ensure that 'module-init-tools' is setup.
#
# This is most likely required if you're using a custom kernel
# for your Xen system. But even if it isn't required it can't
# really do anything bad; just waste a bit of space.
#
# 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
if [ ${pygrub} ]; then
logMessage "pygrub set, skipping module install"
else
#
# The name of the package containing the correct modules.
#
linux_modules_package="linux-modules-$(uname -r)"
#
# Attempt to install that package. This will either work on an Etch
# system, or fail on a Sarge/custom kernel.
#
if [ -n "${modules}" -a -d "${modules}" ]; then
#
# Modules path was specified during install
#
logMessage "Copying modules from ${modules}"
mkdir -p ${prefix}/lib/modules
cp -au ${modules} ${prefix}/lib/modules
elif chroot ${prefix} /usr/bin/apt-cache show ${linux_modules_package} >/dev/null 2>/dev/null; then
logMessage "Package '${linux_modules_package}' is available - installing"
#
# If it worked then we can install the package.
#
installDebianPackage ${prefix} ${linux_modules_package}
else
#
# Fall back to copying over modules from the host to the new
# system.
#
logMessage "Package '${linux_modules_package}' is not available"
logMessage "Copying modules from /lib/modules/$(uname -r)"
mkdir -p ${prefix}/lib/modules
cp -au /lib/modules/$(uname -r) ${prefix}/lib/modules
fi
#
# Install the module-init-tools package.
#
installDebianPackage ${prefix} module-init-tools
fi # if pygrub
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1 @@
../common/80-install-modules-deb

View File

@@ -1,170 +0,0 @@
#!/bin/sh
#
# This script sets up the /etc/network/interface file for the new
# image.
#
# 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 have an /etc/network directory.
#
mkdir -p ${prefix}/etc/network
#
# A function to setup DHCP for our new image.
#
setupDynamicNetworking ()
{
#
# The host is using DHCP.
#
cat <<E_O_DHCP > ${prefix}/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
# post-up ethtool -K eth0 tx off
#
# The commented out line above will disable TCP checksumming which
# might resolve problems for some users. It is disabled by default
#
E_O_DHCP
}
#
# A function to setup static IP addresses for our new image.
#
setupStaticNetworking ()
{
#
# if $p2p is set then add a "pointopoint" setting.
#
point='';
if [ ! -z "${p2p}" ]; then
point="pointopoint ${p2p}"
else
point=''
fi
#
# broadcast address?
#
bcast='';
if [ ! -z "${broadcast}" ]; then
bcast=" broadcast ${broadcast}"
fi
#
# We have a static IP address
#
cat <<E_O_STATIC >${prefix}/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address ${ip1}
gateway ${gateway}
netmask ${netmask}
${bcast}
${point}
# post-up ethtool -K eth0 tx off
#
# The commented out line above will disable TCP checksumming which
# might resolve problems for some users. It is disabled by default
#
E_O_STATIC
interface=1
count=2
while [ "${count}" -le "${ip_count}" ]; do
value=\$ip${count}
value=`eval echo $value`
logMessage Adding etho:${interface}
cat <<E_O_STATIC >>${prefix}/etc/network/interfaces
auto eth0:${interface}
iface eth0:${interface} inet static
address ${value}
netmask ${netmask}
# post-up ethtool -K eth0 tx off
E_O_STATIC
count=`expr $count + 1`
interface=`expr $interface + 1`
done
#
# Hooks are run chrooted, hence the resolv.conf is moved
# temporarily to /etc/resolv.conf.old. Use that file, it
# will be restored after hooks are run.
#
if [ '' != "$nameserver" ]; then
rm -f ${prefix}/etc/resolv.conf.old
for ns in $nameserver; do
echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old
done
else
cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old
fi
}
#
# Call the relevant function
#
if [ -z "${dhcp}" ]; then
logMessage "Setting up static networking"
setupStaticNetworking
else
logMessage "Setting up DHCP networking"
setupDynamicNetworking
fi
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1 @@
../common/40-setup-networking-deb

View File

@@ -1,67 +0,0 @@
#!/bin/sh
#
# This script installs OpenSSH Server on the newly created guest.
#
# It does this by generating the keys within the host, since guests
# do not have the necessary /dev/random and /dev/urandom to generate
# their own keys before boot.
#
# Dmitry Nedospasov
# --
# http://nedos.net/
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
#
# Since our guests doesn't have an RNG, generate the keys from the host
#
# First, create an ssh directory
#
mkdir -p ${prefix}/etc/ssh
#
# Second, Generate the Host RSA Key
#
if [ ! -f ${prefix}/etc/ssh/ssh_host_rsa_key ]; then
if ssh-keygen -t rsa -N "" -f ${prefix}/etc/ssh/ssh_host_rsa_key -C "root@${hostname}"; then
logMessage "successfully generetaged Host RSA"
else
logMessage "failed to generate Host RSA Key"
fi
fi
#
# Third, Generate the Host DSA Key
#
if [ ! -f ${prefix}/etc/ssh/ssh_host_dsa_key ]; then
if ssh-keygen -t dsa -N "" -f ${prefix}/etc/ssh/ssh_host_dsa_key -C "root@${hostname}"; then
logMessage "successfully generetaged Host DSA"
else
logMessage "failed to generate Host DSA Key"
fi
fi
#
# Install ssh
#
installDebianPackage ${prefix} openssh-server
#
# Log our finish
#
logMessage Script $0 finished

1
hooks/edgy/70-install-ssh Symbolic link
View File

@@ -0,0 +1 @@
../common/70-install-ssh-deb

View File

@@ -1,86 +0,0 @@
#!/bin/sh
#
# Install modules from the host system into the new image, and
# ensure that 'module-init-tools' is setup.
#
# This is most likely required if you're using a custom kernel
# for your Xen system. But even if it isn't required it can't
# really do anything bad; just waste a bit of space.
#
# 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
if [ ${pygrub} ]; then
logMessage "pygrub set, skipping module install"
else
#
# The name of the package containing the correct modules.
#
linux_modules_package="linux-modules-$(uname -r)"
#
# Attempt to install that package. This will either work on an Etch
# system, or fail on a Sarge/custom kernel.
#
if [ -n "${modules}" -a -d "${modules}" ]; then
#
# Modules path was specified during install
#
logMessage "Copying modules from ${modules}"
mkdir -p ${prefix}/lib/modules
cp -au ${modules} ${prefix}/lib/modules
elif chroot ${prefix} /usr/bin/apt-cache show ${linux_modules_package} >/dev/null 2>/dev/null; then
logMessage "Package '${linux_modules_package}' is available - installing"
#
# If it worked then we can install the package.
#
installDebianPackage ${prefix} ${linux_modules_package}
else
#
# Fall back to copying over modules from the host to the new
# system.
#
logMessage "Package '${linux_modules_package}' is not available"
logMessage "Copying modules from /lib/modules/$(uname -r)"
mkdir -p ${prefix}/lib/modules
cp -au /lib/modules/$(uname -r) ${prefix}/lib/modules
fi
#
# Install the module-init-tools package.
#
installDebianPackage ${prefix} module-init-tools
fi # if pygrub
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1 @@
../common/80-install-modules-deb

View File

@@ -1,120 +0,0 @@
#!/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/
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
#
# 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 > ${prefix}/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" >> ${prefix}/etc/fstab
else
echo "/dev/${device}${part} ${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
if [ $has_btrfs -eq 1 ]; then
installDebianPackage ${prefix} btrfs-tools
fi
#
# Log our finish
#
logMessage Script $0 finished

1
hooks/edgy/90-make-fstab Symbolic link
View File

@@ -0,0 +1 @@
../common/90-make-fstab-deb

View File

@@ -1,112 +0,0 @@
#!/bin/sh
#
# This script sets up the networking files for the new image.
#
# 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 have an /etc/sysconfig/network-scripts directory.
#
mkdir -p ${prefix}/etc/sysconfig/network-scripts/
#
# Test for static vs. DHCP
#
if [ -z "${dhcp}" ]; then
#
# Setup the initial interface
#
cat <<E_O_STATIC >${prefix}/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=${ip1}
NETMASK=${netmask}
GATEWAY=${gateway}
E_O_STATIC
#
# Now setup any other ones.
#
interface=1
count=2
while [ "${count}" -le "${ip_count}" ]; do
value=\$ip${count}
value=`eval echo $value`
logMessage Adding etho:${interface}
cat <<E_O_STATIC >${prefix}/etc/sysconfig/network-scripts/ifcfg-eth0:${interface}
DEVICE=eth0:${interface}
ONBOOT=yes
BOOTPROTO=static
IPADDR=${value}
NETMASK=${netmask}
E_O_STATIC
count=`expr $count + 1`
interface=`expr $interface + 1`
done
#
# Hooks are run chrooted, hence the resolv.conf is moved
# temporarily to /etc/resolv.conf.old. Use that file, it
# will be restored after hooks are run.
#
if [ '' != "$nameserver" ]; then
rm -f ${prefix}/etc/resolv.conf.old
for ns in $nameserver; do
echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old
done
else
cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old
fi
else
cat <<E_O_DHCP >${prefix}/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
E_O_DHCP
chroot ${prefix} /usr/bin/yum -y install dhclient
fi
#
# Don't forget to setup the default route.
#
cat <<EOF >${prefix}/etc/sysconfig/network
NETWORKING=yes
GATEWAY=${gateway}
HOSTNAME=${hostname}
EOF
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1 @@
../common/40-setup-networking-rpm

View File

@@ -1,41 +0,0 @@
#!/bin/sh
#
# Install modules from the host system into the new image.
#
# 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
#
# Copy the modules from the host to the new system - we should only
# really copy the *correct* modules, but we don't know what they are.
#
mkdir -p ${prefix}/lib/modules
cp -au /lib/modules/*/ ${prefix}/lib/modules
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1 @@
../common/80-install-modules-rpm

View File

@@ -1,123 +0,0 @@
#!/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/
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
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 > ${prefix}/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" >> ${prefix}/etc/fstab
else
echo "/dev/${device}${part} ${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
#if [ $has_btrfs -eq 1 ]; then
# installDebianPackage ${prefix} btrfs-tools
#fi
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1 @@
../common/90-make-fstab-rpm

View File

@@ -1,170 +0,0 @@
#!/bin/sh
#
# This script sets up the /etc/network/interface file for the new
# image.
#
# 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 have an /etc/network directory.
#
mkdir -p ${prefix}/etc/network
#
# A function to setup DHCP for our new image.
#
setupDynamicNetworking ()
{
#
# The host is using DHCP.
#
cat <<E_O_DHCP > ${prefix}/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
# post-up ethtool -K eth0 tx off
#
# The commented out line above will disable TCP checksumming which
# might resolve problems for some users. It is disabled by default
#
E_O_DHCP
}
#
# A function to setup static IP addresses for our new image.
#
setupStaticNetworking ()
{
#
# if $p2p is set then add a "pointopoint" setting.
#
point='';
if [ ! -z "${p2p}" ]; then
point="pointopoint ${p2p}"
else
point=''
fi
#
# broadcast address?
#
bcast='';
if [ ! -z "${broadcast}" ]; then
bcast=" broadcast ${broadcast}"
fi
#
# We have a static IP address
#
cat <<E_O_STATIC >${prefix}/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address ${ip1}
gateway ${gateway}
netmask ${netmask}
${bcast}
${point}
# post-up ethtool -K eth0 tx off
#
# The commented out line above will disable TCP checksumming which
# might resolve problems for some users. It is disabled by default
#
E_O_STATIC
interface=1
count=2
while [ "${count}" -le "${ip_count}" ]; do
value=\$ip${count}
value=`eval echo $value`
logMessage Adding etho:${interface}
cat <<E_O_STATIC >>${prefix}/etc/network/interfaces
auto eth0:${interface}
iface eth0:${interface} inet static
address ${value}
netmask ${netmask}
# post-up ethtool -K eth0 tx off
E_O_STATIC
count=`expr $count + 1`
interface=`expr $interface + 1`
done
#
# Hooks are run chrooted, hence the resolv.conf is moved
# temporarily to /etc/resolv.conf.old. Use that file, it
# will be restored after hooks are run.
#
if [ '' != "$nameserver" ]; then
rm -f ${prefix}/etc/resolv.conf.old
for ns in $nameserver; do
echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old
done
else
cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old
fi
}
#
# Call the relevant function
#
if [ -z "${dhcp}" ]; then
logMessage "Setting up static networking"
setupStaticNetworking
else
logMessage "Setting up DHCP networking"
setupDynamicNetworking
fi
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1 @@
../common/40-setup-networking-deb

View File

@@ -1,67 +0,0 @@
#!/bin/sh
#
# This script installs OpenSSH Server on the newly created guest.
#
# It does this by generating the keys within the host, since guests
# do not have the necessary /dev/random and /dev/urandom to generate
# their own keys before boot.
#
# Dmitry Nedospasov
# --
# http://nedos.net/
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
#
# Since our guests doesn't have an RNG, generate the keys from the host
#
# First, create an ssh directory
#
mkdir -p ${prefix}/etc/ssh
#
# Second, Generate the Host RSA Key
#
if [ ! -f ${prefix}/etc/ssh/ssh_host_rsa_key ]; then
if ssh-keygen -t rsa -N "" -f ${prefix}/etc/ssh/ssh_host_rsa_key -C "root@${hostname}"; then
logMessage "successfully generetaged Host RSA"
else
logMessage "failed to generate Host RSA Key"
fi
fi
#
# Third, Generate the Host DSA Key
#
if [ ! -f ${prefix}/etc/ssh/ssh_host_dsa_key ]; then
if ssh-keygen -t dsa -N "" -f ${prefix}/etc/ssh/ssh_host_dsa_key -C "root@${hostname}"; then
logMessage "successfully generetaged Host DSA"
else
logMessage "failed to generate Host DSA Key"
fi
fi
#
# Install ssh
#
installDebianPackage ${prefix} openssh-server
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1 @@
../common/70-install-ssh-deb

View File

@@ -1,86 +0,0 @@
#!/bin/sh
#
# Install modules from the host system into the new image, and
# ensure that 'module-init-tools' is setup.
#
# This is most likely required if you're using a custom kernel
# for your Xen system. But even if it isn't required it can't
# really do anything bad; just waste a bit of space.
#
# 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
if [ ${pygrub} ]; then
logMessage "pygrub set, skipping module install"
else
#
# The name of the package containing the correct modules.
#
linux_modules_package="linux-modules-$(uname -r)"
#
# Attempt to install that package. This will either work on an Etch
# system, or fail on a Sarge/custom kernel.
#
if [ -n "${modules}" -a -d "${modules}" ]; then
#
# Modules path was specified during install
#
logMessage "Copying modules from ${modules}"
mkdir -p ${prefix}/lib/modules
cp -au ${modules} ${prefix}/lib/modules
elif chroot ${prefix} /usr/bin/apt-cache show ${linux_modules_package} >/dev/null 2>/dev/null; then
logMessage "Package '${linux_modules_package}' is available - installing"
#
# If it worked then we can install the package.
#
installDebianPackage ${prefix} ${linux_modules_package}
else
#
# Fall back to copying over modules from the host to the new
# system.
#
logMessage "Package '${linux_modules_package}' is not available"
logMessage "Copying modules from /lib/modules/$(uname -r)"
mkdir -p ${prefix}/lib/modules
cp -au /lib/modules/$(uname -r) ${prefix}/lib/modules
fi
#
# Install the module-init-tools package.
#
installDebianPackage ${prefix} module-init-tools
fi # if pygrub
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1 @@
../common/80-install-modules-deb

View File

@@ -1,120 +0,0 @@
#!/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/
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
#
# 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 > ${prefix}/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" >> ${prefix}/etc/fstab
else
echo "/dev/${device}${part} ${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
if [ $has_btrfs -eq 1 ]; then
installDebianPackage ${prefix} btrfs-tools
fi
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1 @@
../common/90-make-fstab-deb

View File

@@ -1,170 +0,0 @@
#!/bin/sh
#
# This script sets up the /etc/network/interface file for the new
# image.
#
# 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 have an /etc/network directory.
#
mkdir -p ${prefix}/etc/network
#
# A function to setup DHCP for our new image.
#
setupDynamicNetworking ()
{
#
# The host is using DHCP.
#
cat <<E_O_DHCP > ${prefix}/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
# post-up ethtool -K eth0 tx off
#
# The commented out line above will disable TCP checksumming which
# might resolve problems for some users. It is disabled by default
#
E_O_DHCP
}
#
# A function to setup static IP addresses for our new image.
#
setupStaticNetworking ()
{
#
# if $p2p is set then add a "pointopoint" setting.
#
point='';
if [ ! -z "${p2p}" ]; then
point="pointopoint ${p2p}"
else
point=''
fi
#
# broadcast address?
#
bcast='';
if [ ! -z "${broadcast}" ]; then
bcast=" broadcast ${broadcast}"
fi
#
# We have a static IP address
#
cat <<E_O_STATIC >${prefix}/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address ${ip1}
gateway ${gateway}
netmask ${netmask}
${bcast}
${point}
# post-up ethtool -K eth0 tx off
#
# The commented out line above will disable TCP checksumming which
# might resolve problems for some users. It is disabled by default
#
E_O_STATIC
interface=1
count=2
while [ "${count}" -le "${ip_count}" ]; do
value=\$ip${count}
value=`eval echo $value`
logMessage Adding etho:${interface}
cat <<E_O_STATIC >>${prefix}/etc/network/interfaces
auto eth0:${interface}
iface eth0:${interface} inet static
address ${value}
netmask ${netmask}
# post-up ethtool -K eth0 tx off
E_O_STATIC
count=`expr $count + 1`
interface=`expr $interface + 1`
done
#
# Hooks are run chrooted, hence the resolv.conf is moved
# temporarily to /etc/resolv.conf.old. Use that file, it
# will be restored after hooks are run.
#
if [ '' != "$nameserver" ]; then
rm -f ${prefix}/etc/resolv.conf.old
for ns in $nameserver; do
echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old
done
else
cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old
fi
}
#
# Call the relevant function
#
if [ -z "${dhcp}" ]; then
logMessage "Setting up static networking"
setupStaticNetworking
else
logMessage "Setting up DHCP networking"
setupDynamicNetworking
fi
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1 @@
../common/40-setup-networking-deb

View File

@@ -1,67 +0,0 @@
#!/bin/sh
#
# This script installs OpenSSH Server on the newly created guest.
#
# It does this by generating the keys within the host, since guests
# do not have the necessary /dev/random and /dev/urandom to generate
# their own keys before boot.
#
# Dmitry Nedospasov
# --
# http://nedos.net/
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
#
# Since our guests doesn't have an RNG, generate the keys from the host
#
# First, create an ssh directory
#
mkdir -p ${prefix}/etc/ssh
#
# Second, Generate the Host RSA Key
#
if [ ! -f ${prefix}/etc/ssh/ssh_host_rsa_key ]; then
if ssh-keygen -t rsa -N "" -f ${prefix}/etc/ssh/ssh_host_rsa_key -C "root@${hostname}"; then
logMessage "successfully generetaged Host RSA"
else
logMessage "failed to generate Host RSA Key"
fi
fi
#
# Third, Generate the Host DSA Key
#
if [ ! -f ${prefix}/etc/ssh/ssh_host_dsa_key ]; then
if ssh-keygen -t dsa -N "" -f ${prefix}/etc/ssh/ssh_host_dsa_key -C "root@${hostname}"; then
logMessage "successfully generetaged Host DSA"
else
logMessage "failed to generate Host DSA Key"
fi
fi
#
# Install ssh
#
installDebianPackage ${prefix} openssh-server
#
# Log our finish
#
logMessage Script $0 finished

1
hooks/karmic/70-install-ssh Symbolic link
View File

@@ -0,0 +1 @@
../common/70-install-ssh-deb

View File

@@ -1,86 +0,0 @@
#!/bin/sh
#
# Install modules from the host system into the new image, and
# ensure that 'module-init-tools' is setup.
#
# This is most likely required if you're using a custom kernel
# for your Xen system. But even if it isn't required it can't
# really do anything bad; just waste a bit of space.
#
# 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
if [ ${pygrub} ]; then
logMessage "pygrub set, skipping module install"
else
#
# The name of the package containing the correct modules.
#
linux_modules_package="linux-modules-$(uname -r)"
#
# Attempt to install that package. This will either work on an Etch
# system, or fail on a Sarge/custom kernel.
#
if [ -n "${modules}" -a -d "${modules}" ]; then
#
# Modules path was specified during install
#
logMessage "Copying modules from ${modules}"
mkdir -p ${prefix}/lib/modules
cp -au ${modules} ${prefix}/lib/modules
elif chroot ${prefix} /usr/bin/apt-cache show ${linux_modules_package} >/dev/null 2>/dev/null; then
logMessage "Package '${linux_modules_package}' is available - installing"
#
# If it worked then we can install the package.
#
installDebianPackage ${prefix} ${linux_modules_package}
else
#
# Fall back to copying over modules from the host to the new
# system.
#
logMessage "Package '${linux_modules_package}' is not available"
logMessage "Copying modules from /lib/modules/$(uname -r)"
mkdir -p ${prefix}/lib/modules
cp -au /lib/modules/$(uname -r) ${prefix}/lib/modules
fi
#
# Install the module-init-tools package.
#
installDebianPackage ${prefix} module-init-tools
fi # if pygrub
#
# Log our finish
#
logMessage Script $0 finished

View File

@@ -0,0 +1 @@
../common/80-install-modules-deb

View File

@@ -1,120 +0,0 @@
#!/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/
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
#
# 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 > ${prefix}/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" >> ${prefix}/etc/fstab
else
echo "/dev/${device}${part} ${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
if [ $has_btrfs -eq 1 ]; then
installDebianPackage ${prefix} btrfs-tools
fi
#
# Log our finish
#
logMessage Script $0 finished

1
hooks/karmic/90-make-fstab Symbolic link
View File

@@ -0,0 +1 @@
../common/90-make-fstab-deb