windows、虚拟机和ARM开发板3者互ping

嵌入式开发中常用的开发方式:windows上做实际开发,虚拟机上装Linux当服务器交叉编译程序, ARM开发板运行程序。通常三者连接时,会遇到各种问题,此文档就是从分析到实例解决该问题。

 更多详情,请访问http://www.100ask.org/


对于搞不懂桥接、Nat和only-host 三者区别的可以参考:

虚拟机VMware3种网络模式(桥接、nat、Host-only)

http://blog.csdn.net/tanhao199406/article/details/45603177

一、网络设置

        虚拟机我们通常采用的桥接,是网络设置的关键。最主要的问题,我们使用桥接方式时,ARM开发板、windows以及windows上的虚拟机上的Linux存在三者互ping不通的情况。

        在没有接ARM开发板的情况,windows连入网络使用的物理网卡是无线网卡,虚拟网卡桥接到无线网卡,IP地址与物理无线网卡同网段;windows连入网络使用的物理网卡是有线网卡,虚拟网卡桥接到线网卡,IP地址与物理有线网卡同网段。无论windows ping Linux,还是Linux ping windows 都不会存在互ping不通的情况。

        但当加入ARM开发板,情况就变得复杂,我们往往会出现windows 和 Linux之间可以互ping成功,但是却与ARM开发板无法互ping成功。其实我们只要抓住问题的本质就不会出现这些问题。在连接ARM开发板的情况下,我们必须先确定Linux与ARM开发板的网络物理连接方式。

ARM开发板是有线网卡的情况下:

1.  无路由器

1.1电脑和ARM开发板通过网线(双绞线)直接连接   (情况一)

Windows:有线网卡  需要手动设置本地IP地址

Linux:桥接到有线网卡  需要手动设置IP地址

ARM开发板、LinuxWindowsIP地址都必须在同一网段。

2.  有路由器

2.1  电脑和路由器无网线(双绞线)连接Windows通过无线网卡接到路由器ARM开发板和路由器通过网线(双绞线)连接(情况二)

Windows:无线网卡  不需要手动设置本地IP地址

Linux:桥接到无线网卡 不需要手动设置IP地址

ARM开发板、Linux都要和Windows的无线网卡的IP地址在同一网段。

2.2  电脑和路由器有网线(双绞线)连接,Windows通过无线网卡连接到路由器, ARM开发板和电脑通过双绞线连接(情况三)

Windows:无线网卡 需要手动设置本地IP地址

Linux:桥接到有线网卡 需要手动设置IP地址

ARM开发板、LinuxWindows的本地IP地址都必须在同一网段,但是必须要和Windows的无线网卡的IP地址不在同一网段。


2.3  电脑和路由器有网线(双绞线)连接,Windows通过无线网卡连接到路由器,ARM开发板和路由器通过双绞线连接(情况四)

A

Windows:无线网卡 需要手动设置本地IP地址

Linux:桥接到有线网卡 需要手动设置IP地址

B、

Windows:无线网卡 不需要手动设置本地IP地址

Linux:桥接到线网卡 需要手动设置IP地址

只要保证ARM开发板、Linux、Windows的无线网卡的IP地址和Windows的本地IP地址都在同一网段。

2.4   电脑和路由器有网线(双绞线)连接,Windows通过有线网卡连接到路由器, ARM开发板和路由器通过双绞线连接(情况五)

Windows:有线网卡 不需要手动设置本地IP地址

Linux:桥接到有线网卡需要手动设置IP地址

ARM开发板、Linux要和Windows的本地IP地址都在同一网段


二、关闭防火墙

1、关闭windows的防火墙

2、关闭Linux的防火墙



三、实例分析

以曾经我遇到的一个三者互ping不通的错误来作为实例来分析。

硬件:电脑连接无线,开发板通过网线和电脑连接

 

问题:

开发板 ping 电脑上的windows 失败

开发板 ping 虚拟机上的Linux  :  失败

虚拟机上的Linux  ping电脑上的Windows :成功

电脑上的Windows ping虚拟机上的Linux   :成功

 

其实最重要的一点我没有领悟,我们在使用开发板和电脑以网线连接、电脑同过无线连入网络时,此时如果我们想要三者互ping成功,此时我们的电脑使用的无线网卡没错,但是我们的ARM开发板和电脑建立的网络连接是连接到了PC机的有线网卡,因为ARM开发板用的是网线直接连接电脑,所以此时我们的虚拟机要和ARM开发板通信就必须通过PC机的有线网卡,我们虚拟机网络设置时应该选择有线网卡,并且还需要手动设置此时PC机的本地连接(有线网卡)的IP地址,即上面我们所提到的有路由的情况三。

解决方案:

A、 虚拟机的桥接模式中选择有线网卡

B、 在“本地连接”的“IPV4的属性”中手动配置IP(和电脑的无线网卡的IP处不同网段)

 

要点:电脑上的Windows连入无线网络使用无线网卡,虚拟机上的Linux必须使用有线网卡,手动设置本地IP地址

本例的连接方式属于上面的(情况三),所有设置为:

Windows:无线网卡 需要手动设置本地IP地址

Linux:桥接到有线网卡 需要手动设置IP地址

ARM开发板、LinuxWindows的本地IP地址都必须在同一网段,但是必须要和Windows的无线网卡的IP地址不在同一网段。

解决步骤:

1. 电脑的本地IP的设置

1.1 运行cmd.exe  ==》输入”config/all”命令 查看无线网卡的IP、DNS服务器地址记下

(我的是192.168.1.100, DNS服务器地址:114.114.114.114 和 101.226.4.6)

1.2 打开Windows的网络和共享中心 ==》更改适配器,进入如下界面

windows、虚拟机和ARM开发板3者互ping_第1张图片

1.3 打开VMnet1、WMnet8以及本地连接 三个的属性,勾上“VMware Bridge Protocol”选项,如下图:

windows、虚拟机和ARM开发板3者互ping_第2张图片

1.4 手动配置本地连接的IPv4,配置如下图:(是否需要配置请参考上面的分析,确定自己的属于那种连接方式,就可以确定是否需要设置

windows、虚拟机和ARM开发板3者互ping_第3张图片

   

注:

A、IP地址不要和上面查看的无线网卡获得的IP在同一个网段

例:我的无线网卡的IP为:192.160.1.100, 此时我的IP地址设置一定不能使192.168.1.0-192.168.1.255内的地址,我将IP 地址设为:192.168.0.112

B、 DNS服务器地址就是cmd 中运行 “ifconfig/all” 命令中的DNS服务后的东西。

2.   关掉防火墙  (自己百度)

3.   虚拟机上的Linux网络的设置

3.1  虚拟机上的“编辑” ==》“虚拟网络编辑器”

3.2  选择 “桥接模式” ==》 桥接到有线网卡(桥接到那个网卡请参考上面的分析,确定自己的属于那种连接方式,就可以确定桥接到那个网卡

windows、虚拟机和ARM开发板3者互ping_第4张图片

3.3  设置虚拟机上的Ubuntu的IP,照着下面的两种图设置:

windows、虚拟机和ARM开发板3者互ping_第5张图片

windows、虚拟机和ARM开发板3者互ping_第6张图片

 注:

A、上图中的Address : 必须和电脑Windows上“本地连接”手动设置的IP处同一网段

B、 上图中的Netmask:设置成255.255.255.0就行

C、 上图中的Getway: 设置成与Address同一网段的地址就行

D、上图中的DNS services:设置成114.114.114.144就行

E、 以后可以用   sudo ifconfig eth4192.168.0.111 的命令去设置了。

4.  开发板IP设置


注:

serverip 是虚拟机上的Linux设置的IP

ipaddr 是设置成和虚拟机上的Linux同网段的IP地址就可以。

此时所有的IP的情况:

A、 电脑Windows上的无线网卡的IP192.168.1.100

B、 电脑Windows上的有线网卡的IP192.168.0.112 (本地连接处设置的IP)

C、 虚拟机上的UbuntuIP192.168.1.0.111

D、 开发板上的IP192.168.0.230


注:

A、  对于在U-boot上操作的用户,你只能从开发板上ping通电脑上的Windows和虚拟机上的Ubuntu,电脑上的Windows和虚拟机上的Ubuntu是互ping不同的,并且SecureCRT以及Cuteftp这些工具都是无法使用的。

B、对于在挂在根文件系统后操作的用户,开发板、电脑上的Windows和虚拟机上的Ubuntu这三者是可以互ping成功的。如果是自动挂载的用户,记得修改根文件系统的/etc/init.d/rcS中的IP地址。

你可能感兴趣的:(嵌入式开发)