初學JZ2440之編譯最小根文件系統(上)

        最近學習了下製作根文件系統,其實就是創建各種目錄,並且在裏面創建你需要的各種文件,比如在/bin、/sbin目錄下存放各種可執行程序,在/etc目錄下存放各種配置文件,在/lib目錄下存放庫文件,等等。

        linux系統下比較流行的文件系統如下:

        jffs文件系統:jffs文件系統最早有瑞典Axis Communications公司開發,目前已經大量被RedHat公司基於其開發的jffs2取代,該類文件系統主要用於nor型閃存。

        yaffs文件系統:YAFFS是第一個在GPL協議下發布的、基於日誌的、專門爲NAND Flash存儲器設計的、適用於大容量的存儲設備的嵌入式文件系統。

        yaffs2文件系統:YAFFS2 是Aleph1的工程師Charles Manning 開發的NAND Flash 文件系統。YAFFS1和YAFFS2 主要差異還是在於PAGE 讀寫 size的大小,YAFFS2可支持到2K per page, 遠高於YAFFS的512 Bytes, 因此對大容量NAND flash更具優勢。其他與YAFFS1不同的是, YAFFS2不再寫spare area, sequenceNumber 用29 bits 表示。Yaffs2還擁有YAFFS1所缺乏的SuperBlock, 因此YAFFS1嚴重依賴文件系統的read_super。目前YAFFS 和YAFFS2 皆遵守GNU GPL開放原始碼。Android 採用yaffs2作爲MTD NAND flash文件系統,位於fs/yaffs2/目錄下。

        cramfs文件系統:CRAMFS文件系統是專門針對閃存設計的只讀壓縮的文件系統,其容量上限爲256M,採用zlib壓縮,文件系統類型可以是EXT2或EXT3

        nfs網絡文件系統:NFS允許一個系統在網絡上與他人共享目錄和文件。通過使用NFS,用戶和程序可以像訪問本地文件一樣訪問遠端系統上的文件。

        VFS虛擬文件系統:VFS的作用就是採用標準的Unix系統調用讀寫位於不同物理介質上的不同文件系統。VFS是一個可以讓open()、read()、write()等系統調用不用關心底層的存儲介質和文件系統類型就可以工作的粘合層。

        在嵌入式系統中,一般選擇使用busybox開源工程去製作最小根文件系統

        第一步:下載busybox源碼:

                        busybox-1.7.0.tar.bz2

        第二步:解壓busybox源碼

                        tar  jxvf   busybox-1.7.0.tar.bz2

        第三步:編譯busybox工程

                       make   menuconfig  ==>  配置編譯

                       vim  makefile   ==>  修改CROSS_COMPILE=arm-linux-

                       make

                       make   CONFIG_PREFIX=存放的目錄  install  ==>  安裝到指定目錄

        好了到了這步已經完成了busybox的編譯,它會生成以下幾個目錄和程序:/bin、/sbin、/usr、linuxrc,,它裏面已經有了各種命令的可執行程序和init進程,但是光有這些還是不夠,還需要一些目錄。

        第四步:製作/dev目錄

        mkdir   dev  && cd  dev  

        mknod console c 5 1 

        mknod null c 1 3   

        第五步:構建/etc目錄    

        mkdir   etc  && cd  etc  &&  vim inittab  ==>  輸入:console::askfirst:-/bin/sh

        第六步:安裝C庫,放在/lib目錄下

        mkdir   lib

        cd ../../u-boot工程/gcc-3.4.5-glibc-2.3.6/arm-linux/lib

        cp *.so* ../../../../busybox工程/rootfs/lib/  -d  

        (注:-d表示將鏈接文件同樣拷貝成鏈接文件)

        第七步:生成文件系統對應的鏡像文件

        tar   jxvf yaffs_source_util_larger_small_page_nand.tar.bz2  

        cd   Development_util_ok/yaffs2/utils/
        make

        cp    mkyaffs2image    /usr/local/bin/

        chmod  +x  /usr/local/bin/mkyaffs2image 

        mkyaffs2image  rootfs/   rootfs.yaffs2

        chmod +rwx rootfs.yaffs2 

        將製作好的文件系統鏡像燒錄到開發板,效果如下:

         

       注:這個最小根文件系統還很不善,比如連proc目錄都沒有,進一步完善請看下一篇博文之初學JZ2440之編譯最小根文件系統(下)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章