天天看點

使用qemu-ifup/qemu-ifdown腳本支援運作多個qemu模拟開發闆

1、運作多個qemu模拟開發闆,每個開發闆就對應需要一個tap裝置作為網絡裝置,使用同一個tap裝置會沖突,導緻qemu模拟啟動失敗。

修改qemu啟動指令,不使用ifname=tap0參數指定固定的網絡裝置為tap0,同時需要指定srcipt和downscript的腳本路徑,分别為qemu-ifup腳本和qemu-ifdown腳本的路徑。

qemu-system-arm -M vexpress-a9 -m 512M  -kernel u-boot  -nographic -net nic -net tap,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown
           

2、qemu-ifup腳本

#!/bin/sh

br0_exist_flag=`ifconfig|grep -ci "br0"`
if [ $br0_exist_flag -eq 0 ];then
sudo brctl addbr br0
sudo ifconfig br0 192.168.1.100 netmask 255.255.255.0 up
sudo route add -net 192.168.1.0 netmask 255.255.255.0 br0
sudo route add default gw 192.168.1.1 br0
fi

sudo tunctl -t $1 -u root
sudo ifconfig $1 up
sudo brctl addif br0 $1
           

因為可以多個tap裝置接入到同一個虛拟網橋br0上,隻需要一個br0即可,是以腳本中會檢測系統中是否已經存在br0,若存在就不再建立。

3、qemu-ifdown腳本

#!/bin/sh
sudo ifconfig $1 down
sudo brctl delif br0 $1