cramfs
cramfs
目錄
如果使用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不能正常讀寫的時候,可以檢查一下內核的參數設置。