2013-04-21 130 views
4

我創建了一個使用squashfs的buildroot根文件系統。它工作正常,現在我想創建一個overlayfs,它將保存/ home和/ etc目錄。JFFS2文件系統立即破壞(Magic bitmask 0x1985找不到錯誤)

爲此,我想創建幾個文件的一個簡單的JFFS2文件系統:

[email protected]:~/projects/jffs2_home$ ls -la 
total 20 
drwxrwxr-x 4 jlumme jlumme 4096 Apr 21 16:21 . 
drwxrwxr-x 6 jlumme jlumme 4096 Apr 21 16:21 .. 
drwxrwxr-x 2 jlumme jlumme 4096 Apr 21 13:45 default 
drwxrwxr-x 2 jlumme jlumme 4096 Apr 21 13:45 ftp 
-rw-rw-r-- 1 jlumme jlumme 24 Apr 21 15:34 test.txt 

我使用的閃存芯片是SST25VF064C,所以我相信這是擦除塊大小爲64 KB,因此我從該文件夾創建一個文件系統圖像:

mkfs.jffs2 -r jffs2_home/ -e 64 -o home.jffs2 
$ ls -la 
-rw-r--r-- 1 jlumme jlumme 496 Apr 21 15:42 home.jffs2 

(令人驚奇的,如果設置了32 -e,甚至-e 4,所得到的二值圖像完全不???改變)。 然而,繼續前進,我已經對準我的mtdblock包含家,爲64KB和我的閃存佈局是這樣的:

uboot/<0x00000000 0x40000> 
kernel/<0x00040000 0x3D9000> 
dtb/<0x00419000 0x10000> 
rootfs/<0x00429000 0x1F7000> 
home/<0x00620000 0x1E0000> 

我的船上,我可以掛載mtdblock4罰款,我可以讀取該文件內容正確。但是,如果我修改該文件,並嘗試將其保存,vi抱怨:

[ 77.030000] jffs2: Node totlen on flash (0xffffffff) != totlen from node ref (0x00000044) 

現在,如果我卸載文件系統,並重新安裝它,我立即開始的抱怨:

# mount -t jffs2 /dev/mtdblock4 /home/ 
[ 99.740000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001d4070: 0xff0a instead 
[ 99.760000] jffs2: Empty flash at 0x001d4074 ends at 0x001d412c 
[ 99.770000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001d412c: 0xffff instead 
[ 99.790000] jffs2: Empty flash at 0x001d4130 ends at 0x001d4194 
[ 99.790000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001d4194: 0xff0a instead 

我猜想現在我的文件系統已經損壞......我不明白其中的原因.. 任何想法,我在哪裏出錯?感謝您的所有建議..

回答

0

這是我做了什麼來解決這個問題。從http://www.linux-mtd.infradead.org/

  1. 更新新的MTD驅動程序 - 有人支持SST25V064C芯片
  2. 確信爲JFFS2保留的區域被初始化爲0xFF
  3. (可能是可選)指定更準確地創造新的代碼JFFS2文件系統:

    mkfs.jffs2 -e 64 -l -p -s 4096 -r jffs2_home/ -o home.jffs2 
    

隨着這些變化日e文件系統現在可以按預期進行讀寫操作。

相關問題