aboutsummaryrefslogtreecommitdiff
path: root/etc/private/vm-start-base
diff options
context:
space:
mode:
Diffstat (limited to 'etc/private/vm-start-base')
-rwxr-xr-xetc/private/vm-start-base27
1 files changed, 23 insertions, 4 deletions
diff --git a/etc/private/vm-start-base b/etc/private/vm-start-base
index a88ea2d..4a81661 100755
--- a/etc/private/vm-start-base
+++ b/etc/private/vm-start-base
@@ -15,6 +15,9 @@
# --mac <addr>
# MAC address to use for the machine.
#
+# --pid <path>
+# PID file path, /tmp/vm-<tap>.pid if unspecified.
+#
# --monitor <path>
# Monitor UNIX socket path, /tmp/vm-<tap>-mon.sock if unspecified.
#
@@ -22,15 +25,16 @@
# Console UNIX socket path, /tmp/vm-<tap>-con.sock if unspecified.
#
# --stdio
-# Connect both console and monitor to stdio (multiplexed).
+# Connect both console and monitor to stdio (multiplexed). This disables
+# the creation of the monitor and console sockets.
#
# --stdio-monior
-# Connect only monitor to stdio.
+# Connect only monitor to stdio. This disables the creation of the monitor
+# socket.
#
usage="usage: $0 [<options>] <vm-img> [<extra-qemu-options>]"
-owd="$(pwd)"
-trap "{ cd '$owd'; exit 1; }" ERR
+trap "{ exit 1; }" ERR
set -o errtrace # Trap in functions.
function info () { echo "$*" 1>&2; }
@@ -46,6 +50,7 @@ cpu=1
ram=2G
tap=
mac="de:ad:be:ef:b8:da"
+pid=
mon=
con=
stdio=
@@ -73,6 +78,11 @@ while [ "$#" -gt 0 ]; do
mac="$1"
shift
;;
+ --pid)
+ shift
+ pid="$1"
+ shift
+ ;;
--monitor)
shift
mon="$1"
@@ -133,6 +143,11 @@ if [ -z "$tap" ]; then
del_tap=true
fi
+if [ -z "$pid" ]; then
+ pid="/tmp/vm-$tap.pid"
+fi
+echo "$$" >"$pid"
+
if [ -z "$mon" ]; then
mon="/tmp/vm-$tap-mon.sock"
fi
@@ -182,6 +197,10 @@ fi
"${qemu[@]}" "${ops[@]}" -boot c "$@"
+if [ "$pid" -o "$mon" -o "$con" ]; then
+ rm -f "$pid" "$mon" "$con"
+fi
+
if [ "$del_tap" ]; then
sudo ip tuntap delete "$tap" mode tap
fi