虚拟机和开发板之间的通信
网络互通
要想虚拟机和开发板之间可以传输文件,首先,一定要先ping通。
以下通过配置TAP的方式
- 主机配置
tunctl -u root -t tap0 //创建tap0网卡
ifconfig tap0 172.16.16.10 promisc up //配置tap0的ip并设置为混杂模式
- 启动脚本
在qemu的启动脚本中,添加以下两行
-net nic,vlan=0 \
-net tap,vlan=0,ifname=tap0,script=no,downscript=no
- 虚拟机配置
ifconfig eth0 172.16.16.20
之后没有特殊情况的话就可以互ping通了。
或者直接新加一张网卡来实现
共享文件的方式有很多,为了方便,以下就采用nfs方式
NFS通信
- 主机配置
1.安装nfs-kernel-server
apt install nfs-kernel-server
2.修改nfs配置文件
vi /etc/exports
新增一行
/share *(rw,sync,no_root_squash,no_subtree_check)
3.重启nfs服务器
service nfs-kernel-server start
4.查看配置情况
showmount -e
出现/share *这行表示配置成功
- 虚拟机配置:
mkdir -p /mnt/nfs
mount -t nfs -o nolock 172.16.16.10:/share /mnt/nfs
之后就可以用share共享目录互传文件了。
Qemu上网
1.主机开启IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward //重启后失效,要想永久,修改/etc/sysctl.conf中net.ipv4.ip forward=1
2.Qemu配置IP
ifconfig eth0 172.16.16.20 promisc up
3.配置主机Tap0网卡ip
ifconfig tap0 172.16.16.10 promisc up
4.主机配置静态路由
route add -net 172.16.16.0 netmask 255.255.255.0 dev tap0
5.主机配置iptable规则
iptables -t nat -A POSTROUTING -s 172.16.16.0/24 -o ens34 -j MASQUERADE
netfilter-persistent save
6.Qemu配置静态路由
route add default gw 172.16.16.10 dev eth0
7.Qemu ping 外网
实验
测试环境:
vmware主机上,有两张网卡,分别是ens34和ens35,ens34作为Wan口与Internet连接,ens35作为lan口和PC连接。
ens35的网段为16.16.16.0/24
步骤
1.ens35和PC互联(左边为Vmware设置,右边为PC设置)
2,Vmware和PC设置静态IP进行互ping操作
3.在Vmware创建br0和tap0互通
创建br0
ifconfig ens35 down
brctl addbr br0
brctl addif br0 ens35
brctl stp br0 off
ifconfig br0 16.16.16.10/24 promisc up
ifconfig ens35 0.0.0.0 promisc up
brctl show br0
brctl showstp br0
创建tap0
tunctl -t tap0 -u root
brctl addif br0 tap0
ifconfig tap0 0.0.0.0 promisc up
brctl showstp br0
4.qemu与vmware相连
在启动命令中加入参数
-net nic,vlan=0 \
-net tap,vlan=0,ifname=tap0
4,互ping测试