Skip to content

Instantly share code, notes, and snippets.

@visar
Forked from gdamjan/pxe-vm.sh
Created June 24, 2014 06:00
Show Gist options
  • Save visar/9288cd4eed582fc1fc7d to your computer and use it in GitHub Desktop.
Save visar/9288cd4eed582fc1fc7d to your computer and use it in GitHub Desktop.
#!/bin/bash
MEM=512
LAN=eth0
BRIDGE=virtbr
# runs under the user that started it. make sure it has access to /dev/kvm
function start_vm {
TAPIF=$1
shift
/usr/bin/qemu-system-i386 -enable-kvm -m $MEM -net nic -net tap,ifname=$TAPIF,script=no,downscript=no -boot n "$@"
}
# runs under sudo
function setup_net {
TAPIF=$1
USER=$2
ip tuntap add dev $TAPIF mode tap user $USER
brctl addbr $BRIDGE &> /dev/null
brctl addif $BRIDGE $LAN &> /dev/null
brctl addif $BRIDGE $TAPIF
ip link set $BRIDGE up
ip link set $LAN up
ip link set $TAPIF up
}
# runs under sudo
function reset_net {
TAPIF=$1
ip link set $TAPIF down
brctl delif $BRIDGE $TAPIF
ip tuntap del dev $TAPIF mode tap
}
case "$RUN_FUNC" in
"")
# find out how to dynamically set the tap interface name, for now use "virttap"
TAPIF=virttap
sudo RUN_FUNC=_setup_net_ $0 $TAPIF `id -u`
start_vm $TAPIF "$@"
sudo RUN_FUNC=_reset_net_ $0 $TAPIF
;;
"_setup_net_")
setup_net "$@"
;;
"_reset_net_")
reset_net "$@"
;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment