Dean Troyer | 65cf608 | 2011-09-16 12:22:21 -0500 | [diff] [blame] | 1 | #!/bin/bash |
2 | # make_image.sh - Create Ubuntu images in various formats | ||||
3 | # | ||||
4 | # make_image.sh release format | ||||
5 | # | ||||
Dean Troyer | 57794d4 | 2011-09-16 17:22:23 -0500 | [diff] [blame^] | 6 | # Supported formats: qcow (kvm), vmdk (vmserver), vdi (vbox), vhd (vpc), raw |
Dean Troyer | 65cf608 | 2011-09-16 12:22:21 -0500 | [diff] [blame] | 7 | # |
8 | # Requires sudo to root | ||||
9 | |||||
10 | ROOTSIZE=${ROOTSIZE:-8192} | ||||
11 | SWAPSIZE=${SWAPSIZE:-1024} | ||||
12 | |||||
13 | usage() { | ||||
14 | echo "$0 - Create Ubuntu images" | ||||
15 | echo "" | ||||
16 | echo "$0 [-r rootsize] [-s swapsize] release format" | ||||
17 | exit 1 | ||||
18 | } | ||||
19 | |||||
20 | while getopts hm:r:s: c; do | ||||
21 | case $c in | ||||
Dean Troyer | 4dd420e | 2011-09-16 16:16:34 -0500 | [diff] [blame] | 22 | h) usage |
23 | ;; | ||||
24 | m) MIRROR=$OPTARG | ||||
25 | ;; | ||||
26 | r) ROOTSIZE=$OPTARG | ||||
27 | ;; | ||||
28 | s) SWAPSIZE=$OPTARG | ||||
29 | ;; | ||||
Dean Troyer | 65cf608 | 2011-09-16 12:22:21 -0500 | [diff] [blame] | 30 | esac |
31 | done | ||||
32 | shift `expr $OPTIND - 1` | ||||
33 | |||||
34 | RELEASE=$1 | ||||
35 | FORMAT=$2 | ||||
36 | |||||
Dean Troyer | 4dd420e | 2011-09-16 16:16:34 -0500 | [diff] [blame] | 37 | case $FORMAT in |
38 | kvm|qcow2) FORMAT=qcow2 | ||||
Dean Troyer | 57794d4 | 2011-09-16 17:22:23 -0500 | [diff] [blame^] | 39 | QFORMAT=qcow2 |
40 | HYPER=kvm | ||||
Dean Troyer | 4dd420e | 2011-09-16 16:16:34 -0500 | [diff] [blame] | 41 | ;; |
42 | vmserver|vmdk) | ||||
43 | FORMAT=vmdk | ||||
Dean Troyer | 57794d4 | 2011-09-16 17:22:23 -0500 | [diff] [blame^] | 44 | QFORMAT=vmdk |
45 | HYPER=vmserver | ||||
Dean Troyer | 4dd420e | 2011-09-16 16:16:34 -0500 | [diff] [blame] | 46 | ;; |
Dean Troyer | 57794d4 | 2011-09-16 17:22:23 -0500 | [diff] [blame^] | 47 | vbox|vdi) FORMAT=vdi |
48 | QFORMAT=vdi | ||||
49 | HYPER=kvm | ||||
Dean Troyer | 4dd420e | 2011-09-16 16:16:34 -0500 | [diff] [blame] | 50 | ;; |
Dean Troyer | 57794d4 | 2011-09-16 17:22:23 -0500 | [diff] [blame^] | 51 | vhd|vpc) FORMAT=vhd |
52 | QFORMAT=vpc | ||||
53 | HYPER=kvm | ||||
Dean Troyer | 4dd420e | 2011-09-16 16:16:34 -0500 | [diff] [blame] | 54 | ;; |
55 | xen) FORMAT=raw | ||||
Dean Troyer | 57794d4 | 2011-09-16 17:22:23 -0500 | [diff] [blame^] | 56 | QFORMAT=raw |
57 | HYPER=xen | ||||
58 | ;; | ||||
59 | raw) FORMAT=raw | ||||
60 | QFORMAT=raw | ||||
61 | HYPER=kvm | ||||
Dean Troyer | 4dd420e | 2011-09-16 16:16:34 -0500 | [diff] [blame] | 62 | ;; |
63 | *) echo "Unknown format: $FORMAT" | ||||
64 | usage | ||||
Dean Troyer | 65cf608 | 2011-09-16 12:22:21 -0500 | [diff] [blame] | 65 | esac |
66 | |||||
Dean Troyer | 4dd420e | 2011-09-16 16:16:34 -0500 | [diff] [blame] | 67 | case $RELEASE in |
68 | natty) ;; | ||||
69 | maverick) ;; | ||||
70 | lucid) ;; | ||||
71 | karmic) ;; | ||||
72 | jaunty) ;; | ||||
73 | *) echo "Unknown release: $RELEASE" | ||||
74 | usage | ||||
75 | ;; | ||||
Dean Troyer | 65cf608 | 2011-09-16 12:22:21 -0500 | [diff] [blame] | 76 | esac |
77 | |||||
78 | # Install stuff if necessary | ||||
79 | if [ -z `which vmbuilder` ]; then | ||||
Dean Troyer | 4dd420e | 2011-09-16 16:16:34 -0500 | [diff] [blame] | 80 | sudo apt-get install ubuntu-vm-builder |
Dean Troyer | 65cf608 | 2011-09-16 12:22:21 -0500 | [diff] [blame] | 81 | fi |
82 | |||||
83 | # Build the image | ||||
Dean Troyer | 57794d4 | 2011-09-16 17:22:23 -0500 | [diff] [blame^] | 84 | TMPDISK=`mktemp imgXXXXXXXX` |
85 | SIZE=$[$ROOTSIZE+$SWAPSIZE+1] | ||||
86 | dd if=/dev/null of=$TMPDISK bs=1M seek=$SIZE | ||||
87 | sudo vmbuilder $HYPER ubuntu --suite $RELEASE \ | ||||
Dean Troyer | 65cf608 | 2011-09-16 12:22:21 -0500 | [diff] [blame] | 88 | -o \ |
89 | --rootsize=$ROOTSIZE \ | ||||
90 | --swapsize=$SWAPSIZE \ | ||||
91 | --tmpfs - \ | ||||
92 | --addpkg=openssh-server \ | ||||
Dean Troyer | 57794d4 | 2011-09-16 17:22:23 -0500 | [diff] [blame^] | 93 | --raw=$TMPDISK \ |
Dean Troyer | 65cf608 | 2011-09-16 12:22:21 -0500 | [diff] [blame] | 94 | |
Dean Troyer | 57794d4 | 2011-09-16 17:22:23 -0500 | [diff] [blame^] | 95 | if [ "$FORMAT" = "raw" ]; then |
Dean Troyer | 65cf608 | 2011-09-16 12:22:21 -0500 | [diff] [blame] | 96 | # Get image |
Dean Troyer | 57794d4 | 2011-09-16 17:22:23 -0500 | [diff] [blame^] | 97 | mv $TMPDISK $RELEASE.$FORMAT |
Dean Troyer | 65cf608 | 2011-09-16 12:22:21 -0500 | [diff] [blame] | 98 | else |
99 | # Convert image | ||||
Dean Troyer | 57794d4 | 2011-09-16 17:22:23 -0500 | [diff] [blame^] | 100 | qemu-img convert -O $QFORMAT $TMPDISK $RELEASE.$FORMAT |
101 | rm $TMPDISK | ||||
Dean Troyer | 65cf608 | 2011-09-16 12:22:21 -0500 | [diff] [blame] | 102 | fi |
Dean Troyer | 57794d4 | 2011-09-16 17:22:23 -0500 | [diff] [blame^] | 103 | rm -rf ubuntu-$HYPER |