Makefile: add pickrand
[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     model_to_use=${NET_MODEL-e1000}
19     num_interfaces_to_use=${NUM_INTERFACES-2}
20     if [ $num_interfaces_to_use -eq 2 ]; then
21         SECOND_NET_SWITCHES="-net nic,vlan=1,macaddr=$MAC_ADDR,model=$model_to_use \
22             -net socket,vlan=1,mcast=230.0.0.1:1234"
23     else 
24         SECOND_NET_SWITCHES=""
25     fi
26     QEMU_VARIANT=${QEMU_VARIANT-qemu-kvm}
27     ${QEMU_VARIANT} \
28         -daemonize \
29         -vga std \
30         -redir tcp:$ADMIN_PORT::22 \
31         -net nic,vlan=0,model=$model_to_use \
32         -net user,vlan=0,net=10.0.2.0/8,host=10.0.2.2,hostname=vm$ID \
33         -vnc 127.0.0.1:$ID \
34         $SECOND_NET_SWITCHES \
35         $NARGS || die "qemu invocation failed."
36         #-sdl -frame \
37 }
38
39 # Tap stuff (currently unused):
40 #-net nic,vlan=0,macaddr=$MAC_ADDR,model=e1000 \
41 #-net tap,vlan=0,ifname=tap0,downscript=no,script=no \
42
43 # To add to /etc/hosts in VMs:
44 # 192.168.123.10  vm0.local vm0
45 # 192.168.123.11  vm1.local vm1
46 # 192.168.123.12  vm2.local vm2
47 # 192.168.123.13  vm3.local vm3
48 # 192.168.123.14  vm4.local vm4
49 # 192.168.123.15  vm5.local vm5
50 # 192.168.123.16  vm6.local vm6