1. 程式人生 > >Yaffs2檔案系統的製作和mkdosfs等命令工具的增加

Yaffs2檔案系統的製作和mkdosfs等命令工具的增加

2.1移植環境

    核心版本:Linux-2.6.22.6;交叉編譯器版本:gcc-3.4.5-glibc-2.3.6;作業系統平臺:Ubuntu14;開發板平臺:S3C2440A;使用的工具:Busybox-1.7.0。

2.2配置編譯Busybox

    從busybox官網http://www.busybox.net/下載busybox-1.7.0.tar.bz2檔案,在操作平臺上通過命令tarxvjf busybox-1.7.0.tar.bz2解壓得到busybox-1.7.0檔案。                                     

 (1)進入busybox-1.7.0修改Makefile使用交叉編譯工具,把CROSS_COMPILE   ?=  改為  CROSS_COMPILE   ?= arm-linux-。

(2)Busybox的效能微調,通過make menuconfig設定“TAB”鍵補全,比如在控制檯上輸入一個“inst”後按“TAB”鍵,它會補全為“install”。配置如圖1busybox效能微調所示。

      

圖1 busybox效能微調

(3)編譯安裝Busybox。通過make命令編譯我們設定好的Busybox,然後執行“

make COFIG_PREFIX=/work/nfs_root/first_fsinstall”把Busybox安裝到/work/nfs_root/first_fs目錄下,我們在/work/nfs_root/first_fs檔案下看到的內容如圖2所示。

               


圖2 Busybox安裝內容

2.3使用glibc庫

    因為我們在配置Busybox的效能時選擇了動態連結的Busybox,我們需要安裝glibc庫。首先,我們在根檔案系統目錄下通過命令mkdir lib新建lib目錄,然後把交叉編譯工具鏈gcc-3.4.5-glibc-2.3.6/arm-linux/lib目錄下的“*.so*”檔案通過命令cp *.so* /work/nfs_root/first_fs/lib/-d拷貝到根檔案系統新建的lib目中,我們可以看到根檔案系統中lib目錄下的檔案如圖3所示。

            

圖3 glibc庫檔案

2.4構建最小根檔案系統

(1)通過命令

  sudomknod console c 5 1

  sudomknod null c 1 3

在檔案系統目錄下建立兩個裝置節點。

(2)構建inittab

    在檔案系統目錄先通過命令mkdir etc建立etc目錄,使用命令構建inittab檔案,inittab中的內容如圖4所示。

                                                      

圖4 inittab內容顯示

2.4製作/使用YAFFS2檔案系統

    (1)通過解壓yaffs檔案可以得到yaffs和yaffs2兩個檔案,因為我們需要製作的是yaffs2檔案系統映像檔案,所以要使用的工具在yaffs2/utils目錄下。在utils目錄下進行make後得到如圖5所示的檔案。

       

圖5 utils目錄

    (2)在我們的PC機中是沒有mkyaffs2image命令來製作yaffs2檔案系統映像檔案的,要使我們的PC機能夠執行mkyaffs2image命令我們需要mkyaffs2image通過命令sudo cp mkyaffs2image /usr/local/bin/拷貝到PC機的命令執行資料夾下,同時我們還有通過sudo chmod +x /usr/local/bin/mkyaffs2image命令賦予該工具可執行許可權。這樣我們可以在PC機中執行mkyaffs2image first_fsfirst_fs.yaffs2命令可以生成first_fs.yaffs2映像檔案。

    (3)下我們製作的檔案系統之前,先把開發板上電然後通過secureCRT檢視到的啟動資訊如圖6所示。然後通過下載工具把我們製作的first_fs.yaffs2映像檔案下載到我們的S3C2440開發板上,重新上電後我們可以通過secureCRT串列埠工具看到我們製作檔案系統的目錄如圖7所示。

    

圖6 沒有檔案系統時的列印資訊

                                   

圖7 有檔案系統時顯示的資訊

3.新增檔案系統的命令工具

我們製作的最小根檔案系統只有基礎的一些功能,比如當我們需要在開發板上執行格式化磁碟命令mkdosfs、磁碟分割槽命令fdisk 等的命令時會發現我們製作的根檔案系統沒有這些命令工具,因此我們需要自己新增相應的命令工具。

從http://daniel-baumann.ch/software/dosfstools/網站上下載dosfstools-3.0.16.tar.gz檔案並通過WinSCP工具把檔案傳到PC機上進行解壓讓後通過make CC=arm-linux-gcc進行交叉編譯得到的檔案目錄如圖8所示。通過cp mkdosfs/work/nfs_711/first_fs/usr/sbin/命令把編譯生成的mkdosfs拷貝到檔案系統的/usr/sbin目錄下,重新制作並使用yaffs2檔案系統,重啟開發板後我們通過ssecureCRT串列埠工具可以看到如圖9所示的資訊即表示新增成功。如果我們在實際的開發過程中發現自己製作的檔案系統缺少我們需要的命令工具,則可以通過相同的方式進行新增。

          

圖8 dosfstools編譯後目錄資訊

  

圖9 具有mkdosfs命令顯示的資訊