玩转mini2440开发板之【使用nfs无法启动的问题(Virtualbox桥接网络)】
今天晚上研究了一下如何通過super-vivi來使用nfs網絡文件系統來啟動mini2440開發板,一開始一直無法成功,折騰了半天總算搞定了,總結一下:
1、首先,介紹一下我的開發環境。
- 物理機:win10;
- 虛擬機:ubuntu 12.04;
- 模擬器:virtualbox 5.20;
我的步驟是,按照用戶手冊的說明,先用super-vivi引導系統,輸入q進入命令行模式,然后輸入nfs啟動命令(如下),最后輸入boot啟動系統。
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"但是,系統始終無法啟動。每次都提示:
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中最關鍵的地方就是”rpcbind: server 192.168.100.108 not responding, timed out“這句話了。它的意思就是,開發板嘗試通過局域網連接到目標系統的nfs,但是目標無響應,超時了。這就意味著,要么就是ubuntu系統的nfs沒有掛載成功,要么就是開發板沒有連入局域網,要么就是ubuntu系統沒有連入局域網。于是一個一個來排查吧。
2、首先排查第一個問題,確認一下ubuntu的nfs文件系統是否掛載成功了。這個問題,可直接參考我的另一篇博客(如何在ubuntu 12.04系統下開啟nfs網絡文件系統)中提到的第5點。我確認了我的系統,沒有問題。
3、然后排查第二個問題,確認一下mini2440開發板是否成功連入局域網。可參見我的另一篇博客(mini2440開發板linux系統下的網絡參數設置)中的第3點。我確認了我的開發板,沒有問題。
4、上述兩個方面都驗證過了,都沒問題,那問題肯定就出在第3個方面了。也就是說,是ubuntu系統沒有連入到局域網中,導致開發板無法接入到nfs文件系統。換句話說,就是ubuntu系統和mini2440開發板并沒有處于同一個局域網中。
一開始我意識到這一點時,我還懷疑是不是因為我的筆記本沒有使用網線,而用的是無線網絡。所以我把筆記本的無線網卡禁用掉,然后特地找了一根網線來試試。結果仍然一樣。這就證明跟無線/有線并沒有什么關系,應該是其他方面的問題。
然后我就去網上查閱各位大神的博客、論壇等。偶然間看到一篇文章里提到了virtualbox下的虛擬機網絡模式配置,提到了橋接模式和ip地址設置,不然無法上網。我立馬靈光一閃,感覺可能跟我的虛擬機網絡模式和ip地址配置有點關系。
因為我在這之前只是確認了一下物理機的ip地址是192.168.100.108,然后就簡單的以為我的虛擬機也是這個ip地址,然后就把這個ip地址寫入到nfs的啟動參數中,配置給mini2440。但是,物理機和虛擬機的IP地址是不一樣的。我的nfs目錄是掛載在虛擬機ubuntu的系統下,而不是物理機win10的系統下。因此我需要獲取到虛擬機ubuntu系統的ip地址。可是此時在ubuntu系統下運行ifconfig命令時,得到的ip地址信息卻是127.0.0.1之類的信息。這顯然是不對的!而且,此時從虛擬機ping物理機是OK的,但是從物理機ping虛擬機是失敗的,這樣肯定是無法從外面掛載虛擬機里的nfs文件系統的。那該怎么辦呢?
5、這就要回到virtualbox的網絡模式的配置問題上面了。如下圖,將virtualbox的網卡模式設置為橋接模式(至于具體原因,請自行百度)。
6、重新啟動虛擬機,輸入ifconfig命令查詢,發現其ip地址變成了:
leon@Ubuntu:~$ ifconfig eth3 Link encap:以太網 硬件地址 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 躍點數:1接收數據包:242 錯誤:0 丟棄:0 過載:0 幀數:0發送數據包:126 錯誤:0 丟棄:0 過載:0 載波:0碰撞:0 發送隊列長度:1000 接收字節:42431 (42.4 KB) 發送字節:17387 (17.3 KB)lo Link encap:本地環回 inet 地址:127.0.0.1 掩碼:255.0.0.0inet6 地址: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:65536 躍點數:1接收數據包:24 錯誤:0 丟棄:0 過載:0 幀數:0發送數據包:24 錯誤:0 丟棄:0 過載:0 載波:0碰撞:0 發送隊列長度:0 接收字節:3519 (3.5 KB) 發送字節:3519 (3.5 KB)這就說明修改成功了。此時的虛擬機已經跟物理機一樣并存于局域網中了,它的ip地址,就可以直接提供給mini2440使用了。
7、于是,將此時的虛擬機的ip地址,錄入到mini2440的nfs啟動參數中:
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、開發板和目標系統一定要處于同一個局域網下。當然,所謂同一個局域網,可以是通過有線的網線連入同一個路由器,也可以是通過無線網卡連入同一個路由器。但是一定要保證二者的IP地址處于同一個網段,網關和掩碼也是一樣的。
2、nfs文件系統如果搭建于虛擬機下,則一定要將虛擬機的網絡模式設置為橋接模式,否則虛擬機將無法滿足上述第一點。
總結
以上是生活随笔為你收集整理的玩转mini2440开发板之【使用nfs无法启动的问题(Virtualbox桥接网络)】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 115网盘礼包码
- 下一篇: vi/vim常用命令总结参考图