Works with etch, almost works with Hardy but has network trouble.
svn path=/trunk/packages/sipb-xen-guest-installer/; revision=641
Build-Depends: cdbs (>= 0.4.23-1.1), debhelper (>= 4.1.0)
Standards-Version: 3.7.2
-Package: sipb-xen-remctl-auto
+Package: sipb-xen-guest-installer-domU
Architecture: all
-Depends: ${misc:Depends}, remctl-server
+Depends: ${misc:Depends}, patch, xen-tools, kpartx
Description: Installs the SIPB Xen automatic remctl management system
This is our automatic remctl configuration management system.
--- /dev/null
+#!/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
--- /dev/null
+#!/bin/sh
+#
+# This script sets up the ParaVM to use pygrub
+#
+
+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
+
+echo SCRIPT = $0
+dir=`dirname "$0"`
+
+
+logMessage Script $0 starting
+
+# To avoid UDP checksum problems.
+
+installDebianPackage ${prefix} ethtool
+
+#
+# Install the xen kernel. linux-image-xen is in ubuntu,
+# linux-image-xen-amd64 in debian.
+installDebianPackage ${prefix} linux-image-xen
+installDebianPackage ${prefix} linux-image-xen-amd64
+
+installDebianPackage ${prefix} grub
+
+#
+# Make the /boot/grub directory
+#
+mkdir -p ${prefix}/boot/grub
+
+#
+# Create stock menu.lst
+#
+chroot ${prefix} /usr/sbin/update-grub -y
+
+#
+# Patches to add xen kernels, use serial console, etc.
+#
+for patch in $dir/patches/*; do
+ patch -l -d ${prefix} -p1 < $patch
+done
+
+#
+# Regenerate automagic kernels list
+#
+chroot ${prefix} /usr/sbin/update-grub -y
+
+#
+# Log our finish
+#
+logMessage Script $0 finished
+
--- /dev/null
+../../patches/common.diff
\ No newline at end of file
--- /dev/null
+../../patches/inittab.diff
\ No newline at end of file
--- /dev/null
+#!/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
--- /dev/null
+../debian.d/97-setup-grub
\ No newline at end of file
--- /dev/null
+../../patches/common.diff
\ No newline at end of file
--- /dev/null
+../../patches/event.d.diff
\ No newline at end of file
--- /dev/null
+--- /usr/sbin/update-grub.orig 2008-05-03 23:30:37.000000000 -0400
++++ /usr/sbin/update-grub 2008-05-03 23:30:55.000000000 -0400
+@@ -911,13 +911,6 @@
+ is_xen=
+ fi
+
+- if [ ! "$in_domU" ] && [ "$is_xen" ]; then
+- # skip xen kernels
+- continue
+- elif [ "$in_domU" ] && ! [ "$is_xen" ]; then
+- # skip non-xen kernels
+- continue
+- fi
+ kern="/boot/$kern"
+ newerKernels=""
+ for i in $sortedKernels ; do
+--- /boot/grub/menu.lst.orig 2008-05-04 03:17:31.000000000 -0400
++++ /boot/grub/menu.lst 2008-05-04 03:19:09.000000000 -0400
+@@ -59,7 +59,7 @@
+ ## e.g. kopt=root=/dev/hda1 ro
+ ## kopt_2_6_8=root=/dev/hdc1 ro
+ ## kopt_2_6_8_2_686=root=/dev/hdc2 ro
+-# kopt=root=/dev/hda1 ro
++# kopt=root=/dev/hda1 ro console=ttyS0,9600,8n1
+
+ ## default grub root device
+ ## e.g. groot=(hd0,0)
+--- /etc/network/interfaces~ 2008-06-22 06:47:55.000000000 -0400
++++ /etc/network/interfaces 2008-06-22 06:49:21.000000000 -0400
+@@ -8,7 +8,7 @@
+ # The primary network interface
+ auto eth0
+ iface eth0 inet dhcp
+-# post-up ethtool -K eth0 tx off
++ pre-up ethtool -K eth0 tx off
+
+ #
+ # The commented out line above will disable TCP checksumming which
--- /dev/null
+--- /etc/event.d/ttyS0.orig 2008-06-22 01:57:29.000000000 -0400
++++ /etc/event.d/ttyS0 2008-06-22 03:12:01.000000000 -0400
+@@ -0,0 +1,11 @@
++start on runlevel 2
++start on runlevel 3
++start on runlevel 4
++start on runlevel 5
++
++stop on runlevel 0
++stop on runlevel 1
++stop on runlevel 6
++
++respawn
++exec /sbin/getty 115300 ttyS0
--- /dev/null
+--- /etc/inittab.orig 2008-05-04 02:48:09.000000000 -0400
++++ /etc/inittab 2008-05-04 02:52:09.000000000 -0400
+@@ -60,7 +60,7 @@
+
+ # Example how to put a getty on a serial line (for a terminal)
+ #
+-#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
++T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
+ #T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100
+
+ # Example how to put a getty on a modem line.
--- /dev/null
+#!/bin/bash
+
+TARGET=/dev/hda
+
+#For some strange reason, . $TARGET doesn't work reliably.
+eval `grep -a -m1 -B 100 ^return$ $TARGET | grep -v return`
+
+
+#HOSTNAME=foobar
+#DIST=etch
+#MIRROR=http://debian.lcs.mit.edu/debian
+#IMAGESIZE=3800
+
+ARCH=amd64
+
+#LVSIZE=`lvs --noheadings --units M --nosuffix -o Size /dev/xenvg/d_foobar_hda | sed 's/\..*//'`
+
+# If this script is interrupted, it may not clean up after itself.
+# In particular, it may leave ${VOLUME}1 mounted somewhere in tmp.
+# Unmount it, then kpartx -d $VOLUME to clean up.
+
+###
+### Create the device for SIPB-Xen purposes
+###
+echo ,${IMAGESIZE}$',L,*\n,,S\n;\n;' | sfdisk -uM -H 255 -S 63 $TARGET
+#kpartx -a $TARGET
+
+xen-create-image --image-dev ${TARGET}1 --swap-dev ${TARGET}2 --fs ext3 --ide --arch $ARCH --dist $DIST --hostname $HOSTNAME --mirror $MIRROR --dhcp --cache=yes
+
+#kpartx -d $TARGET