【摘要】:本文主要介绍了在开发过程中,实现开发板利用网线直连电脑实现开发工作,而电脑又可以通过另一个无线或有线网卡正常连接互联网。
【硬件开发环境】:开发主机——惠普笔记本(带无线网卡+有线网卡)、开发板JZ2440(带有线网卡)、网线1根(用于连接开发板和开发主机间的有线网卡)
【软件开发环境】:开发主机安装Win10操作系统并通过无线网卡连接互联网、开发主机安装有VMware Workstation Pro软件,用于运行虚拟机Ubuntu16.04、开发板安装了Linux3.4.2内核。
【配置目标】:虚拟机(Ubuntu)配置成双网卡,其中一个网卡配置成NAT模式,通过主机的无线网卡连接到外网进行上网;另一个网卡配置成桥接模式,通过桥接到开发主机的有线网卡,达到开发主机、Ubuntu、开发板的两两互联。
在Windows的【开始】菜单,搜索“虚拟网络编辑器”,并以管理员的身份打开后,点击还原默认设置。
在虚拟机关机状态下,点击【编辑虚拟机设置】,删除所有已有的【网络适配器】(为了彻底和之前错的设置说再见,一切从头开始)。
再次重新添加一个新的【网络适配器】:

为该新的网络适配器选择【NAT】模式:

确认后,开启虚拟器,打开终端查看虚拟机是否已自动配置好ip地址,

如果没有自动配置IP:
请在ubuntu终端下执行 sudo dhclient 来自动获取IP;
请确认虚拟机的网络配置文件,是否将ens33网卡配置为动态IP?
/etc/network/interfaces文件,查看ens33网卡配置语句,修改为以下动态获取IP:auto ens33
iface ens33 inet dhcp
请确认开发主机Windows是否已经启用了VMNet8?其IP地址和DNS服务器地址是否设置为自动获取?

如果没有上图中的VMNet8,那需要打开Windows的虚拟机服务(把VMWare开头的几个全打开):

查看虚拟机是否已经可以连接外网:

如果网址ping不通:执行route -n命令,查看当前系统的路由信息,确保ens33网卡有0.0.0.0目标的路由表:

如果缺少该路由信息,可执行以下语句进行添加:(192.168.40.2是根据ens33网卡自动获取的IP地址192.168.40.129得到的网关地址,要根据你自己的来设置)
sudo route add default gw 192.168.40.2

如果是外接网卡,需要在设备管理器中查看其名字,且一定要注意,在插入外接网卡时Ubuntu可能会弹出一个窗口,提示检测到新的设备,是连接到主机还是Ubuntu?一定要选择连接到主机!!!

如果,不幸选中了,也可以通过点击【可移动设备】显示的刚插入电脑里的外接网卡名前面的勾号进行取消:

设置ip
选中网卡,鼠标右键选择【属性】,找到【Internet 协议版本4(TCP/IPv4)】,双击后设置静态ip为192.168.5.10

此时,因为此时开发板还未启动,ip也未设置,所以网卡图标是打叉的。且在Windows的cmd窗口中也看不到该网卡(以太网适配器 以太网)的ip地址。


关闭虚拟机,而后添加一个新的【网络适配器】,并选择桥接模式。

在Windows的【开始】菜单,搜索“虚拟网络编辑器”,并以管理员的身份打开后,确定【VMnet0】的类型为桥接模式,并且选择已桥接至我们连接到开发板的网卡:

设置IP地址
Ubuntu桌面点击左侧【系统设置】图标,选择【网络】

打开【网络】之后,可以看到两个网卡的设置界面
其中一个是之前设置的ens33(NAT网卡),可以通过其ip地址为192.168.40.129判断出来:

另外一个没有设置ip地址的显然就是我们待设置的桥接网卡,点击右下角【选项】进入设置页,点击【IPv4设置】,【方法】选择“手动”,而后分别设置ip地址为:192.168.5.11,子网掩码为:255.255.255.0(也就是24位),网关为:192.168.5.1,最后点击保存即可!注意:此ip地址你可以自己设定,只要保证不与之前设置的NAT网卡地址位于同一网段且Windows、Ubuntu、开发板这三者的ip地址位于同一网段即可!

此时,需要执行reboot重新启动Ubuntu,而后通过ifconfig查看是否设置成功。
若重启后,执行ifconfig,发现桥接网卡ens38地址并未设置,也可以通过命令行进行设置:
sudo ifconfig ens38 192.168.5.11
若重启后,执行ifconfig,只看到了NAT网卡(ens33),并未看到桥接网卡ens38。可以执行如下命令进行开启:
sudo ifup ens38

打开串口,打开开发板电源,利用串口工具登陆开发板系统;
手动设置开发板ip地址:ifconfig eth0 192.168.5.9
为了每次打开开发板的时候,能够自动配置为我们所设置的ip地址,也可以在开发板的/etc/systemd/network/目录(该目录本来不存在,也需要新建)下新建50-static.network文件。
输入以下配置语句:
[Match]
Name=eth0
[Network]
Address=192.168.5.9/24
Gateway=192.168.5.1
输入ifconfig查看开发板ip配置情况:

在开发板上分别ping一下Ubuntu和WIndows主机,看能否联通?

在Ubuntu中分别ping一下开发板和WIndows主机,看能否联通?

如果存在ping不同Windows的话,那肯定是防火墙没有关闭,我们需要关闭所有网络的防火墙。
如果担心网络安全的话,也可以打开【允许应用通过防火墙】,打开以”VMware“开头的所有应用的防火墙:


在WIndows中分别ping一下开发板和Ubuntu,看能否联通?

此时,再查看WIndows的网络连接,已经发现之前打叉断开的有线网卡已经处于联通状态了:

至此,已经达到我们所有目的了。当然如果你的开发板有两个网卡接口的话,除了eth0被我们用来作为开发用之外,另一个网口eth1就可以被用来开发板上网了,具体方法也很简单:
udhcpc -i eth1,等待 eth1 网卡自动获得IP;ping www.baidu.com,如果可以正常解析网址并ping通,那就证明开发板已经可以访问外网了。