1、cramfs的特點 在嵌入式的環境之下,記憶體和外存資源都需要節約使用。如果使用ramdisk方式來使用檔案系統,那麼在系統執行之後,首先要把外存(flash)上的映像檔案解壓縮到記憶體中,構造起ramdisk環境,才可以開始執行程式。但是它也有很致命的弱點。在正常情況下,同樣的**不僅在外存中佔據了空間(以壓縮後的形式存在),而且還在記憶體中占用了更大的空間(以解壓縮之後的形式存在),這違背了嵌入式環境下盡量節省資源的要求。
使用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不能正常讀寫的時侯,可以檢查一下核心的引數設定。
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:希望測試的目標檔案
cramfs檔案系統識別nand壞塊
1.核心支援 config cramfs y 2.製作檔案 1 獲取mkcramfs工具 如果是ubuntu的話 apt get install mkcramfs 2 製作cramfs檔案映象 mkcramfs rootfs rootfs.cramfs 3.uboot燒寫cramfs檔案到nand的...
用u boot來引導Cramfs檔案系統
硬體平台 at91rm9200 64m sdram,8m intel flash,64m nandflash,16k iic.軟體平台 u boot 1.1.2 linux 2.6.19 所需檔案 9200loader.bin,bootflash.bin,u boot.bin,uimage,root...
嵌入式檔案系統之 cramfs檔案系統的製作工具
cramfs檔案系統簡介 cramfs檔案系統是由linuxtorvalds編寫的專門針對快閃儲存器設計的唯讀壓縮檔案系統。與ramdisk方式不同,cramfs檔案系統不需要一次性地將檔案系統中的所有內容都解壓到記憶體中,而只是在系統需要訪問某個資料時,馬上計算出該資料在cramfs中的位置,將其...