vm-common.sh: enable ip forwarding just in case
[cmccabe-bin] / vm-common.sh
1 die() {
2     echo $@
3     exit 1
4 }
5
6 run_vm() {
7     sysctl -w net.ipv4.ip_forward=1 || die "failed to enable ip_forward"
8     ID=$1
9     shift
10     NARGS=$@
11     ADMIN_PORT=`expr 2232 + $ID`
12     MID_BYTE=`printf "%02X" $ID`
13     MAC_ADDR="F0:DE:$MID_BYTE:58:B2:69"
14     /sbin/modprobe kvm kvm_intel kvm_amd || die "modprobe failed"
15     echo "running qemu with ssh port $ADMIN_PORT, vnc ID $ID"
16     VNC_EFFECTIVE_PORT=`expr 5900 + $ID`
17     echo "see output with vncviewer 127.0.0.1:$VNC_EFFECTIVE_PORT"
18     qemu-kvm \
19         -daemonize \
20         -vga std \
21         -redir tcp:$ADMIN_PORT::22 \
22         -vnc 127.0.0.1:$ID \
23         -net nic,vlan=0,model=e1000 \
24         -net user,vlan=0,net=10.0.2.0/8,host=10.0.2.2,hostname=vm$ID \
25         -net nic,vlan=1,macaddr=$MAC_ADDR,model=e1000 \
26         -net socket,vlan=1,mcast=230.0.0.1:1234 \
27         $NARGS || die "qemu invocation failed."
28 }
29
30 # Tap stuff (currently unused):
31 #-net nic,vlan=0,macaddr=$MAC_ADDR,model=e1000 \
32 #-net tap,vlan=0,ifname=tap0,downscript=no,script=no \
33
34 # To add to /etc/hosts in VMs:
35 # 192.168.123.10  vm0.local vm0
36 # 192.168.123.11  vm1.local vm1
37 # 192.168.123.12  vm2.local vm2
38 # 192.168.123.13  vm3.local vm3
39 # 192.168.123.14  vm4.local vm4
40 # 192.168.123.15  vm5.local vm5
41 # 192.168.123.16  vm6.local vm6