一.设置virtualbox网卡
1.1 关闭虚拟机
1.2 设置添加网卡
进入设置-网络
1.2.1 添加网卡1(NAT网络)
这个网络是主机通过网络地址转换到虚拟机,比如主机用无线网卡WLAN上网,用NAT转换比较合适,这样虚拟机也可以访问外网。
1.2.2 添加网卡2(host only网络)
这个网络是主机通过无线网卡WLAN上外网,但是虚拟机想通过有线网卡和主机、甚至与开发板互相ping通,传输文件。
当然开启host only模式前先确保windows下的virtual host only网卡有开启,如下图:
如果没有请按照下图操作:(这里是添加host only网卡)
二,配置windows和虚拟机
2.1 配置window以太网卡
刚添加了虚拟机虚拟virtual host only网卡, 那么我们反正用的WLAN上的外网,为了方便,设置windows下的以太网卡网段和virtual host only网卡保持一致。
2.2 配置虚拟机网络
一般默认情况下,虚拟机是通过NAT共享网络给虚拟机用的,那么此时虚拟机也是可以上网的,只是不能和外界开发板进行互相ping, 同时windows主机也不能ping虚拟机。 如下图:
图中可以看到两块网卡,enp0s3是Ubuntu默认的网卡(NAT),enp0s8是新增的网卡(host only),可以看到enp0s8还没有分配IP地址,我们需要手工指定一下。sudo vim /etc/network/interfaces将文件内容修改为如下所示:
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto enp0s8
iface enp0s8 inet static
address 192.168.56.101
netmask 255.255.255.0
再来看下网卡ip信息:
三,测试上网状态
从测试结果上可以看到虚拟机上外网和ping windows主机都是ok的。
10.80.0.75时无线网卡的ip,
192.168.56.100是以太网卡的ip,
192.168.56.101是host only网卡的ip。
同理用Windows ping虚拟机也是ok的。
用开发板ping主机和虚拟机发现,只能ping通windows主机,无法ping通虚拟机,如下图。这是为什么呢?
这是由于我们windows主机和开发板用的网线直连,两个以太网卡在同一网段下,当然能够ping通。但是虚拟机和windows主机用的确是host only网卡(NAT方式用来上外网),这样只能保证虚拟机和Windows主机是互通的,但是却无法被开发板访问,我们的开发板是没有无线网卡的,所以不能用WLAN,因此我们要想让开发板访问到虚拟机还得经过windows的以太网卡。
那么我们虚拟机和windows主机是host only方式,所以我们无法用到以太网卡进行虚拟机和windows主机的交互。所以我们可以采取将host only网卡桥接到以太网卡,进入 网络-更改适配器-同时选中host only网卡和以太网卡,点击右键-选择桥接,如下图所示:
这样我们的虚拟机的host only网卡就可以透过以太网卡和开发板交互了,效果如下:
开发板能够ping windows主机和虚拟机。
四,改进和优化
如果不想在windows下进行host only网卡和以太网卡桥接,也可直接把virtualbox的第2路网卡由原来的host only修改成以太网卡桥接模式,如下:
这样需要配置虚拟机的enp0s8网卡和windows主机的以太网卡网段保持一致的。(和前面2.2操作一样)