0 适用情况
我们在进行嵌入式linux开发时,常常会搭建一个网络环境进行文件的快速互传、nfs挂载、linux内核与板子隔离等等操作。通常情况下,我们使用VMware创建虚拟机,然后分别将开发板和主机连在同一个网段内,使用tftp服务实现上述功能。但有时候你会遇到一个棘手的问题:只有一个网孔,没有多余的网孔给板子插网线(这时候还能干嘛?那当然是放弃),算了算了,要恰饭得嘛,还是想想办法吧。
当你置于下面的境地时,则可以使用我这个方法实现虚拟机、主机、板子相互ping通。
① 你所在房间因为种种原因只有一个网孔。
② 只有一根网线。
③ 网络是专用的网络,必须要分配专门的ip才能相互ping通。
1 具体方法
1.1 我所使用的“原材料”
① 硬件: 计算机、开发板、一根网线、一根usb串口线
② 软件:
VMware:
链接:https://pan.baidu.com/s/1Ap4oUi1t5gmn1pVMh8fg3g
提取码:vig7
MobaXterm:
链接:https://pan.baidu.com/s/1K1U8G4FD4eKL95fQnctUtg
提取码:b9el
1.2 硬件连接
① 将网线一段接在计算机上,另一端接在开发板上,主要用于传输数据和挂载文件系统。你没听错,既然没有多余的网口,既然不能通过路由连接,那就直接连接吧。
② 串口一端连接板子,另一端主机,主要用于终端命令和打印结果。
1.3 软件设置
① 首先打开vm,将虚拟机的网络适配器设置为“桥接模式”。
② 打开本机cmd,查看本机ip地址,记下ip地址192.168.a.b1
③ 打开虚拟机,打开终端输入以下命令将虚拟机ip地址设置到和主机同一个网段(ens33是虚拟机的网卡,不同系统网卡名字可能不同):
更改ip:ifconfig ens33 192.168.a.b2
再次查看ip,已经改到相同网段了
④ 将板子的串口连接到主机上,使用MobaXterm打开,控制板子。设置ip地址(和主机虚拟机都在同一个网关192.168.a.b3)、网关地址、mac。如果板子还没有linux系统就在boot程序里面设置tftp的功能,将服务器地址设置为虚拟机的地址,将linux镜像文件和设备树放在虚拟机里指定文件,这样就可以启动板子了,所有的boot应该都有这个功能。如果板子已经有linux系统了,就直接开机,进行ip地址的更改,方法和③类似。
2 结果描述
可以看到按照1中方法,我们的板子和主机和虚拟机两两都能互通了(记得关防火墙)!
①板子ping主机、主机ping板子
② 板子ping虚拟机、虚拟机ping板子
③ 主机ping虚拟机、虚拟机ping主机
这样设置之后,主机、虚拟机、板子之间互传文件就方便多了,可以很方便的进行开发。但牺牲就是虚拟机不能上网,主机可以连wifi上网。如果虚拟机想要下载什么工具的话,就将虚拟机网络适配器设置为nat连接,下载安装好后,在重复上述过程,没办法,在条件有限的情况下只能这样子了。