02-開發板有線鏈接PC機時與虛擬機三者ping通的問題

 在剛開始學習嵌入式入島的最大的問題就是開發板、PC機、虛擬機三者之間如何ping通的問題。首先須要瞭解在vmware中設置Linux鏈接網絡的方法。linux

網路鏈接屬性 意義
bridged(橋接模式) 鏈接vmnet0虛擬交換機,此時虛擬機至關於網絡上的一臺獨立計算機。與主機同樣,擁有一個IP。
NAT(網絡地址轉換模式) 使用VMnet8虛擬交換機,此時虛擬機能夠經過主機單向訪問其餘主機,而Vmnet8存在的意義實現主機和虛擬機之間的通訊。
host-only(主機模式) 使用VMnet1虛擬交換機,此時只能實現主機的VMnet1網卡和虛擬機之間的通訊。

02-開發板有線鏈接PC機時與虛擬機三者ping通的問題
02-開發板有線鏈接PC機時與虛擬機三者ping通的問題 02-開發板有線鏈接PC機時與虛擬機三者ping通的問題

1、經過路由器鏈接開發板與PC機ios

 經過這種方式鏈接是最容易實現的網上資料也不少,這裏再也不贅述。其鏈接原理圖可用下圖表示。
02-開發板有線鏈接PC機時與虛擬機三者ping通的問題
2、開發板與PC機直接相連
 有時,因爲路由器離咱們比較遠,而開發板沒法直接鏈接到路由器時,咱們會將開發板直接鏈接PC機,但此時就會出現不少的問題。此時我對如下3種狀況進行了分析。
02-開發板有線鏈接PC機時與虛擬機三者ping通的問題
一、開發板上有操做系統,虛擬機橋接模式選擇有線網卡
02-開發板有線鏈接PC機時與虛擬機三者ping通的問題
 在這種方式下須要開發板中有操做系統,此時開發板直接運行操做系統,而不是進入U-BOOT引導程序。此時三者的IP分別設置爲:服務器

設備 IP
開發板 192.168.2.10
主機 192.168.2.20
虛擬機 192.168.2.30

開發板ping pc機與虛擬機的結果:網絡

[root@EmbedSky /]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 10:23:45:67:89:AB  
          inet addr:192.168.2.10  Bcast:192.168.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:79 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:13824 (13.5 KiB)  TX bytes:770 (770.0 B)
          Interrupt:51 Base address:0x8000 

[root@EmbedSky /]# ping -c 5 192.168.2.20
PING 192.168.2.20 (192.168.2.20): 56 data bytes
64 bytes from 192.168.2.20: seq=0 ttl=128 time=1.374 ms
64 bytes from 192.168.2.20: seq=1 ttl=128 time=1.067 ms
64 bytes from 192.168.2.20: seq=2 ttl=128 time=1.044 ms
64 bytes from 192.168.2.20: seq=3 ttl=128 time=1.040 ms
64 bytes from 192.168.2.20: seq=4 ttl=128 time=1.045 ms

--- 192.168.2.20 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 1.040/1.114/1.374 ms

[root@EmbedSky /]# ping -c 5 192.168.2.30
PING 192.168.2.30 (192.168.2.30): 56 data bytes
64 bytes from 192.168.2.30: seq=0 ttl=64 time=2.467 ms
64 bytes from 192.168.2.30: seq=1 ttl=64 time=1.220 ms
64 bytes from 192.168.2.30: seq=2 ttl=64 time=1.050 ms
64 bytes from 192.168.2.30: seq=3 ttl=64 time=1.424 ms
64 bytes from 192.168.2.30: seq=4 ttl=64 time=1.408 ms

--- 192.168.2.30 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 1.050/1.513/2.467 ms

二、開發板進入uboot引導程序,虛擬機橋接模式選擇無線網卡ide

02-開發板有線鏈接PC機時與虛擬機三者ping通的問題

設備 IP
開發板 192.168.2.10,服務器IP爲192.168.2.20(PC機)
PC機 有線:192.168.2.20;無線 :192.168.155.2
虛擬機 192.168.155.3

 在這種模式下開發板和PC機之間二者能夠ping通,PC機和虛擬機二者之間能夠ping通,可是開發板沒法ping通虛擬機,那麼就沒法在開發板和虛擬機之間使用NFS傳輸文件。
開發板:oop

EmbedSky> printenv
bootargs=noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0
bootcmd=boot_zImage
bootdelay=0
baudrate=115200
ethaddr=0a:1b:2c:3d:4e:5f
netmask=255.255.255.0
ostype=linux
mtdids=nand0=nandflash0
mtdparts=mtdparts=nandflash0:256k@0(bios),128k(params),128k(toc),512k(eboot),1024k(logo),3m(kernel),-(root)
ipaddr=192.168.2.10
serverip=192.168.2.20
gatewayip=192.168.2.1
stdin=serial
stdout=serial
stderr=serial
partition=nand0,0
mtddevnum=0
mtddevname=bios

Environment size: 460/131068 bytes
EmbedSky> ping 192.168.2.20
dm9000 i/o: 0x20000300, id: 0x90000a46 
MAC: 0a:1b:2c:3d:4e:5f
host 192.168.2.20 is alive

PC機:
02-開發板有線鏈接PC機時與虛擬機三者ping通的問題
02-開發板有線鏈接PC機時與虛擬機三者ping通的問題學習

C:\Users\Administrator>ping 192.168.155.3
正在 Ping 192.168.155.3 具備 32 字節的數據:
來自 192.168.155.3 的回覆: 字節=32 時間<1ms TTL=64
來自 192.168.155.3 的回覆: 字節=32 時間<1ms TTL=64
來自 192.168.155.3 的回覆: 字節=32 時間<1ms TTL=64
來自 192.168.155.3 的回覆: 字節=32 時間<1ms TTL=64

192.168.155.3 的 Ping 統計信息:
    數據包: 已發送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),
往返行程的估計時間(以毫秒爲單位):
    最短 = 0ms,最長 = 0ms,平均 = 0ms

虛擬機:操作系統

book@www.100ask.org:~$ ping 192.168.155.2
PING 192.168.155.2 (192.168.155.2) 56(84) bytes of data.
64 bytes from 192.168.155.2: icmp_seq=1 ttl=128 time=0.596 ms
64 bytes from 192.168.155.2: icmp_seq=2 ttl=128 time=0.834 ms
64 bytes from 192.168.155.2: icmp_seq=3 ttl=128 time=0.665 ms
64 bytes from 192.168.155.2: icmp_seq=4 ttl=128 time=0.741 ms
^C
--- 192.168.155.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3021ms
rtt min/avg/max/mdev = 0.596/0.709/0.834/0.088 ms

三、開發板進入uboot引導程序,虛擬機橋接模式選擇有線網卡命令行

設備 IP
開發板 192.168.2.10,服務器IP爲192.168.2.20
PC機 有線:192.168.2.20;
虛擬機 192.168.2.30

 這種模式下,開發板與虛擬機之間能夠ping通,開發板與PC之間能夠ping通,可是PC機和虛擬機之間沒法ping通。要想解決PC機與虛擬機之間的ping同問題,能夠經過增長虛擬網卡的方式解決,即再增長一塊網卡選擇NAT模式鏈接PC機與虛擬機。
 此時還要注意的是,在虛擬機中使用命令行設置網卡IP時,有時會出現問題,我在作實驗時發現,若是僅命令行下設置使用ifconfig命令設置ip,當使用開發板pingPC機或虛擬機以後,虛擬機的IP有時會自動消失,所以建議在圖形界面下設置虛擬機的IP保存或者在/etc/network/interfaces文件中設置永久ip。
02-開發板有線鏈接PC機時與虛擬機三者ping通的問題
02-開發板有線鏈接PC機時與虛擬機三者ping通的問題
02-開發板有線鏈接PC機時與虛擬機三者ping通的問題3d

EmbedSky> ping 192.168.2.20            #開發板ping通PC機
dm9000 i/o: 0x20000300, id: 0x90000a46 
MAC: 0a:1b:2c:3d:4e:5f
host 192.168.2.20 is alive                   #開發板ping通虛擬機
EmbedSky> ping 192.168.2.30
dm9000 i/o: 0x20000300, id: 0x90000a46 
MAC: 0a:1b:2c:3d:4e:5f
host 192.168.2.30 is alive
EmbedSky> printenv
bootargs=noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0
bootcmd=boot_zImage
bootdelay=0
baudrate=115200
ethaddr=0a:1b:2c:3d:4e:5f
netmask=255.255.255.0
ostype=linux
mtdids=nand0=nandflash0
mtdparts=mtdparts=nandflash0:256k@0(bios),128k(params),128k(toc),512k(eboot),1024k(logo),3m(kernel),-(root)
ipaddr=192.168.2.10
stdin=serial
stdout=serial
stderr=serial
partition=nand0,0
mtddevnum=0
mtddevname=bios
serverip=192.168.2.30
gatewayip=192.168.2.1

Environment size: 460/131068 bytes

 對於以上的模式進行總結能夠發現,PC機與開發板不使用路由器,直接有網線鏈接會出現很是多的問題。對其總結能夠獲得以下的關係:
02-開發板有線鏈接PC機時與虛擬機三者ping通的問題
 爲了使開發板能同時ping通虛擬機與PC機、而PC機與虛擬機也能ping通,此時應該使用兩塊網卡,配置結果以下:
02-開發板有線鏈接PC機時與虛擬機三者ping通的問題
參數配置爲:
02-開發板有線鏈接PC機時與虛擬機三者ping通的問題

book@www.100ask.org:~$ ifconfig 
ens33     Link encap:Ethernet  HWaddr 00:0c:29:92:c0:85  
          inet addr:192.168.2.30  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe92:c085/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7 errors:0 dropped:0 overruns:0 frame:0
          TX packets:46 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:420 (420.0 B)  TX bytes:6834 (6.8 KB)

ens38     Link encap:Ethernet  HWaddr 00:0c:29:92:c0:8f  
          inet addr:192.168.3.30  Bcast:192.168.3.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe92:c08f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:15 errors:0 dropped:0 overruns:0 frame:0
          TX packets:32 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2491 (2.4 KB)  TX bytes:4494 (4.4 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:9388 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9388 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:694536 (694.5 KB)  TX bytes:694536 (694.5 KB)

 經過這種方式能夠達到開發板、PC機、虛擬機相互ping通的問題。
開發板:

EmbedSky> ping 192.168.2.20
dm9000 i/o: 0x20000300, id: 0x90000a46 
MAC: 0a:1b:2c:3d:4e:5f
host 192.168.2.20 is alive
EmbedSky> ping 192.168.2.30
dm9000 i/o: 0x20000300, id: 0x90000a46 
MAC: 0a:1b:2c:3d:4e:5f
host 192.168.2.30 is alive

PC機:

C:\Users\Administrator>ping 192.168.3.30         #PC機ping通虛擬機NAT卡網

正在 Ping 192.168.3.30 具備 32 字節的數據:
來自 192.168.3.30 的回覆: 字節=32 時間<1ms TTL=64
來自 192.168.3.30 的回覆: 字節=32 時間<1ms TTL=64
來自 192.168.3.30 的回覆: 字節=32 時間<1ms TTL=64
來自 192.168.3.30 的回覆: 字節=32 時間<1ms TTL=64

192.168.3.30 的 Ping 統計信息:
    數據包: 已發送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),
往返行程的估計時間(以毫秒爲單位):
    最短 = 0ms,最長 = 0ms,平均 = 0ms
相關文章
相關標籤/搜索