Qemu模拟ARM之配置网络
系统:Ubuntu16.04.4 32bit
交叉编译器:arm-linux-gnueabihf-gcc
VMware:VMware Workstation 14 Pro
u-boot:u-boot-2018.03
uboot引导通过网络来加载linux,需要桥接网卡
1.安装桥接工具
sudo apt-get install uml-utilities
sudo apt-get install bridge-utils
2.添加网卡
sudo vi /etc/network/interfaces
#在文件最后添加以下配置
auto ens33
auto br0
iface br0 inet dhcp
bridge_ports ens33
重启sudo reboot
后使用ifconfig
来查看是否br0
存在且分配到了ip地址,如果有则说明添加网卡成功
qemu使用tap设备时,会执行 /etc/qemu-ifup
和 /etc/qemu-ifdown
这两个脚本,但是这两个脚本在安装qemu时创建了,这里将已经存在的这两个脚本备份,然后将内容替换如下
/etc/qemu-ifup:
#!/bin/sh
echo sudo tunctl -u $(id -un) -t $1
sudo tunctl -u $(id -un) -t $1
echo sudo ifconfig $1 0.0.0.0 promisc up
sudo ifconfig $1 0.0.0.0 promisc up
echo sudo brctl addif br0 $1
sudo brctl addif br0 $1
echo brctl show
brctl show
#设置ip
sudo ifconfig br0 192.168.1.111
#设置ens33网卡ip
sudo ifconfig ens33 192.168.1.101
/etc/qemu-ifdown:
#!/bin/sh
echo sudo brctl delif br0 $1
sudo brctl delif br0 $1
echo sudo tunctl -d $1
sudo tunctl -d $1
echo brctl show
brctl show
如果你的这两个脚本是新建的需要给它们添加执行权限
sudo chmod 755 /etc/qemu-ifup
sudo chmod 755 /etc/qemu-ifdown
每次启动ubuntu后都要执行/etc/qemu-ifup tap0
,这样qemu才能正常联网
3.修改UBOOT支持网路
//vi include/configs/vexpress_common.h
#define CONFIG_IPADDR 192.168.1.115 //板子的ip
#define CONFIG_NETMASK 255.255.255.0
#define CONFIG_SERVERIP 192.168.1.101 //虚拟机ip
重新编译,使用qemu来测试网络是否可用
# -serial stdio
qemu-system-arm -M vexpress-a9 -nographic -kernel u-boot -net nic,macaddr=52:54:00:11:22:33 -net tap,ifname=tap0,script=no,downscript=no