玩转mini2440开发板之【使用nfs无法启动的问题(Virtualbox桥接网络)】
今天晚上研究了一下如何通過super-vivi來使用nfs網(wǎng)絡(luò)文件系統(tǒng)來啟動mini2440開發(fā)板,一開始一直無法成功,折騰了半天總算搞定了,總結(jié)一下:
1、首先,介紹一下我的開發(fā)環(huán)境。
- 物理機:win10;
- 虛擬機:ubuntu 12.04;
- 模擬器:virtualbox 5.20;
我的步驟是,按照用戶手冊的說明,先用super-vivi引導(dǎo)系統(tǒng),輸入q進入命令行模式,然后輸入nfs啟動命令(如下),最后輸入boot啟動系統(tǒng)。
param set linux_cmd_line "console=ttySAC0 root=/dev/nfs nfsroot=192.168.100.108:/opt/FriendlyARM/mini2440/rootfs ip=192.168.100.230:192.168.100.108:192.168.100.1:255.255.255.0:sbc2440.arm9.net:eth0:off"但是,系統(tǒng)始終無法啟動。每次都提示:
Copy linux kernel from 0x00060000 to 0x30008000, size = 0x00500000 ... done zImage magic = 0x016f2818 Setup linux parameters at 0x30000100 linux command line is: "console=ttySAC0 root=/dev/nfs nfsroot=192.168.100.108:/opt/FriendlyARM/mini2440/rootfs ip=192.168.100.230:192.168.100.108:192.168.100.1:255.255.255.0:mini2440.arm9.net:eth0:off" MACH_TYPE = 1999 NOW, Booting Linux...... Uncompressing Linux................................................................................................................................................... done, booting the kernel. Linux version 2.6.32.2-FriendlyARM (root@LEON) (gcc version 4.4.3 (ctng-1.6.1) ) #1 Sat Jan 4 21:10:09 CST 2014.......【此處略去N個字】.........eth0: link down IP-Config: Complete:device=eth0, addr=192.168.100.230, mask=255.255.255.0, gw=192.168.100.1,host=mini2440, domain=, nis-domain=arm9.net,bootserver=192.168.100.108, rootserver=192.168.100.108, rootpath= Looking up port of RPC 100003/2 on 192.168.100.108 eth0: link up, 100Mbps, full-duplex, lpa 0x4DE1 rpcbind: server 192.168.100.108 not responding, timed out Root-NFS: Unable to get nfsd port number from server, using default Looking up port of RPC 100005/1 on 192.168.100.108 rpcbind: server 192.168.100.108 not responding, timed out Root-NFS: Unable to get mountd port number from server, using default Root-NFS: Server returned error -5 while mounting /opt/FriendlyARM/mini2440/rootfs VFS: Unable to mount root fs via NFS, trying floppy. VFS: Cannot open root device "nfs" or unknown-block(2,0) Please append a correct "root=" boot option; here are the available partitions: 1f00 256 mtdblock0 (driver?) 1f01 128 mtdblock1 (driver?) 1f02 5120 mtdblock2 (driver?) 1f03 60032 mtdblock3 (driver?) 1f04 65536 mtdblock4 (driver?) Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)可以看到,上述log中最關(guān)鍵的地方就是”rpcbind: server 192.168.100.108 not responding, timed out“這句話了。它的意思就是,開發(fā)板嘗試通過局域網(wǎng)連接到目標系統(tǒng)的nfs,但是目標無響應(yīng),超時了。這就意味著,要么就是ubuntu系統(tǒng)的nfs沒有掛載成功,要么就是開發(fā)板沒有連入局域網(wǎng),要么就是ubuntu系統(tǒng)沒有連入局域網(wǎng)。于是一個一個來排查吧。
2、首先排查第一個問題,確認一下ubuntu的nfs文件系統(tǒng)是否掛載成功了。這個問題,可直接參考我的另一篇博客(如何在ubuntu 12.04系統(tǒng)下開啟nfs網(wǎng)絡(luò)文件系統(tǒng))中提到的第5點。我確認了我的系統(tǒng),沒有問題。
3、然后排查第二個問題,確認一下mini2440開發(fā)板是否成功連入局域網(wǎng)。可參見我的另一篇博客(mini2440開發(fā)板linux系統(tǒng)下的網(wǎng)絡(luò)參數(shù)設(shè)置)中的第3點。我確認了我的開發(fā)板,沒有問題。
4、上述兩個方面都驗證過了,都沒問題,那問題肯定就出在第3個方面了。也就是說,是ubuntu系統(tǒng)沒有連入到局域網(wǎng)中,導(dǎo)致開發(fā)板無法接入到nfs文件系統(tǒng)。換句話說,就是ubuntu系統(tǒng)和mini2440開發(fā)板并沒有處于同一個局域網(wǎng)中。
一開始我意識到這一點時,我還懷疑是不是因為我的筆記本沒有使用網(wǎng)線,而用的是無線網(wǎng)絡(luò)。所以我把筆記本的無線網(wǎng)卡禁用掉,然后特地找了一根網(wǎng)線來試試。結(jié)果仍然一樣。這就證明跟無線/有線并沒有什么關(guān)系,應(yīng)該是其他方面的問題。
然后我就去網(wǎng)上查閱各位大神的博客、論壇等。偶然間看到一篇文章里提到了virtualbox下的虛擬機網(wǎng)絡(luò)模式配置,提到了橋接模式和ip地址設(shè)置,不然無法上網(wǎng)。我立馬靈光一閃,感覺可能跟我的虛擬機網(wǎng)絡(luò)模式和ip地址配置有點關(guān)系。
因為我在這之前只是確認了一下物理機的ip地址是192.168.100.108,然后就簡單的以為我的虛擬機也是這個ip地址,然后就把這個ip地址寫入到nfs的啟動參數(shù)中,配置給mini2440。但是,物理機和虛擬機的IP地址是不一樣的。我的nfs目錄是掛載在虛擬機ubuntu的系統(tǒng)下,而不是物理機win10的系統(tǒng)下。因此我需要獲取到虛擬機ubuntu系統(tǒng)的ip地址。可是此時在ubuntu系統(tǒng)下運行ifconfig命令時,得到的ip地址信息卻是127.0.0.1之類的信息。這顯然是不對的!而且,此時從虛擬機ping物理機是OK的,但是從物理機ping虛擬機是失敗的,這樣肯定是無法從外面掛載虛擬機里的nfs文件系統(tǒng)的。那該怎么辦呢?
5、這就要回到virtualbox的網(wǎng)絡(luò)模式的配置問題上面了。如下圖,將virtualbox的網(wǎng)卡模式設(shè)置為橋接模式(至于具體原因,請自行百度)。
6、重新啟動虛擬機,輸入ifconfig命令查詢,發(fā)現(xiàn)其ip地址變成了:
leon@Ubuntu:~$ ifconfig eth3 Link encap:以太網(wǎng) 硬件地址 08:00:27:ea:ba:41 inet 地址:192.168.100.104 廣播:192.168.100.255 掩碼:255.255.255.0inet6 地址: fe80::a00:27ff:feea:ba41/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 躍點數(shù):1接收數(shù)據(jù)包:242 錯誤:0 丟棄:0 過載:0 幀數(shù):0發(fā)送數(shù)據(jù)包:126 錯誤:0 丟棄:0 過載:0 載波:0碰撞:0 發(fā)送隊列長度:1000 接收字節(jié):42431 (42.4 KB) 發(fā)送字節(jié):17387 (17.3 KB)lo Link encap:本地環(huán)回 inet 地址:127.0.0.1 掩碼:255.0.0.0inet6 地址: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:65536 躍點數(shù):1接收數(shù)據(jù)包:24 錯誤:0 丟棄:0 過載:0 幀數(shù):0發(fā)送數(shù)據(jù)包:24 錯誤:0 丟棄:0 過載:0 載波:0碰撞:0 發(fā)送隊列長度:0 接收字節(jié):3519 (3.5 KB) 發(fā)送字節(jié):3519 (3.5 KB)這就說明修改成功了。此時的虛擬機已經(jīng)跟物理機一樣并存于局域網(wǎng)中了,它的ip地址,就可以直接提供給mini2440使用了。
7、于是,將此時的虛擬機的ip地址,錄入到mini2440的nfs啟動參數(shù)中:
param set linux_cmd_line "console=ttySAC0 root=/dev/nfs nfsroot=192.168.100.104:/opt/FriendlyARM/mini2440/rootfs ip=192.168.100.230:192.168.100.104:192.168.100.1:255.255.255.0:sbc2440.arm9.net:eth0:off"然后輸入boot,便可以看到mini2440成功啟動了!
Copy linux kernel from 0x00060000 to 0x30008000, size = 0x00500000 ... done zImage magic = 0x016f2818 Setup linux parameters at 0x30000100 linux command line is: "console=ttySAC0 root=/dev/nfs nfsroot=192.168.100.108:/opt/FriendlyARM/mini2440/rootfs ip=192.168.100.230:192.168.100.108:192.168.100.1:255.255.255.0:mini2440.arm9.net:eth0:off" MACH_TYPE = 1999 NOW, Booting Linux...... Uncompressing Linux................................................................................................................................................... done, booting the kernel. Linux version 2.6.32.2-FriendlyARM (root@LEON) (gcc version 4.4.3 (ctng-1.6.1) ) #1 Sat Jan 4 21:10:09 CST 2014................eth0: link down IP-Config: Complete:device=eth0, addr=192.168.100.230, mask=255.255.255.0, gw=192.168.100.1,host=mini2440, domain=, nis-domain=arm9.net,bootserver=192.168.100.104, rootserver=192.168.100.104, rootpath= Looking up port of RPC 100003/2 on 192.168.100.104 eth0: link up, 100Mbps, full-duplex, lpa 0x4DE1 Looking up port of RPC 100005/1 on 192.168.100.104 VFS: Mounted root (nfs filesystem) on device 0:11. Freeing init memory: 156K hwclock: settimeofday() failed: Invalid argumentTry to bring eth0 interface up......NFS root ...DonePlease press Enter to activate this console.8、哈哈,搞定,收工!
篇后語:
1、開發(fā)板和目標系統(tǒng)一定要處于同一個局域網(wǎng)下。當然,所謂同一個局域網(wǎng),可以是通過有線的網(wǎng)線連入同一個路由器,也可以是通過無線網(wǎng)卡連入同一個路由器。但是一定要保證二者的IP地址處于同一個網(wǎng)段,網(wǎng)關(guān)和掩碼也是一樣的。
2、nfs文件系統(tǒng)如果搭建于虛擬機下,則一定要將虛擬機的網(wǎng)絡(luò)模式設(shè)置為橋接模式,否則虛擬機將無法滿足上述第一點。
總結(jié)
以上是生活随笔為你收集整理的玩转mini2440开发板之【使用nfs无法启动的问题(Virtualbox桥接网络)】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 115网盘礼包码
- 下一篇: win10蓝屏0x00000001e怎么