利用uboot下載引導Kernel(TFTP)以及掛載網絡Rootfs(NFS)


背景:

  在嵌入式開發中,經常需要對系統的各個部分進行修改。倘若每次修改都燒寫到板子中,一來浪費時間,其次影響存儲介質壽命。

  所以,需要一些手段來避免此類問題。

概覽:

  1. 編譯uboot

  2. 將uboot寫入SD卡,並通過硬件設置從sd卡啟動uboot程序

  3. 編譯kernel,設置其可以通過NFS掛載根文件系統

  4. 開發環境安裝TFTP服務器、NFS服務器

  5. 目標環境設置uboot參數,並進行測試

  6. 制作根文件系統(optional)

  7. 將uboot參數改回,燒寫各部分到板子上

第2步不一定是用sd卡,根據硬件特性的差異決定,也可以考慮將uboot寫入板子中,再進行此后的操作。

在這里我們重點介紹第三步以及第五步。其他步驟請參考其他資料。第三步以修改bootcmd為主,第五步以修改bootargs為主。

 

設置uboot,使其通過下載並引導內核

1.確保配置好了tftp服務器,並在tftp服務器指定的根目錄下存放kernel鏡像

2.明白鏡像的運行地址位於何處(第三步中需要用到)

3.在uboot的下載模式中,設置bootcmd

setenv bootcmd 'tftp 0x42000000 kernel;bootm 0x42000000'
saveenv

 

嵌入式系統Linux內核對nfs文件系統的支持:

這里只做簡單的介紹,具體細節可以參考:《配置uboot指定nfs掛載根文件系統

1.進入內核配置頁,根據以下參數進行配置

-> Networking support
   -> Networking options
     [*]  IP: kernel level autoconfiguration
​
-> File systems
   [*] Network File Systems
     <*>  NFS client support
     <*>   NFS client support for NFS version 3
     [*]    NFS client support for the NFSv3 ACL protocol extension
     [*]  Root file system on NFS

 

 

2.uboot修改bootargs(最好是備份好bootargs) 添加下划線部分*其中的ip根據自己的實際情況進行修改

setenv bootargs 'root=/dev/nfs nfsroot=${serverip}:/xxx/fs,v3,tcp rw ip=${ipaddr}:${serverip}:${gatewayip}:${netmask} ::eth0:on init=/linuxrc console=ttyAMA0,115200'
saveenv

 

 

這樣一來,調試就非常方便而且高效了。

改編自:《Tiny210v2( S5PV210 )平台下: 利用uboot啟動遠程Kernel(TFTP)以及掛載遠程ROOTFS(NFS)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM