diff options
Diffstat (limited to 'test-machine')
-rwxr-xr-x | test-machine | 69 |
1 files changed, 54 insertions, 15 deletions
diff --git a/test-machine b/test-machine index 56c08e2..cdd6001 100755 --- a/test-machine +++ b/test-machine @@ -2,7 +2,14 @@ # Test a virtual machine with KVM. # -usage="usage: $0 <machine-dir> [<qemu-option>...]" +# -n <nic> +# Network adapter to use, for example, virtio-net-pci (default), e1000, +# or vmxnet3. +# +# -t <tap> +# Existing tap interface to use instead of creating a new one (as tap9). +# +usage="usage: $0 [-n <nic>] <machine-dir> [<qemu-option>...]" owd="$(pwd)" trap "{ cd '$owd'; exit 1; }" ERR @@ -11,6 +18,34 @@ set -o errtrace # Trap in functions. function info () { echo "$*" 1>&2; } function error () { info "$*"; exit 1; } +br=br0 +mac="de:ad:be:ef:b8:da" + +arch="$(uname -m)" +kvm=("qemu-system-$arch" -enable-kvm) + +nic=virtio-net-pci +etap= + +while [ "$#" -gt 0 ]; do + case "$1" in + -n) + shift + nic="$1" + shift + ;; + -t) + shift + etap="$1" + shift + ;; + *) + break + ;; + esac +done + + dir="${1%/}" shift @@ -18,28 +53,30 @@ if [ -z "$dir" ]; then error "missing machine directory" fi -br=br0 -mac="de:ad:be:ef:b8:da" -kvm=(qemu-system-x86_64 -enable-kvm) - -tap=tap0 - -sudo ip tuntap delete "$tap" mode tap || true -sudo ip tuntap add "$tap" mode tap user "$(whoami)" -sudo ip link set "$tap" up -#sleep 0.5s -sudo ip link set "$tap" master "$br" +if [ -z "$etap" ]; then + tap=tap9 + sudo ip tuntap delete "$tap" mode tap || true + sudo ip tuntap add "$tap" mode tap user "$(whoami)" + sudo ip link set "$tap" up + #sleep 0.5s + sudo ip link set "$tap" master "$br" +else + tap="$etap" +fi "${kvm[@]}" \ -m 8G \ -cpu host -smp "8,sockets=1,cores=4,threads=2" \ \ -netdev "tap,id=net0,ifname=$tap,script=no" \ - -device "virtio-net-pci,netdev=net0,mac=$mac" \ + -device "$nic,netdev=net0,mac=$mac" \ \ -drive "if=none,id=disk0,file=$dir/disk.img,format=raw" \ -device "virtio-blk-pci,scsi=off,drive=disk0" \ \ + -usb \ + -device usb-tablet \ + \ -chardev stdio,id=qmp \ -mon chardev=qmp,mode=control,pretty=on \ \ @@ -64,14 +101,16 @@ sudo ip link set "$tap" master "$br" #-vnc "unix:$dir/vnc" \ #-monitor "unix:$dir/monitor,server,nowait" -sudo ip tuntap delete "$tap" mode tap +if [ -z "$etap" ]; then + sudo ip tuntap delete "$tap" mode tap +fi exit 0 sudo "${kvm[@]}" \ -m 8G \ -cpu host -smp "sockets=1,cores=4,threads=2" \ - -device "virtio-net-pci,netdev=net0,mac=$mac" \ + -device "$nic,netdev=net0,mac=$mac" \ -netdev "tap,id=net0,script=./qemu-ifup" \ -device "virtio-scsi-pci,id=scsi" \ -device "scsi-hd,drive=disk1" \ |