新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > cramfs文件系統

        cramfs文件系統

        作者: 時間:2011-02-25 來源:網絡 收藏

        1、cramfs的特點

        的環境之下,內存和外存資源都需要節約使用。如果使用RAMDISK方式來使用文件系統,那么在系統運行之后,首先要把外存(Flash)上的映像文件解壓縮到內存中,構造起RAMDISK環境,才可以開始運行程序。但是它也有很致命的弱點。在正常情況下,同樣的代碼不僅在外存中占據了空間(以壓縮后的形式存在),而且還在內存中占用了更大的空間(以解壓縮之后的形式存在),這違背了環境下盡量節省資源的要求。

        使用cramfs就是一種解決這個問題的方式。cramfs是一個壓縮式的文件系統,它并不需要一次性地將文件系統中的所有內容都解壓縮到內存之中,而只是在系統需要訪問某個位置的數據的時侯,馬上計算出該數據在cramfs中的位置,將其實時地解壓縮到內存之中,然后通過對內存的訪問來獲取文件系統中需要讀取的數據。cramfs中的解壓縮以及解壓縮之后的內存中數據存放位置都是由cramfs文件系統本身進行維護的,用戶并不需要了解具體的實現過程,因此這種方式增強了透明度,對開發人員來說,既方便,又節省了存儲空間。

        cramfs擁有以下一些特性:

        采用實時解壓縮方式,但解壓縮的時侯有延遲。

        cramfs的數據都是經過處理、打包的,對其進先寫操作有一定困難。所以cramfs不支持寫操作,這個特性剛好適合應用中使用Flash存儲文件系統的場合。

        在cramfs中,文件最大不能超過16MB。

        支持組標識(gid),但是mkcramfs只將gid的低8位保存下來,因此只有這8位是有效的。

        支持硬鏈接。但是cramfs并沒有完全處理好,硬鏈接的文件屬性中,鏈接數仍然為1.

        cramfs的目錄中,沒有“.”和“..”這兩項。因此,cramfs中的目錄的鏈接數通常也僅有一個。

        cramfs中,不會保存文件的時間戳(timestamps)信息。當然,正在使用的文件由于inode保存在內存中,因此其時間可以暫時地變更為最新時間,但是不會保存到cramfs文件系統中去。

        當前版本的cramfs只支持PAGE_CACHE_SIZE為4096的內核。因此,如果發現cramfs不能正常讀寫的時侯,可以檢查一下內核的參數設置。


        2、使用cramfs

        可以從http://sourceforge.net/projects/cramfs/下載cramfs-1.1.tar.gz。然后執行

        tar zxvf cramfs-1.1.tar.gz

        進入解包之后生成cramfs-1.1目錄,執行編譯命令:

        make

        編譯完成之后,會生成mkcramfs和cramfsck兩個工具,其中cramfsck工具是用來創建cramfs文件系統的,而mkcramfs工具則用來進行cramfs文件系統的釋放以及檢查。

        下面是mkcramfs的命令格式:

        mkcramfs [-h] [-e edition] [-i file] [-n name] dirname outfile

        mkcramfs的各個參數解釋如下:

        -h:顯示幫助信息

        -e edition:設置生成的文件系統中的版本號

        -i file:將一個文件映像插入這個文件系統之中(只能在Linux2.4.0以后的內核版本中使用)

        -n name:設定cramfs文件系統的名字

        dirname:指明需要被壓縮的整個目錄樹

        outfile:最終輸出的文件


        cramfsck的命令格式:

        cramfsck [-hv] [-x dir] file

        cramfsck的各個參數解釋如下:

        -h:顯示幫助信息

        -x dir:釋放文件到dir所指出的目錄中

        -v:輸出信息更加詳細

        file:希望測試的目標文件


        本段摘自于:《Linux與》,這本書由李善平 劉文峰 王煥龍等編著。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 思茅市| 多伦县| 莱阳市| 枞阳县| 阆中市| 郸城县| 明水县| 绍兴县| 株洲县| 博罗县| 桐柏县| 潮州市| 永安市| 永丰县| 册亨县| 武汉市| 武城县| 汾阳市| 元朗区| 绵竹市| 隆回县| 周宁县| 中阳县| 临桂县| 额尔古纳市| 清新县| 巴林左旗| 普安县| 松江区| 九龙县| 河间市| 连平县| 囊谦县| 平遥县| 漯河市| 南宁市| 新丰县| 华亭县| 基隆市| 庆阳市| 八宿县|