我們在調試硬件板時,經常需要做多個jffs2的根文件系統映像,有時也要對比其他途徑得到的可用的jffs2根文件系統映像。但jffs2的文件系統映像不象光盤的映像文件一樣可以通過loop設備來掛載……
我們在調試硬件板時,經常需要做多個jffs2的根文件系統映像,有時也要對比其他途徑得到的可用的jffs2根文件系統映像。但jffs2的文件系統映像不象光盤的映像文件一樣可以通過loop設備來掛載,總不可能一個個燒錄到硬件板去看吧。
後來到網上google了一把,左翻右翻之後總算找到了一個方法。因為jffs2是構建於MTD設備上的文件系統,所以無法通過loop設備來掛載,但是可以通過mtdram設備來掛載。mtdram是在用RAM實現的MTD設備,可以通過mtdblock設備來訪問。使用mtdram設備很簡單,只要加載mtdram和mtdblock兩個內核模塊即可。www.britepic.org這兩個內核模塊一般的Linux內核發行版都有編譯好的,直接用modprobe命令加載。
下面是在Fedora core 6環境下使用mtdram設備掛載jffs2根文件系統映像的具體步驟:
1.加載mtdblock內核模塊
[root@localhost ~]# modprobe mtdblock
2.加載mtdram內核模塊,將該設備的大小指定為jffs2根文件系統映像的大小,塊擦除大小(即flash的塊大小)指定為制作該jffs2根文件系統時“-e”參數指定的大小,缺省為64KB。下面兩個參數的單位都是KB。
[root@localhost ~]# modprobe mtdram total_size=49152 erase_size=128
3.這時將出現MTD設備/dev/mtdblock0,使用dd命令將jffs2根文件系統拷貝到/dev/mtdblock0設備中。
[root@localhost prebuilt_bin]# dd if=rootfs.jffs2_zylonite_qvga of=/dev/mtdblock0
98304+0 records in
98304+0 records out
50331648 bytes (50 MB) copied, 1.98391 seconds, 25.4 MB/s
4.將保存了jffs2根文件系統的MTD設備掛載到指定的目錄上。
[root@localhost prebuilt_bin]# mount -t jffs2 /dev/mtdblock0 /mnt/mtd
這之後就可以到/mnt/mtd目錄查看、修改掛載的jffs2根文件系統了,修改後的jffs2根文件系統可以通過dd命令拷貝為一個jffs2的映像文件。