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