aboutsummaryrefslogtreecommitdiff
path: root/test-machine
diff options
context:
space:
mode:
Diffstat (limited to 'test-machine')
-rwxr-xr-xtest-machine69
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" \