2015-12-15 QEMU Network Setup
2015-12-16 13:34
591 查看
QEMU Network Setup
QEMU Network Setting
上周配置QEMU的网络设置用了很大功夫,终于彻底弄明白了。需求:首先要清楚,因为我要修改QEMU代码,所以不能用virsh来自动配置,因为它采用的是qemu-kvm,进行了特殊的订制,可能会有不必要的麻烦。我需要自己
make install之后,用
qemu-system-x86_64来手动启动虚拟机。
结构:在Host中,创建桥接网络virbr0,并且将eth0连入此桥接网络。然后在Guest中,修改
network-scripts,正确识别并设置QEMU的网卡e1000。最后,编写Host中的QEMU启动脚本,将Guest连入virbr0。
Host Setting
REMEMBER TO CHECK NETWORK CABLE CONNECTION FIRST!!!我浪费了好多时间在配置脚本上,总是无法正确设置网络,结果发现网线松动了。
Enter
/etc/sysconfig/network-scripts/
Add ifcfg-virbr0
Edit ifcfg-eth0(maybe enp3s0,enp2s0),add it to virbr0
service network restart
brctl show //To ensure correctness
QEMU scripts
Edit runkvm for correct img path
Edit qemu-ifup for correct bridge name
Guest Setting
Run
runkvmto start guest and enter it with root
cd /etc/udev/rules.d/
cat 70-persistent-net.rules
PCI device e1000 is QEMU network adapter,remember its NAME(eth0/1/2) and ATTR
Add eth0/1/2 scripts under network-scripts:
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth1(If qemu network adapter is eth0,normal setting should work,and we don't need to edit,just ifconfig to check network connection.)
vim ifcfg-eth1
Change HWADDR to ATTR in
70-persistent-net.rules
service network restart
Explanation: 因为之前都是在做Xen的虚拟化,所以这个镜像中配置的
network-scripts是指定的Xen的网卡作为eth0,现在采用QEMU了,缺少对应的网络配置脚本,那么直接在
network-scripts中加入新的脚本配置QEMU网卡就可以了。
Setting files
ifcfg-virbr0TYPE=Bridge STP=yes BOOTPROTO=none NAME=virbr0 UUID=cc49c39a-8713-4c88-b877-557a462ab738 DEVICE=virbr0 ONBOOT=yes DNS1=162.105.129.26 DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=no DELAY=0 BRIDGINS_OPTS=priority=32768 IPADDR=172.17.2.131 PREFIX=16 GATEWAY=172.17.1.1 NM_CONTROLLED=no
ifcfg-enp3s0
BRIDGE=virbr0 BOOTPROTO=none NAME=enp3s0 UUID=cc49c39a-8713-4c88-b877-557a462ab738 DEVICE=enp3s0 ONBOOT=yes NM_CONTROLLED=no
runkvm
#!/bin/bash qemu-system-x86_64 -enable-kvm -nographic -m 8192 -smp 3,sockets=3,cores=1,threads=1 -device e1000,netdev=net0 -netdev tap,id=net0,script=./qemu-ifup -device virtio-balloon-pci,id=balloon0,bus=pci.0 /root/richard/test/centos6.img
qemu-ifup
#!/bin/sh set -x switch=virbr0 if [ -n "$1" ];then echo "qemu-ifup argument: interface "$1 #/usr/bin/sudo /usr/sbin/tunctl -u `whoami` -t $1 /usr/bin/sudo /sbin/ip link set $1 up sleep 0.5s /usr/bin/sudo /usr/sbin/brctl addif $switch $1 exit 0 else echo "Error: no interface specified" exit 1 fi