参考:https://www.bilibili.com/video/BV1n541197rk?spm_id_from=333.999.0.0
目录
- 前言
- STM32MP157 开发板网络环境搭建
- 开发工具
- 网络拓扑结构
- Ubuntu 常用工具安装
- 同一网段
- ping 测试概念
- 关闭Ubuntu 和Windows 防火墙
- 电脑和开发板直连同个路由器
- 准备工作
- VMware 设置
- 查看Ubuntu 虚拟机IP
- 查看开发板IP
- 查看Windows 主机IP
- ping 测试
- 小结
- 电脑和开发板直连同个交换机
- 准备工作
- VMwear 设置
- 查看Ubuntu 虚拟机IP
- 查看Windows 主机IP
- 查看开发板IP
- ping 测试
- 小结
- 电脑WiFi 上网,开发板和电脑直连
- 准备工作
- VMware 设置
- Ubuntu 设置
- Windows 设置
- 开发板设置
- ping 测试
- 小结
- 电脑只有无线网卡
- 准备工作
- VMware 设置
- 常见问题
- 不存在虚拟网卡VMnet1 和VMnet8
- 双网卡虚拟机无法上网
- 只保留NAT 网卡就可以上网
- 只保留NAT 网卡也无法上网
前言
本文档使用的环境是VMware Workstation Pro 15.5 虚拟机软件和Ubuntu18.04,主机系统是
Windows10 系统。开发板所使用的的是正点原子STM32MP157 开发板。若环境不一样可能会有所差别,请酌情参考,具体的可以结合百度。
STM32MP157 开发板网络环境搭建
正点原子粉丝众多,每个人所用的开发工具和网络环境都不太一样,这里列举一些常见的网络环境供大家参考。注意,一些保密性较好的学校、机构、公司的网络环境因不可抗力因素是可能无法按照文档搭建完成的
开发工具
首先看下我们所用到基础设备及工具:电脑、开发板、直通网线。
这三个是本文档最基本的工具,这里的电脑指的是我们用的Windows 系统的电脑主机和
Ubuntu 系统的虚拟机、Ubuntu 系统的电脑主机,苹果电脑这里不做说明。
除了这三个基础设备外,有些用户可能还会用到路由器、交换机、USB 转网口拓展线、USB转WIFI 接口等工具,遇到具体的情况具体分析。
路由器和交换机还是有所区别的。如果是使用交换机,则接入网线生成的IP 是和原宽带的
IP 是在同一网段的。如果使用的是路由器,宽带接入WLAN 口,开发板网线和电脑网线接在LAN 口,则开发板网段和电脑网段处于同一网段,但和宽带不在同一网段。也就是路由器会生成一个新的网段供开发板和电脑使用。
具体工具的使用在以下对应的网络拓扑中。
网络拓扑结构
根据百度百科的记录,网络拓扑(Network Topology)结构是指用传输介质互连各种设备的物理布局。指构成网络的成员间特定的物理的即真实的、或者逻辑的即虚拟的排列方式。本文档的理解就是开发板与电脑的局域网组合形式。
各种设备指的是电脑主机、虚拟机、开发板、路由器/交换机等。
传输介质指的是直通网线、WIFI 等。
Ubuntu 常用工具安装
Ubuntu18 默认不支持ifconfig 指令查看网络信息,如果执行ifconfig 指令会报如下错误。
这里提示我们要安装net-tools 工具,执行以下指令安装。
sudo apt install net-tools
执行以下指令更新Ubuntu 里的软件。
sudo apt update
同一网段
同一网段:本文档所用的是C 类的IP,IP 地址范围为192.0.0.0-223.255.255.255。C 类IP
前三个数表示不同的网络,最后一个数表示同个网段中的不同主机。例如192.168.10.0 和
192.168.18.0 是不同的网络(例如局域网和无线网络),192.168.10.50 和192.168.10.100 是在同一网段(都在局域网)。只有在同一网段中的主机才能ping 通。
ping 测试概念
ping:ping 是一种网络诊断工具,格式为:
ping IP 地址
以下是本文档常用的三种ping 测试成功示例。
以下是常见的ping 失败示例。
这种一般是没有设置IP 在同一网段。其他的ping 失败可以结合反馈信息,参考下面的博客链接分析原因。
ping 失败的结果分析博客地址:https://www.cnblogs.com/pinganzi/p/6812281.html
执行ctrl + Z 即可停止测试。如果不是以上示例的反馈信息,则ping 测试失败,需要检查网络或防火墙。
关闭Ubuntu 和Windows 防火墙
在Ubuntu 和Windows 互相通信之前,需要关闭防火墙。在Windows 主机的控制面板\系统和安全\Windows Defender 防火墙中选择关闭防火墙。
打开Ubuntu 终端,使用以下指令关闭Ubuntu 防火墙。
sudo ufw disable
电脑和开发板直连同个路由器
准备工作
使用场景:电脑和路由器/交换机比较近,有两条网线。这种容易搭建。
设备:电脑(Windows)、正点原子STM32MP157 开发板(出厂系统)、路由器、直通网线(2 条)。
网络拓扑结构:电脑网口通过直通网线连接到路由器的LAN 口,开发板网口通过直通网线连接到路由器的LAN 口,路由器的WAN 口接到外部宽带,从而实现上网。
直连路由器和直连交换机的效果是差不多的,只不过路由器会一个单独的网段,而交换机的网段和宽带分配的网段是一样的。也就是一个是以路由器为中心的局域网,一个是以宽带为中心的局域网。
VMware 设置
打开VMware Workstation Pro 的虚拟机-> 设置
在虚拟机设置中,将网络适配器修改为桥接模式,点击确定。
查看Ubuntu 虚拟机IP
打开Ubuntu18 系统,执行ifconfig 查看Ubuntu 的网络信息。这里可以看到Ubuntu 里ens33
的IP 是192.168.3.11。
ifconfig
查看开发板IP
将直通网线的一端接在正点原子STM32MP157 开发板的网口,另一端接在路由器的LAN
网口。启动开发板,在串口终端输入ifconfig 指令来查询开发板是获取到路由器分配的IP。这里可以看到开发板IP 为192.168.3.10。
ifconfig
查看Windows 主机IP
在Windows 端按下win + R 快捷键打开运行栏,输入cmd 指令后按下回车。
在打开的终端中输入ipconfig 指令,查看电脑的IP。
ipconfig
ping 测试
在ping 测试之前要关闭Windows 和Ubuntu 的防火墙。
综合上述,这里笔者的IP 如下。
Windows 主机IP:192.168.3.6
Ubuntu 虚拟机IP:192.168.3.11
开发板IP:192.168.3.10
测试开发板和Ubuntu、Windows 互ping。
开发板ping 虚拟机Ubuntu 的IP:
ping 192.168.3.11
开发板ping 外网。
ping www.baidu.com
开发板ping 主机Windows。
ping 192.168.3.6
Ubuntu 虚拟机ping 开发板IP
ping 192.168.3.10
Ubuntu 虚拟机ping 外网。
ping www.baidu.com
Ubuntu 虚拟机ping 主机Windows。
ping 192.168.3.6
Windows 主机ping 开发板。
ping 192.168.3.10
Windows 主机ping 虚拟机Ubuntu。
ping 192.168.3.11
以上就是开发板、Ubuntu 和Windows 三者互ping 测试,在开发板uboot 阶段设置完开发板IP 相关的信息后,也能ping 虚拟机Ubuntu。
setenv ipaddr 192.168.3.10
setenv ethaddr 00:04:9f:04:d2:35
setenv gatewayip 192.168.3.1
setenv netmask 255.255.255.0
setenv serverip 192.168.3.11
saveenv
设置完后验证是否开发板ping 通虚拟机。
ping 192.168.3.11
uboot 阶段时,Ubuntu 虚拟机ping 开发板是没有反馈的。按照上述完成测试后,就可以使用TFTP 和NFS 来挂载内核、设备树和文件系统。
小结
防火墙设置:关闭电脑和虚拟机的防火墙。
网络连接:开发板网口和电脑网口都通过网线直接连到同个路由器。
VMware 设置:设置网络适配器桥接模式,虚拟网络编辑器还原默认设置。
Ubuntu 设置:设置网络连接模式为自动(DHCP)。
Windows 设置:设置以太网TCP/IPv4 属性为自动获取IP 地址。
开发板设置:出厂系统默认会自动获取IP,没有这个功能的话可以执行以下指令获取IP。
ifconfig eth0 up
udhcpc -i eth0
电脑和开发板直连同个交换机
准备工作
使用场景:宽带可以直连交换机,有两条网线,没有路由器,没有WiFi 或者无线网卡。
设备:电脑(Windows)、正点原子STM32MP157 开发板(出厂系统)、交换机、直通网线(2 条)。
网络拓扑结构:电脑网口通过直通网线连接到路由器/交换机的LAN 口,开发板网口通过直通网线连接到交换机的LAN 口,交换机的WAN 口接到外部宽带,从而实现上网。
直连路由器和直连交换机的效果是差不多的,只不过路由器会一个单独的网段,而交换机的网段和宽带分配的网段是一样的。也就是一个是以路由器为中心的局域网,一个是以宽带为中心的局域网。
VMwear 设置
打开VMware Workstation Pro 的虚拟机-> 设置
在虚拟机设置中,将网络适配器修改为桥接模式,点击确定。
查看Ubuntu 虚拟机IP
打开Ubuntu18 系统,执行ifconfig 查看Ubuntu 的网络信息。这里可以看到Ubuntu 自动分配到的IP 是192.168.1.208。
查看Windows 主机IP
在Windows 端按下win + R 快捷键打开运行栏,输入cmd 指令后按下回车。
在打开的终端中输入ipconfig 指令,查看电脑的IP。
ipconfig
查看开发板IP
将直通网线的一端接在正点原子STM32MP157 开发板的网口,另一端接在路由器的LAN
网口。启动开发板,在串口终端输入ifconfig 指令来查询开发板是获取到路由器分配的IP。这里可以看到开发板IP 为192.168.1.7。
ifconfig
ping 测试
在ping 测试之前要关闭Windows 和Ubuntu 的防火墙。
综合上述,这里笔者的IP 如下。
Windows 主机IP:192.168.1.158
Ubuntu 虚拟机IP:192.168.1.208
开发板IP:192.168.1.7
测试开发板和Ubuntu、Windows 互ping。
开发板ping 虚拟机Ubuntu 的IP:
ping 192.168.1.208
开发板ping 外网。
ping www.baidu.com
开发板ping 主机Windows。
ping 192.168.1.158
Ubuntu 虚拟机ping 开发板IP
ping 192.168.1.7
Ubuntu 虚拟机ping 外网。
ping www.baidu.com
Ubuntu 虚拟机ping 主机Windows。
ping 192.168.1.158
Windows 主机ping 开发板。
ping 192.168.1.7
Windows 主机ping 虚拟机Ubuntu。
ping 192.168.1.208
以上就是开发板、Ubuntu 和Windows 三者互ping 测试,在开发板uboot 阶段设置完开发板IP 相关的信息后,也能ping 虚拟机Ubuntu。
setenv ipaddr 192.168.1.7
setenv ethaddr 00:04:9f:04:d2:35
setenv gatewayip 192.168.1.1
setenv netmask 255.255.255.0
setenv serverip 192.168.1.208
saveenv
设置完后验证是否开发板ping 通虚拟机。
ping 192.168.1.208
在这里插入图片描述
uboot 阶段时,Ubuntu 虚拟机ping 开发板是没有反馈的。按照上述完成测试后,就可以使用TFTP 和NFS 来挂载内核、设备树和文件系统。
小结
防火墙设置:关闭电脑和虚拟机的防火墙。
网络连接:开发板网口和电脑网口都通过网线直接连到同个路由器。
VMware 设置:设置网络适配器桥接模式,虚拟网络编辑器还原默认设置。
Ubuntu 设置:设置网络连接模式为自动(DHCP)。
Windows 设置:设置以太网TCP/IPv4 属性为自动获取IP 地址。
开发板设置:出厂系统默认会自动获取IP,没有这个功能的话可以执行以下指令获取IP。
ifconfig eth0 up
udhcpc -i eth0
电脑WiFi 上网,开发板和电脑直连
准备工作
使用场景:路由器离电脑比较远,只有一条网线。
设备:电脑(Windows)、正点原子STM32MP157 开发板(出厂系统)、路由器/交换机、直通网线。如果是台式机没有无线网卡的话,可以使用随身WIFI 或者正点原子的USB 转WIFI模块来让电脑连接到WiFi。
网络拓扑结构:电脑使用无线网卡上网,电脑的以太网口直连开发板网口。
VMware 设置
打开VMware Workstation Pro 里的虚拟机-> 设置
在虚拟机设置中,将网络适配器修改为桥接模式,点击确定。
因为电脑是WiFi 上网,所以需要添加一个网络适配器并设置成NAT 模式,供虚拟机上网。具体操作如下图所示。
默认添加的网络适配器是NAT 模式的,如果不是NAT 模式则要手动设置成NAT 模式。
打开菜单栏的编辑-> 虚拟网络编辑器。
点击虚拟网络编辑器的更改设置选项。
这个需要电脑管理员权限,如果有提示用户账户控制的提示框,点击是就可以了。
重新打开虚拟网络编辑器,可以看到如下界面。
开发板是直连到电脑的网口的,所以需要虚拟网络编辑器里的网络适配器1(即VMnet0)桥接到有线网卡上,如下图所示。
设置完成后点击确定,再点击应用即可。
如果虚拟机之前设置过网络的相关信息,自己却搞混了,不清楚现在虚拟机网络的设置情况(虚拟网络情况复杂),可以点击虚拟网络编辑器左下方的还原默认设置。
这里会提示我们是否恢复到默认网络设置,点击是即可。
恢复到默认网络设置后如下图所示,全部的VMnet 子网地址会重新随机分配。
这时候就可以按照之前的步骤来设置网络适配器桥接到有线网卡,最终设置成如下。
Ubuntu 设置
启动虚拟机,执行ifconfig 指令查询IP 信息。
ifconfig
网络ens33 是我们的桥接网络,需要手动设置IP。网络ens38 是虚拟机NAT 模式连接到
Windows 的网络,有这个网络Ubuntu 就能和Windows 正常通行和上网。
先测下Ubuntu 上网功能,ping 下百度。
ping www.baidu.com
测试Ubuntu 和Windows 互传之前,要关闭Ubuntu 和Windows 的防火墙。
使用Filezilla 软件验证Ubuntu 和Windows 文件互传,依次打开文件-> 站点管理器。
根据虚拟机的信息,设置站点,如下图所示。
设置完后连接站点服务器,即可加载Ubuntu 和Windows 的目录,可以实现文件互传。
现在要做的就是设置桥接模式的网络适配器1(ens33)的IP 信息。网络适配器1 用于和
Windows 和开发板通信,所以我们要先看下Windows 主机的用于桥接网络的IP。
查看Windows 主机的IP:在Windows 端按下win + R 快捷键打开运行栏,输入cmd 指令后按下回车。
在打开的终端中输入ipconfig 指令,查看电脑的IP。
ipconfig
可以看到Windows 主机的网络比较复杂,这里我们只截取可能用到的信息。根据Windows
的ipconfig 指令和Ubuntu 虚拟网络编辑器,可以对应到以下表格。
在Windows 终端没有看到VMnet0,在虚拟网络编辑器中可以看到。这是我们用来桥接的网络适配器,不会自动分配IP,需要手动设置。这里要注意,VMnet0 设置的网段不能和VMnet1、
VMnet8 的网段一样,不然会有冲突。
我们需要手动设置Ubuntu 中桥接网络的IP。
回到Ubuntu 中,按如下步骤设置VMnet0(ens33)的IP 信息。
在终端中执行ifconfig 指令查看ens33 的信息。
ifconfig
如果设置完成后,虚拟机不能上网的话,可以参考附录5.3 小节的解决方案。
Windows 设置
设置完Ubuntu 的VMnet0 后,再设置Windows 的以太网IP 的相关信息。
在Windows 主机打开控制面板-> 网络和Internet -> 网络和共享中心-> 更改适配器设置,找到以太网。
此时以太网显示未识别的网络,我们需要手动设置IP 信息。如果以太网显示网络电缆被拔出,请用网线将电脑网口和开发板网口连接起来,开发板上电启动系统。
选择以太网,右键打开菜单栏,选择属性。在打开的网络设置中,双击Internet 协议版本4
(TCP/IPv4),如下图所示。
按照下图设置以太网的IP 为192.168.10.200,要和虚拟机的VMnet0 在同一网段。
开发板设置
接下来设置下开发板的IP。这里我们将开发板IP 设置为192.168.10.50,和VMnet0 在同一网段即可。
进入开发板文件系统,设置开发板IP。
ifconfig eth0 up
ifconfig eth0 192.168.10.50
ifconfig
ping 测试
到这里,我们总结下Ubuntu、Windows 和开发板桥接网络的IP 信息。
Ubuntu 虚拟机IP:192.168.10.100
电脑网口的IP:192.168.10.200
开发板IP 地址:192.168.10.50
开发板ping 虚拟机Ubuntu 的IP,
ping 192.168.10.100
开发板ping 主机Windows 的IP。
ping 192.168.10.200
Ubuntu 虚拟机ping 开发板的IP。
ping 192.168.10.50
Windows 主机ping 开发板。
ping 192.168.10.50
以上步骤是结合开发板的出厂文件系统进行的,在uboot 命令行中要ping 虚拟机的话还需要设置uboot 的网络环境变量。进入uboot 命令行中,参考如下设置环境变量,最后ping 虚拟机Ubuntu 的IP 测试下。
setenv ipaddr 192.168.10.50
setenv ethaddr 00:04:9f:04:d2:35
setenv gatewayip 192.168.10.1
setenv netmask 255.255.255.0
setenv serverip 192.168.10.100
saveenv
设置完后验证是否开发板ping 通虚拟机。
ping 192.168.10.100
uboot 阶段时,Ubuntu 虚拟机ping 开发板是没有反馈的。按照上述完成测试后,就可以使用TFTP 和NFS 来挂载内核、设备树和文件系统。
小结
防火墙设置:关闭电脑和虚拟机的防火墙。
网络连接:电脑使用无线上网,开发板网口直连电脑网口。
VMwear 设置:设置网络适配器为桥接模式;添加一个网络适配器2 为NAT 模式。
Ubuntu 设置:设置NAT 模式的网络适配器为自动获取模式(DHCP);手动设置桥接模式的网络适配器的IP 信息。
Windows 设置:手动设置以太网TCP/IPv4 属性中的IP 信息。
开发板设置:手动设置开发板的IP 信息。
注意:Ubuntu 里桥接模式的网络适配器、电脑的以太网、开发板的网口,三者要在同一网段,且不能与NAT 模式的网络适配器、虚拟机子网在同一网段。Windows 和Ubuntu 通过NAT模式的网络适配器通信。
电脑只有无线网卡
准备工作
使用场景:一般电脑都是有一个以太网网口的,但是一些超薄本、商务本电脑没有以太网网口,这样并不方便我们的开发。我们可以使用USB 转网口设备来给电脑拓展出一个以太网网口,因为开发板必选通过有线的方式连接到电脑上。USB 转网口设备如下图所示。
这里要说明下,有些USB 转网口遇到无法免驱使用、校园网使用异常、使用后电脑无法上网等问题,可以向购买的店家咨询下相关问题,尽量选择有品牌、销量好的产品。比如本文档使用的就是绿联的USB 转网口。
设备:电脑(Windows)、正点原子Linux 开发板(出厂系统)、直通网线、USB 转网口。
网络拓扑结构:
VMware 设置
打开VMware Workstation Pro 里的虚拟机-> 设置
设置网络适配器为桥接模式。
因为电脑是WIFI 上网,所以需要添加一个网络适配器并设置成NAT 模式,供虚拟机上网。具体操作如下图所示。
默认添加的网络适配器是NAT 模式的,如果不是NAT 模式则要手动设置成NAT 模式。
打开菜单栏的编辑-> 虚拟网络编辑器。
点击虚拟网络编辑器的更改设置选项。
这个需要电脑管理员权限,如果有提示用户账户控制的提示框,点击是就可以了。
点击虚拟网络编辑器左下角的还原默认设置,将虚拟机网络复原到默认设置。
开发板是直连到电脑的网口的,所以需要虚拟网络编辑器里的网络适配器1(即VMnet0)桥接到有线网卡上。但是电脑网口已经被宽带占用了,我们要用到USB 转网口来拓展一个网口。这里先不接USB 转网口,打开VMnet0 的桥接模式设置,可以看到可以桥接的选项。
此时我们需要关闭虚拟网络编辑器,再接入USB 转网口,再打开虚拟网络编辑器中VMnet0
的桥接选项,记住一定要重新打开虚拟网络编辑器,可以看到多了一个USB2.0 的桥接选项,这个就是我们的USB 转网口。(注:不同的USB 转网口设备名不同。以带USB 字符的为准。)
以上步骤是在没开启Ubuntu 虚拟机前操作的,如果用户此时电脑在运行Ubuntu 虚拟机,则会弹出USB 设备连接提示,这里注意要点连接到主机(也就是连接到Windows)。
如果没有USB 设备连接提示,请按如图所示检查USB 转网口设备的连接状态,不要让设备连接到虚拟机。
如果勾选了连接,点击取消断开连接。(虚拟机可能默认将设备接入到Ubuntu 中,所以要检查下)我们需要将USB 转网口接在Windows 主机端。接入主机后,在Windows 主机的设备管理器-> 网络适配器里也可以看到我们这个USB 转网口的设备。
如果没有识别到,可能设备驱动有问题,请咨询下商家。
回到虚拟网络编辑器中,将VMnet0 桥接到USB 转网口,如下图所示。
用直通网线将开发板和USB 转网口设备的网口端连接,开发板上电。设置完成后,进入虚拟机Ubuntu 系统进行网络设置,方法和1.4.3 小节的一样,按住ctrl 键点击这里跳转到1.4.3 小节。
在写文档时,笔者用的USB 转网口设备是接在Windows 下使用才正常的,但有些用户反馈按照文档的方法不成功。经过远程调试后发现要接到Ubuntu 系统下才能成功,所以如果用户在按照文档1.5 小节的方法挂载USB 转网口设备到Windows 系统后不能成功搭建网络环境,建议把USB 转网口设备挂载到Ubuntu 下再搭建。
常见问题
不存在虚拟网卡VMnet1 和VMnet8
正常来说,我们构建完虚拟机后,在“控制面板\网络和Internet\网络连接”界面可以看到
VMnet1 和VMnet8 两个虚拟网卡,如下图所示。
解决思路:
卸载干净VMware,重新安装VMware。
安装VMware 过程中如果提示VMCI 相关错误,如下图报错信息:
解决方法可以参考下百度上的思路,把报错信息输入到百度中查找。可以参考下这个帖子:
https://tieba.baidu.com/p/6031541992驱动有问题话,可以用驱动精灵更新下驱动试下。
还有一个可能就是VMware 版本太高了,可以去VMware 官网下载VMware14 或者
VMware12 版本的软件试下。
双网卡虚拟机无法上网
在1.4 小节我们设置了虚拟机双网卡,按照前面的配置,vmnet0 是桥接网卡,vmnet8 是
NAT 网卡。如果按照前面的配置,重启后出现虚拟机无法上网的情况,可以参考下面来检查下。
只保留NAT 网卡就可以上网
如果使用双网卡配置无法上网,可以试下把桥接网卡关闭,只保留NAT 网卡,然后虚拟机
ping 百度测试看下,可以多ping 几次测试。
那么问题就可能出在ubuntu 网卡优先级上,可以尝试参考下面链接的方法来设置两个网卡的优先级。在修改文件前,可以先拷贝一份要修改的文件做备份,或者做系统快照,以防操作失误。
参考链接:https://www.cnblogs.com/louby/p/10839187.html
主要就是删除默认的有线网关,添加wifi IP 为默认地址,修改完成后重新打开这两个网卡。
只保留NAT 网卡也无法上网
参考1.4 小节的步骤,检查NAT 网卡设置、关闭电脑和虚拟机防火墙、DNS 等相关问题。如果电脑是直连网线上网的,虚拟机无法自动获取IP,可以尝试手动设置IP(和电脑IP 在同一网段,且不与其他IP 冲突),DNS 设置为114.114.114.114 或者8.8.8.8。或者尝试使用虚拟机网络编辑的还原默认配置。