cramfs

 CRAMFS檔案系統是專門針對快閃記憶體設計的唯讀壓縮的檔案系統,其容量上限為256M,採用zlib壓縮,檔案系統類型可以是EXT2或EXT3。

CRAMFS檔案系統是專門針對快閃記憶體設計的唯讀壓縮的檔案系統,其容量上限為256M,採用zlib壓縮,檔案系統類型可以是EXT2或EXT3.
如果使用RAMDISK方式來使用檔案系統,那么在系統運行之後,首先得把flash上的映像檔案全部解壓到ram中,構造ramdisk環境,才可以運行程式,但有一個致命的弱點,在正常情下,同樣的代碼不僅在flash占用了空間,而且還在ram中占用極大的空間,這違背了嵌入式中節省資源的原則.
cramfs檔案系統並不需要一次性地將檔案系統中的所有內容解壓到ram中,而只是是系統需要訪問某個位置的數據時,馬上計算出該數據在cramfs中的位置,將其解壓到ram中,然後通過記憶體訪問來獲取數據,cramfs中的解壓縮之後的記憶體中的數據存放位置都是由cramfs檔案系統本身來管理,用戶並不需要實現過程,因此增加了透明度,給開發人員節約了時間.
cramfs擁有以下一些特性:
採用實時解壓縮方式,但解壓縮的時候有延遲。
cramfs的數據都是經過處理、打包的,對其進先寫操作有一定困難。所以cramfs不支持寫操作,這個特性剛好適合嵌入式套用中使用Flash存儲檔案系統的場合。
在cramfs中,默認檔案最大不能超過16MB,可以通過修改cramfs-1.1/linux/ cramfs_fs.h下的CRAMFS_SIZE_WIDTH的大小來支持最大為256MB的單個檔案,當然linux核心參數也要修改(include/linux/cramfs_fs.h)成相同的參數。
支持組標識(gid),但是mkcramfs只將gid的低8位保存下來,因此只有這8位是有效的。
支持硬連結。但是cramfs並沒有完全處理好,硬連結的檔案屬性中,連結數仍然為1.
cramfs的目錄中,沒有“.”和“..”這兩項。因此,cramfs中的目錄的連結數通常也僅有一個。
cramfs中,不會保存檔案的時間戳(timestamps)信息。當然,正在使用的檔案由於inode保存在記憶體中,因此其時間可以暫時地變更為最新時間,但是不會保存到cramfs檔案系統中去。
當前版本的cramfs只支持PAGE_CACHE_SIZE為4096的核心。因此,如果發現cramfs不能正常讀寫的時候,可以檢查一下核心的參數設定。

相關詞條

相關搜尋

熱門詞條

聯絡我們