1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/uml-make-image Mon Jul 11 02:16:57 2011 +0200
1.3 @@ -0,0 +1,100 @@
1.4 +#!/bin/sh
1.5 +
1.6 +# Configuration:
1.7 +if [ -e userinstall-defaults-uml ]; then
1.8 + . "$PWD/userinstall-defaults-uml"
1.9 +elif [ -e /etc/default/userinstall-uml ]; then
1.10 + . /etc/default/userinstall-uml
1.11 +else
1.12 + echo "No defaults found for userinstall (UML)." 1>&2
1.13 + exit 1
1.14 +fi
1.15 +
1.16 +if [ ! "$1" ]; then
1.17 + echo "Need a root image size in GB." 1>&2
1.18 + exit 1
1.19 +fi
1.20 +
1.21 +if [ ! "$2" ]; then
1.22 + echo "Need a swap image size in MB." 1>&2
1.23 + exit 1
1.24 +fi
1.25 +
1.26 +IMAGESIZE=$1
1.27 +SWAPSIZE=$2
1.28 +THISDIR=`dirname "$0"`
1.29 +
1.30 +if [ ! -e "$PACKAGEROOT" ]; then
1.31 + echo "A package root must first be made using user-setup." 1>&2
1.32 + exit 1
1.33 +fi
1.34 +
1.35 +if [ ! "$IMAGEDIR" ]; then
1.36 + echo "An image directory must be defined." 1>&2
1.37 + exit 1
1.38 +fi
1.39 +
1.40 +echo "Making the filesystem with size ${IMAGESIZE}GB..."
1.41 +dd if=/dev/zero of=$IMAGE bs=1024 count=1 seek=$(($IMAGESIZE*1024*1024-1024))
1.42 +mkfs.ext3 $IMAGE
1.43 +
1.44 +echo "Making the swap file with size ${SWAPSIZE}MB..."
1.45 +dd if=/dev/zero of=$SWAPIMAGE bs=1M count=$SWAPSIZE
1.46 +
1.47 +echo "Accessing the image..." 1>&2
1.48 +if [ ! -e "$IMAGEDIR" ]; then
1.49 + mkdir "$IMAGEDIR"
1.50 +fi
1.51 +sudo mount -o loop "$IMAGE" "$IMAGEDIR"
1.52 +
1.53 +echo "Installing the package root..." 1>&2
1.54 +cp -a "$PACKAGEROOT/"* "$IMAGEDIR"/
1.55 +
1.56 +echo "Removing any linked /dev entry..." 1>&2
1.57 +if [ -h "$IMAGEDIR/dev" ]; then
1.58 + rm "$IMAGEDIR/dev"
1.59 +fi
1.60 +
1.61 +if [ ! -e "$IMAGEDIR/dev" ]; then
1.62 + mkdir "$IMAGEDIR/dev"
1.63 +fi
1.64 +
1.65 +cp "/dev/MAKEDEV" "$IMAGEDIR/dev"
1.66 +
1.67 +echo "Removing any linked /proc entry..." 1>&2
1.68 +if [ -h "$IMAGEDIR/proc" ]; then
1.69 + rm "$IMAGEDIR/proc"
1.70 +fi
1.71 +
1.72 +if [ ! -e "$IMAGEDIR/proc" ]; then
1.73 + mkdir "$IMAGEDIR/proc"
1.74 +fi
1.75 +
1.76 +echo "Using a special fstab..." 1>&2
1.77 +if [ -e "$IMAGEDIR/etc/fstab" ]; then
1.78 + if [ ! -e "$IMAGEDIR/etc/fstab.orig" ]; then
1.79 + mv "$IMAGEDIR/etc/fstab" "$IMAGEDIR/etc/fstab.orig"
1.80 + fi
1.81 +fi
1.82 +cp "$THISDIR/UML/fstab" "$IMAGEDIR/etc/fstab"
1.83 +
1.84 +# Tweak the inittab to only use tty0 and add it to securetty.
1.85 +echo "Reconfiguring the console settings..." 1>&2
1.86 +if [ ! -e "$IMAGEDIR/etc/inittab.orig" ]; then
1.87 + if [ -e "$IMAGEDIR/etc/inittab" ]; then
1.88 + cp "$IMAGEDIR/etc/inittab" "$IMAGEDIR/etc/inittab.orig"
1.89 + grep -v "getty" "$IMAGEDIR/etc/inittab.orig" > "$IMAGEDIR/etc/inittab"
1.90 + fi
1.91 + echo "# We launch just one console for UML:" >> "$IMAGEDIR/etc/inittab"
1.92 + echo "c0:1235:respawn:/sbin/getty 38400 tty0 linux" >> "$IMAGEDIR/etc/inittab"
1.93 +
1.94 + echo "# UML modification: use tty0 or vc/0" >> "$IMAGEDIR/etc/securetty"
1.95 + echo "tty0" >> "$IMAGEDIR/etc/securetty"
1.96 + echo "vc/0" >> "$IMAGEDIR/etc/securetty"
1.97 +fi
1.98 +
1.99 +sudo "$THISDIR/uml-make-devices" "$IMAGEDIR"
1.100 +
1.101 +echo "Unmounting the image..." 1>&2
1.102 +sudo umount "$IMAGEDIR"
1.103 +rmdir "$IMAGEDIR"