歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linuxcramfs文件系統

Linuxcramfs文件系統

日期:2017/2/25 10:38:12   编辑:Linux教程

  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兩個工具,其中mkcramfs工具是用來創建cramfs文件系統的,而cramfsck工具則用來進行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:希望測試的目標文件

Copyright © Linux教程網 All Rights Reserved