Refactor start-qemu ports handling to allow for user-specified port mappings

This commit is contained in:
Tianon Gravi 2015-10-27 16:02:00 -07:00
parent e1366bdec9
commit 1eb2e0f60d
2 changed files with 13 additions and 1 deletions

View File

@ -12,4 +12,7 @@
-v /home/jsmith/downloads/debian.iso:/tmp/debian.iso:ro \
-e QEMU_CDROM=/tmp/debian.iso \
-e QEMU_BOOT='order=d' \
-e QEMU_PORTS='2375 2376' \
tianon/qemu
Note: port 22 will always be mapped (regardless of the contents of `QEMU_PORTS`).

View File

@ -8,11 +8,13 @@ set -e
# QEMU_HDA_SIZE (bytes, suffixes like "G" allowed)
# QEMU_CDROM (filename)
# QEMU_BOOT (-boot)
# QEMU_PORTS="xxx[ xxx ...]" (space separated port numbers)
hostArch="$(uname -m)"
qemuArch="${QEMU_ARCH:-$hostArch}"
qemu="${QEMU_BIN:-qemu-system-$qemuArch}"
qemuArgs=()
qemuPorts=( 22 $QEMU_PORTS )
if [ -e /dev/kvm ]; then
qemuArgs+=( -enable-kvm )
@ -46,9 +48,16 @@ if [ "$QEMU_BOOT" ]; then
qemuArgs+=( -boot "$QEMU_BOOT" )
fi
netArg='user'
netArg+=",hostname=$(hostname)"
for port in "${qemuPorts[@]}"; do
netArg+=",hostfwd=tcp::$port-:$port"
netArg+=",hostfwd=udp::$port-:$port"
done
qemuArgs+=(
-net nic
-net user,hostname="$(hostname)",hostfwd=tcp:':22'-':22'
-net "$netArg"
-vnc ':0'
-serial stdio
"$@"