#!/bin/bash # make_image.sh - Create Ubuntu images in various formats # # make_image.sh release format # # Supported formats: qcow (kvm), vmdk (vmserver), vdi (vbox), vhd (vpc), raw # # Requires sudo to root ROOTSIZE=${ROOTSIZE:-8192} SWAPSIZE=${SWAPSIZE:-1024} usage() { echo "$0 - Create Ubuntu images" echo "" echo "$0 [-r rootsize] [-s swapsize] release format" exit 1 } while getopts hm:r:s: c; do case $c in h) usage ;; m) MIRROR=$OPTARG ;; r) ROOTSIZE=$OPTARG ;; s) SWAPSIZE=$OPTARG ;; esac done shift `expr $OPTIND - 1` RELEASE=$1 FORMAT=$2 case $FORMAT in kvm|qcow2) FORMAT=qcow2 QFORMAT=qcow2 HYPER=kvm ;; vmserver|vmdk) FORMAT=vmdk QFORMAT=vmdk HYPER=vmserver ;; vbox|vdi) FORMAT=vdi QFORMAT=vdi HYPER=kvm ;; vhd|vpc) FORMAT=vhd QFORMAT=vpc HYPER=kvm ;; xen) FORMAT=raw QFORMAT=raw HYPER=xen ;; raw) FORMAT=raw QFORMAT=raw HYPER=kvm ;; *) echo "Unknown format: $FORMAT" usage esac case $RELEASE in natty) ;; maverick) ;; lucid) ;; karmic) ;; jaunty) ;; *) echo "Unknown release: $RELEASE" usage ;; esac # Install stuff if necessary if [ -z `which vmbuilder` ]; then sudo apt-get install ubuntu-vm-builder fi # Build the image TMPDISK=`mktemp imgXXXXXXXX` SIZE=$[$ROOTSIZE+$SWAPSIZE+1] dd if=/dev/null of=$TMPDISK bs=1M seek=$SIZE sudo vmbuilder $HYPER ubuntu --suite $RELEASE \ -o \ --rootsize=$ROOTSIZE \ --swapsize=$SWAPSIZE \ --tmpfs - \ --addpkg=openssh-server \ --raw=$TMPDISK \ if [ "$FORMAT" = "raw" ]; then # Get image mv $TMPDISK $RELEASE.$FORMAT else # Convert image qemu-img convert -O $QFORMAT $TMPDISK $RELEASE.$FORMAT rm $TMPDISK fi rm -rf ubuntu-$HYPER