blob: 3bfa68365a9592d71ad5b603e61d10d1e88a3843 [file] [log] [blame]
Dean Troyer65cf6082011-09-16 12:22:21 -05001#!/bin/bash
2# make_image.sh - Create Ubuntu images in various formats
3#
4# make_image.sh release format
5#
Dean Troyer57794d42011-09-16 17:22:23 -05006# Supported formats: qcow (kvm), vmdk (vmserver), vdi (vbox), vhd (vpc), raw
Dean Troyer65cf6082011-09-16 12:22:21 -05007#
8# Requires sudo to root
9
10ROOTSIZE=${ROOTSIZE:-8192}
11SWAPSIZE=${SWAPSIZE:-1024}
12
13usage() {
14 echo "$0 - Create Ubuntu images"
15 echo ""
16 echo "$0 [-r rootsize] [-s swapsize] release format"
17 exit 1
18}
19
20while getopts hm:r:s: c; do
21 case $c in
Dean Troyer4dd420e2011-09-16 16:16:34 -050022 h) usage
23 ;;
24 m) MIRROR=$OPTARG
25 ;;
26 r) ROOTSIZE=$OPTARG
27 ;;
28 s) SWAPSIZE=$OPTARG
29 ;;
Dean Troyer65cf6082011-09-16 12:22:21 -050030 esac
31done
32shift `expr $OPTIND - 1`
33
34RELEASE=$1
35FORMAT=$2
36
Dean Troyer4dd420e2011-09-16 16:16:34 -050037case $FORMAT in
38 kvm|qcow2) FORMAT=qcow2
Dean Troyer57794d42011-09-16 17:22:23 -050039 QFORMAT=qcow2
40 HYPER=kvm
Dean Troyer4dd420e2011-09-16 16:16:34 -050041 ;;
42 vmserver|vmdk)
43 FORMAT=vmdk
Dean Troyer57794d42011-09-16 17:22:23 -050044 QFORMAT=vmdk
45 HYPER=vmserver
Dean Troyer4dd420e2011-09-16 16:16:34 -050046 ;;
Dean Troyer57794d42011-09-16 17:22:23 -050047 vbox|vdi) FORMAT=vdi
48 QFORMAT=vdi
49 HYPER=kvm
Dean Troyer4dd420e2011-09-16 16:16:34 -050050 ;;
Dean Troyer57794d42011-09-16 17:22:23 -050051 vhd|vpc) FORMAT=vhd
52 QFORMAT=vpc
53 HYPER=kvm
Dean Troyer4dd420e2011-09-16 16:16:34 -050054 ;;
55 xen) FORMAT=raw
Dean Troyer57794d42011-09-16 17:22:23 -050056 QFORMAT=raw
57 HYPER=xen
58 ;;
59 raw) FORMAT=raw
60 QFORMAT=raw
61 HYPER=kvm
Dean Troyer4dd420e2011-09-16 16:16:34 -050062 ;;
63 *) echo "Unknown format: $FORMAT"
64 usage
Dean Troyer65cf6082011-09-16 12:22:21 -050065esac
66
Dean Troyer4dd420e2011-09-16 16:16:34 -050067case $RELEASE in
68 natty) ;;
69 maverick) ;;
70 lucid) ;;
71 karmic) ;;
72 jaunty) ;;
73 *) echo "Unknown release: $RELEASE"
74 usage
75 ;;
Dean Troyer65cf6082011-09-16 12:22:21 -050076esac
77
78# Install stuff if necessary
79if [ -z `which vmbuilder` ]; then
Dean Troyer4dd420e2011-09-16 16:16:34 -050080 sudo apt-get install ubuntu-vm-builder
Dean Troyer65cf6082011-09-16 12:22:21 -050081fi
82
83# Build the image
Dean Troyer57794d42011-09-16 17:22:23 -050084TMPDISK=`mktemp imgXXXXXXXX`
85SIZE=$[$ROOTSIZE+$SWAPSIZE+1]
86dd if=/dev/null of=$TMPDISK bs=1M seek=$SIZE
87sudo vmbuilder $HYPER ubuntu --suite $RELEASE \
Dean Troyer65cf6082011-09-16 12:22:21 -050088 -o \
89 --rootsize=$ROOTSIZE \
90 --swapsize=$SWAPSIZE \
91 --tmpfs - \
92 --addpkg=openssh-server \
Dean Troyer57794d42011-09-16 17:22:23 -050093 --raw=$TMPDISK \
Dean Troyer65cf6082011-09-16 12:22:21 -050094
Dean Troyer57794d42011-09-16 17:22:23 -050095if [ "$FORMAT" = "raw" ]; then
Dean Troyer65cf6082011-09-16 12:22:21 -050096 # Get image
Dean Troyer57794d42011-09-16 17:22:23 -050097 mv $TMPDISK $RELEASE.$FORMAT
Dean Troyer65cf6082011-09-16 12:22:21 -050098else
99 # Convert image
Dean Troyer57794d42011-09-16 17:22:23 -0500100 qemu-img convert -O $QFORMAT $TMPDISK $RELEASE.$FORMAT
101 rm $TMPDISK
Dean Troyer65cf6082011-09-16 12:22:21 -0500102fi
Dean Troyer57794d42011-09-16 17:22:23 -0500103rm -rf ubuntu-$HYPER