Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Branch: master
Fetching contributors…

Cannot retrieve contributors at this time

executable file 72 lines (58 sloc) 1.426 kB
#!/bin/bash
#
# launcher script for qemu-kvm
#
# machines are sourced from a file which defines functions, each
# specifying options for the particular VM, for example:
#
# vm_beatbox() {
# mac="de:ad:be:ef:00:09"
# options=(-nographic)
# }
#
# If unspecified:
# ${drives[@]}: will match all of "$imgroot/$vm".*.qcow2
#
### Paths ################################
machines=${XDG_CONFIG_HOME:-$HOME/.config}/qemu/machines
isoroot=/mnt/Gluttony/iso
imgroot=/mnt/Haven/qemu-img
### Defaults #############################
mem=(-m 1024)
cpus=(-cpu Nehalem -smp sockets=1,cores=2,threads=2)
iso=$isoroot/archlinux.iso
### Launcher #############################
. "$machines"
while getopts 'cd:' flag; do
case $flag in
c) usecdrom=1 ;;
d) iso=$OPTARG ;;
esac
done
shift $(( OPTIND - 1 ))
if [[ -z $1 ]]; then
printf 'Available VMs:\n'
compgen -A function -- vm_ | sed 's/^vm_/ /'
exit 0
fi
vm=$1; shift
if ! type -t vm_$vm >/dev/null; then
printf 'unknown VM: %s\n' "$vm"
exit 1
fi
vm_$vm
cdrom=(-cdrom "$iso" -boot d)
net=(-net vde -net nic,model=virtio,macaddr="$mac")
opts+=("${cpus[@]}" "${mem[@]}" "${net[@]}")
if (( usecdrom )); then
opts+=(-cdrom "$iso" -boot d)
fi
# default drives
if (( ${#drives[*]} == 0 )); then
for drive in "$imgroot/$vm".*.qcow2; do
opts+=("-drive" "file=$drive,if=virtio,aio=native")
done
else
opts+=("${drives[@]}")
fi
exec kvm "${opts[@]}" "$@"
Jump to Line
Something went wrong with that request. Please try again.