1 #!/bin/sh 2 3 # Configuration: 4 if [ -e userinstall-defaults-uml ]; then 5 . "$PWD/userinstall-defaults-uml" 6 elif [ -e /etc/default/userinstall-uml ]; then 7 . /etc/default/userinstall-uml 8 else 9 echo "No defaults found for userinstall (UML)." 1>&2 10 exit 1 11 fi 12 13 if [ ! "$1" ]; then 14 echo "Need a root image size in GB." 1>&2 15 exit 1 16 fi 17 18 if [ ! "$2" ]; then 19 echo "Need a swap image size in MB." 1>&2 20 exit 1 21 fi 22 23 IMAGESIZE=$1 24 SWAPSIZE=$2 25 THISDIR=`dirname "$0"` 26 27 if [ ! -e "$PACKAGEROOT" ]; then 28 echo "A package root must first be made using user-setup." 1>&2 29 exit 1 30 fi 31 32 if [ ! "$IMAGEDIR" ]; then 33 echo "An image directory must be defined." 1>&2 34 exit 1 35 fi 36 37 echo "Making the filesystem with size ${IMAGESIZE}GB..." 38 dd if=/dev/zero of=$IMAGE bs=1024 count=1 seek=$(($IMAGESIZE*1024*1024-1024)) 39 mkfs.ext3 $IMAGE 40 41 echo "Making the swap file with size ${SWAPSIZE}MB..." 42 dd if=/dev/zero of=$SWAPIMAGE bs=1M count=$SWAPSIZE 43 44 echo "Accessing the image..." 1>&2 45 if [ ! -e "$IMAGEDIR" ]; then 46 mkdir "$IMAGEDIR" 47 fi 48 sudo mount -o loop "$IMAGE" "$IMAGEDIR" 49 50 echo "Installing the package root..." 1>&2 51 cp -a "$PACKAGEROOT/"* "$IMAGEDIR"/ 52 53 echo "Removing any linked /dev entry..." 1>&2 54 if [ -h "$IMAGEDIR/dev" ]; then 55 rm "$IMAGEDIR/dev" 56 fi 57 58 if [ ! -e "$IMAGEDIR/dev" ]; then 59 mkdir "$IMAGEDIR/dev" 60 fi 61 62 cp "/dev/MAKEDEV" "$IMAGEDIR/dev" 63 64 echo "Removing any linked /proc entry..." 1>&2 65 if [ -h "$IMAGEDIR/proc" ]; then 66 rm "$IMAGEDIR/proc" 67 fi 68 69 if [ ! -e "$IMAGEDIR/proc" ]; then 70 mkdir "$IMAGEDIR/proc" 71 fi 72 73 echo "Using a special fstab..." 1>&2 74 if [ -e "$IMAGEDIR/etc/fstab" ]; then 75 if [ ! -e "$IMAGEDIR/etc/fstab.orig" ]; then 76 mv "$IMAGEDIR/etc/fstab" "$IMAGEDIR/etc/fstab.orig" 77 fi 78 fi 79 cp "$THISDIR/UML/fstab" "$IMAGEDIR/etc/fstab" 80 81 # Tweak the inittab to only use tty0 and add it to securetty. 82 echo "Reconfiguring the console settings..." 1>&2 83 if [ ! -e "$IMAGEDIR/etc/inittab.orig" ]; then 84 if [ -e "$IMAGEDIR/etc/inittab" ]; then 85 cp "$IMAGEDIR/etc/inittab" "$IMAGEDIR/etc/inittab.orig" 86 grep -v "getty" "$IMAGEDIR/etc/inittab.orig" > "$IMAGEDIR/etc/inittab" 87 fi 88 echo "# We launch just one console for UML:" >> "$IMAGEDIR/etc/inittab" 89 echo "c0:1235:respawn:/sbin/getty 38400 tty0 linux" >> "$IMAGEDIR/etc/inittab" 90 91 echo "# UML modification: use tty0 or vc/0" >> "$IMAGEDIR/etc/securetty" 92 echo "tty0" >> "$IMAGEDIR/etc/securetty" 93 echo "vc/0" >> "$IMAGEDIR/etc/securetty" 94 fi 95 96 sudo "$THISDIR/uml-make-devices" "$IMAGEDIR" 97 98 echo "Unmounting the image..." 1>&2 99 sudo umount "$IMAGEDIR" 100 rmdir "$IMAGEDIR"