今個真高興啊(真的不容易啊),Tiny6410 終於可以通過 NFS 起根文件系統了,那個 Linux 系統總算跑起來了(相對 initramfs 起根文件系統就是好用)!
今天完美解決了:nfs: server 192.168.1.111 not responding, still trying 這個問題(後面有解決方法在步驟 7 中有詳細的說明,說白了就是設置好 bootargs 這個 UBoot 環境變量,其實是很簡單的)!
1、需要的實驗器材(怎麼感覺像是做實驗的,呵呵~~)
1)友善之臂提供的 NFS 文件系統(廠家提供的光盤裏都有)。
2)友善之臂提供的 Linux2.6.38 這個源碼。
3)RHEL5 虛擬機(當然裏面得有必須的交叉工具鏈、NFS 工具等)。
4)超級終端軟件。
5)Tiny6410 開發板!
2、實驗步驟
關於如何解壓文件啊之類的,這個完全自行就可以解決,我這裏只是說操作部分!
1)編譯 /etc/exports 文件,設置共享目錄。
2)啓動 nfs 服務!
3)進入 Linux2.6.38 內核文件,拷貝廠商提供的 config 文件到主目錄的 .config 文件。
4)直接 make menuconfig,由於廠商都已經做好了,所以這裏就兩點需要更改的,首先是取消 initramfs(這個在 General Setup 裏面),然後選中 NFS(這個貌似在 File System -> NetWork File System 裏面)!
5)然後執行命令編譯!
6)編譯完成後,找到文件,放到 /tftpboot 目錄下。
7)從 NandFlash 啓動 Tiny6410,然後修改 UBoot 的環境變量 bootargs(就是這裏了,可以解決一開始文章的 not responding 的問題)!
首先呢,我用紅色的橫槓畫出了空格的地方!然後就是其中的意思了:
console=ttySAC0 ttySAC0 作爲控制檯
root=dev/nfs 固定格式,表示內核採用 nfs 方式起根文件系統
nfsroot=192.168.1.111:nfs/rootfs_qtopia_qt4
表示的是 nfs 起的根文件系統位於 nfs 服務器 /nfs/rootfs_qtopia_qt4
目錄下,我的虛擬機的 IP 爲:192.168.1.111
,proto=tcp,nfsvers=3,nolock 如果不加這條語句會造成上面的 nfs: server 192.168.1.111
not responding, still trying 這樣的錯誤!
原因:NFS 的默認傳輸協議是 UDP,而PC機與嵌入式系統通過UPD交互時就會出現嚴重的網卡丟包現象(這個也只是暫時的分析)!貌似好多人都說是網卡移植出現的問題!具體我也就不知道了,反正寫上這個,然後就沒有問題了!
ip=192.168.1.113:192.168.1.111:192.168.1.1:250.250.250.0:_Justin:eth0:off
這句話的格式是:ip=IP1:IP0:IP2:IP3:nameofyoulike:eth0:off
第一項(IP1)是目標板的臨時IP(注意不要和局域網內其它的IP有衝突)
第二項(IP0)是我的虛擬機的IP
第三項(IP2)是目標板上網管(GW)的設置,這個參數設置跟虛擬機網管一致
第四項(IP3)是子網掩碼
第五項(yourname)是開發板的名字(隨便啦)
第六項(eth0)是網卡設備的名字
8)通過 tftp 下載位於虛擬機 /tftpboot 目錄下的 uImage 文件到 0x50000000 處!
9)bootm 吧~~
10)等待查看,按提示按下 Enter!
到這裏就可以完美的在 Tiny6410 上用 NFS 起根文件系統了!!!!