關於u-boot for tiny210 NFS起步Android根文件系統(by liukun321 咕唧咕唧)

tags:    時間:2013-12-15 01:10:35
關於u-boot for tiny210 NFS啟動Android根文件系統(by liukun321 咕唧咕唧)

         離開了8個月,總算回來了,再看看以前的東西,發現忘得都差不多了。這幾天看了一下信箱里的信,看到網友們的問題,發現憑我目前那點殘缺不全的記憶,很多問題都沒發一下回答。真的忘了很多東西。現在也正重新拾起開發板,做點恢復性訓練。有些網友的信已經發來幾個月了,現在才開始動手解決朋友們的問題,可能也沒什麼價值了。所以,我打算挑幾個經常出現的問題把解決方法寫成blog,興許還能幫到以後遇到這類問題的朋友。今天寫第一個,也是最簡單的一個:關於u-boot for tiny210 NFS啟動Android根文件系統。

         相信碰到這個問題的朋友大多數是因為NFS配置不正確(內核及伺服器部分配置不正確)。u-boot for tiny210網路部分已經完全沒問題了。只需要按下面的步驟就完全OK:

     假設我的根文件系統放在/nfsroot/rootfs_android 目錄下。

    1,配置好網路。這包括你的開發板uboot的ip和pc的ip地址要在同一個網段, 網關可以都不設置,如果設置兩者的網關要設成相同的。

    2、內核的配置:        File systems  --->   

                                                                      [*] Network File Systems  --->

                                                                                                          --- Network File Systems                                         
                                                                                                         <*>   NFS client support                                         
                                                                                                │ │    [*]     NFS client support for NFS version 3                       
                                                                                                │ │    [ ]       NFS client support for the NFSv3 ACL protocol extension
                                                                                                │ │    [ ]     NFS client support for NFS version 4 (EXPERIMENTAL)      
                                                                                                │ │    [*]     Root file system on NFS   

配置完后重新編譯。  

3、內核啟動參數

       如果你的內核配置了DHCP,內核會在啟動時會默認用DHCP獲取IP,使內核啟動到這一階段時ip被換掉,最終導致NFS掛載失敗,所以我們在寫內核啟動參數是要注意一下ip= 這個參數的寫法,具體格式介紹如下:

ip參數的格式如下:

ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>

client-ip:

你正在使用的這塊板子,你要為它設置的ip

server-ip:

提供nfs服務的伺服器的ip地址。如不需要NFS服務於板子,則此項可以空置

gw-ip:

網關的ip地址,如果nfs與目標板在同一個網段內,則此項可以空置

netmask:

子網掩碼,如此項為空,則子網掩碼為默認值255.255.255.0

hostname:

你希望給目標板設置的主機名,在linux的shell中的如bash,命令行最開始有一個形如 blacksword@laptop2:~ $ 這樣的一個提示符,blacksword指當前的用戶,而laptop2就是一個hostname.此項可以留空

device:

如果目標板上僅一個網卡,且只接了一個PHY,同時電路的設計沒有將PHY拉出兩個地址來,則此項為空。 如果不指有一個網卡,則可以指定要設置的ip地址是作用於哪一個網卡的。 如指定給第一塊網卡,則該參數為eth0. 第二塊為eth1,依此類推。

autoconf:

自動配置未明確指定參數的方式,可以是dhcp, rarp, bootp。如果不希望使用自動配置則可以使用off值來關閉  autoconf參數可以獨立作用於ip參數,如ip=dhcp即表示由dhcp伺服器給內核的ip參數提供所有數據。 ip=off則表示所有參數都不配置,留待系統啟動進行配置。

指定靜態ip的方法為 ip=<clinet-ip>::::eth0:off  請注意中間冒號的個數。其他各項可以根據自己的實際情況來指定相應的值。

下面是我的啟動參數:

CONFIG_CMDLINE="root=/dev/nfs nfsroot=192.168.186.30:/nfsroot/rootfs_android ip=192.168.186.13:192.168.186.30::255.255.255.0::eth0:off   rw   console=ttySAC0,115200 init=/linuxrc androidboot.console=s3c2410_serial0 mem=512M"

注意紅字部分,配置后禁用了DHCP。

3.pc伺服器端的配置

首先是nfs服務的配置文件: /etc/exports這個文件

內容:

/nfsroot/rootfs_android  192.168.186.*(rw,sync,no_root_squash)

當然內容要根據自己的pc配置,我只舉個例子。記得配置完后要重啟一下NFS服務  用下面命令即可

$service nfs restart

注意:遇到掛載失敗時,首先看一下網路是否是通的,再就是看一下許可權,如果用友善的根文件系統,要注意解壓時的許可權。

下圖是成功啟動后的列印信息:

1樓oxobbx昨天 13:46
大俠,能否把nand write.yaffs2那個命令的BUG修復下?nTFTP一個200M的文件系統,然後用nand write.yaffs2這個命令,一兩秒就顯示燒錄完成了,肯定有BUG啊
Re: liukun321昨天 16:24
回復oxobbxn好的,這幾天就弄。

推薦閱讀文章

Bookmark the permalink ,來源:互聯網