摘要:在嵌入式Linux系統開發過程中,根文件系統是構建嵌入式Linux系統的重要組成部分。為了方便和簡化嵌入式Linux開發過程中的調試過程,主要研究了如何使用Busybox構建出基本的嵌入式Linux根文件系統,包括Busybox的配置、編譯和安裝。在此基礎上,進一步構建出基于NFS的嵌入式Linux根文件系統,并給出了啟動腳本和配置文件。這種根文件系統可以方便地在線更改、調試程序,降低了嵌入式系統的開發門檻。
關鍵詞:NFS; Busybox; 根文件系統; S3C2440; Linux
中圖分類號:TN91134; TP311文獻標識碼:A文章編號:1004373X(2012)04006503
Construction and research of embedded Linux NFS root file system
KANG Tianxia, ZHI Jianfeng
(Xi’an University of Science and Technology, Xi’an 710054, China)
Abstract: In the process of the embedded Linux system development, the root file system is an important part of building the embedded Linux system. In order to facilitate and simplify the debugging phase of embedded Linux development process, this paper mainly researches how to build a basic embedded Linux root file system with Busybox, including the configuration, installation and compilation of Busybox. On this base, the NFSbased embedded Linux root file system was built. The startup script and configuration file are given in this paper. This root file system can be easily changed and debugged online, and reduces the threshold of embedded systems development.
Keywords: NFS; Busybox; root file system; S3C2440; Linux
收稿日期:20110825隨著信息技術的發展,嵌入式系統技術已經廣泛應用于國防、通信、工業控制、消費電子等諸多領域。其中,Linux作為一款開源、成熟且高效穩定的多任務操作系統,先天具有許多不可比擬的優勢,已成為目前最具潛力的嵌入式操作系統。眾所周知,構建根文件系統對于嵌入式Linux開發至關重要,它是內核啟動后加載的第1個文件系統,是決定系統能否正常啟動的關鍵所在。在開發階段,程序往往需要反復多次的調試,鑒于此,構建基于NFS(Network File System)的根文件系統就尤為重要;這樣就免去了對目標開發板的反復燒寫,方便地在線對程序進行更改與調試。本文以Busybox軟件為基礎,介紹了一種實用的NFS根文件系統構建方法。
1嵌入式根文件系統簡介
Linux啟動時,第一個必須掛載的就是根文件系統;若系統不能從指定設備上掛載根文件系統,則系統會報錯進而退出啟動。系統成功啟動之后,才可以自動或手動掛載其他的文件系統。
Linux系統各個分區存儲文件時,需要遵循一定的格式,這種文件格式稱為文件系統類型,比如常見的有ext2,ext3,ext4等。在存儲設備方面,FLASH是目前嵌入式系統中廣泛采用的主流存儲設備,它是一種可電擦寫的非易失性存儲器,具有體積小,功耗低,密度高等優點。目前FLASH中常見的文件系統主要有Cramfs,Jffs2,Yaffs2等。嵌入式Linux基本的根文件目錄結構如表1所示。
表1根文件目錄結構
目錄名簡介bin存放所有用戶都可以使用的、基本的命令boot引導加載程序使用的文件dev該目錄存放設備文件和其他特殊文件etc存放系統配置文件,包括啟動文件home系統默認的用戶主文件夾lib存放共享庫和可加載塊 ( 即驅動程序)mnt用于臨時掛接某個文件系統的掛接點,通常是空目錄opt第三方軟件所存放的目錄proc這是個空目錄,常作為 proc 文件系統的掛載點rootroot 用戶的主目錄sbin存放的是基本的系統命令,它們用于啟動系統、修復系統等tmp存放臨時文件,通常是空目錄usr里面存放的是共享、只讀的程序和數據var一些變化的實例和工具
2Busybox簡介
Busybox常被形象地稱為嵌入式Linux系統開發中的“瑞士軍刀”,它將許多常用的UNIX命令和工具結合到了一個單獨的可執行程序中。雖然與相應的GNU工具相比較,Busybox所提供的功能和參數略少,但在比較小的系統或者嵌入式系統中已經足夠了。它僅用一個可執行文件就可以提供基本的Linux操作系統所需的命令,體積很小,配置起來也很方便。
3Busybox的編譯與安裝
3.1開發環境
基于飛凌OK2440Ⅲ的硬件平臺采用S3C2440芯片,外圍包括64 MB的SDRAM內存、128 MB的NAND FLASH,以及4 MB的NOR FLASH。采用宿主機加目標板的開發模式,宿主機的系統是Fedora12,目標板的內核版本是Linux2.6.30.4,Bootloader采用Uboot。
3.2配置Busybox
Busybox的源碼在官方網站www.Busybox.net/下載,然后解壓并進行配置安裝,具體步驟如下:
4.3安裝動態庫
如果Busybox采用動態鏈接的方式編譯,還需要加載器和鏈接庫執行如下命令:
#cp f /usr/local/arm/4.3.2/armnonelinuxgnueabi/libc/armv4t/lib/*so* lib/ a
5NFS的安裝與配置
NFS(Network File System)是由SUN公司推出的一種分布式文件系統,它能使用戶在使用另外的聯網機文件或外設時,與使用本地機一樣方便。以root的身份在控制臺輸入setup,在系統服務選項中選中nfs服務,如圖2所示。
圖2NFS配置界面配置NFS服務器的共享主目錄,注意權限問題:
# vi/etc/exports
/home/myrootfs *(rw,no_root_squash,sync)
# service nfs restart
6掛載NFS根文件系統
通過串口和RJ45網口連接宿主機與目標開發板,啟動超級終端,輸入以下命令:
#tftp 0x31000000uImage.img /*下載Linux內核到內存*/
bootm 0x31000000/*啟動內核,掛載NFS根文件系統*/
目標板啟動后在超級終端中顯示的結果如圖3所示。可見,NFS根文件系統已經成功加載。
圖3NFS根文件系統運行效果7結語
對以Busybox制作嵌入式Linux根文件系統的基本方法進行了歸納和總結,進一步給出了基于NFS構建的嵌入式Linux根文件系統的一般方法。利用此法構建出來的NFS根文件系統可以直接用于嵌入式Linux系統的開發,實時方便地對開發程序進行更改和調試,有效地避免了反復對目標開發板的直接燒寫,提高了開發效率,縮短了開發周期。
參考文獻
[1]韋東山.嵌入式Linux 應用開發完全手冊[M].北京:人民郵電出版社,2008.
[2]華清遠見嵌入式培訓中心.嵌入式Linux基礎教程[M].北京:人民郵電出版社,2009.
[3]華清遠見嵌入式培訓中心.嵌入式Linux應用程序開發標準教程[M].2版.北京:人民郵電出版社,2009.
[4]陳卓,王田,梁新元.嵌入式系統開發[M].北京:電子工業出版社,2009.
[5]保定飛凌嵌入式技術有限公司.OK2440Ⅲ用戶手冊[EB/OL].[20090922].http://download.csaln.net/detail/gooogleman/2840871.
[6]LABROSSE Jean,陳慧.嵌入式軟件[M]. 北京:電子工業出版社,2009.
[7]孫天澤,袁文菊.嵌入式設計及Linux 驅動開發指南:基于ARM9處理器[M].2版.北京:電子工業出版社,2007.
[8]劉淼.嵌入式系統接口設計與Linux驅動程序開發[M].北京:北京航空航天大學出版社,2006.
[9]LOVE R. Linux內核設計與實現[M].陳莉君,康華,張波,譯.2版.北京:機械工業出版社,2006.