blob: 9b5c10c39095ba2d4dc98629c1e88b504c25e92d [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#
6# Supported formats: qcow (kvm), vmdk (vmserver), vdi (vbox), vhd (vpc)
7#
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
22 h) usage
23 ;;
24 m) MIRROR=$OPTARG
25 ;;
26 r) ROOTSIZE=$OPTARG
27 ;;
28 s) SWAPSIZE=$OPTARG
29 ;;
30 esac
31done
32shift `expr $OPTIND - 1`
33
34RELEASE=$1
35FORMAT=$2
36
37case $RELEASE in
38 natty) ;;
39 maverick) ;;
40 lucid) ;;
41 karmic) ;;
42 jaunty) ;;
43 *) echo "Unknown release: $RELEASE"
44 usage
45esac
46
47case $FORMAT in
48 kvm|qcow2) FORMAT=qcow2
49 TARGET=kvm
50 ;;
51 vmserver|vmdk) FORMAT=vmdk
52 TARGET=vmserver
53 ;;
54 vbox|vdi) FORMAT=qcow2
55 TARGET=kvm
56 FINAL_FORMAT=vdi
57 ;;
58 vhd|vpc) FORMAT=qcow2
59 TARGET=kvm
60 FINAL_FORMAT=vpc
61 ;;
62 *) echo "Unknown format: $FORMAT"
63 usage
64esac
65
66# Install stuff if necessary
67if [ -z `which vmbuilder` ]; then
68 sudo apt-get install ubuntu-vm-builder
69fi
70
71# Build the image
72sudo vmbuilder $TARGET ubuntu --suite $RELEASE \
73 -o \
74 --rootsize=$ROOTSIZE \
75 --swapsize=$SWAPSIZE \
76 --tmpfs - \
77 --addpkg=openssh-server \
78
79# --mirror=$MIRROR \
80
81if [ -z "$FINAL_FORMAT" ]; then
82 # Get image
83 mv ubuntu-$TARGET/tmp*.$FORMAT $RELEASE.$FORMAT
84else
85 # Convert image
86 qemu-img convert -O $FINAL_FORMAT ubuntu-$TARGET/tmp*.$FORMAT $RELEASE.$FINAL_FORMAT
87fi
88rm -rf ubuntu-$TARGET