JFFs2檔案系統的重新定製

2021-07-30 18:58:30 字數 3494 閱讀 7938

專案應用中,對於前人留下的jffs2的檔案,有時候我們需要修改,但是苦於沒有原始檔,實際操作很多時候無所適從。每次支援生產之後再進行人為的公升級。這樣費時費力,也給生產人員增加了負擔。

為了解決這個問題,參考了一些資料,總算解決了這個問題!

基本的原理就是:

1. linux支援mount jffs2到本地目錄

2. 這是乙個完整的檔案目錄,我們可以修改mount後的檔案目錄,修改完成之後,重新使用mkfs.jffs2工具打包即可。

ubuntu下對jffs2的修改:

apt-getinstall mtd-tools

1.   掛載檔案系統

mount

乙個jffs2檔案系統過程: #

建立mtd裝置:                          

modprobe -v mtd

modprobe -v jffs2

modprobe -v mtdram total_size=10000 erase_size=128 (單位:k)

modprobe -v mtdchar

modprobe -v mtdblock

#擦除mtd0: 

flash_eraseall /dev/mtd0

#用dd命令裝入mtd0分割槽:

dd if=rootfs.jffs2 of=/dev/mtd0

#新建乙個掛載點:

mkdir fsmount

#用mount掛載jffs2檔案系統:

mount -t jffs2 /dev/mtdblock0 fsmount

#用umount解除安裝: 

umount fsmount

2.   修改檔案系統

成功掛在jffs2之後便可以對立面的內容進行修改,如新增和刪除檔案、修改檔案等。比如我們要增加乙個helloworld的檔案,操作如下:

cp helloword fsmount

sync

3.   重新生成jffs2檔案系統

mkfs.jffs2 -r fsmount -o rootfs_new.jffs2 -e 0x20000 --pad=0x800000 -n

這裡指定的塊大小是:128k

4.   用mtdinfo命令可以檢視檔案系統的資訊

mtdinfo /dev/mtd0

mtd0

name: mtdram test device

type: ram

eraseblocksize: 131072 bytes, 128.0kib

amount oferaseblocks: 78 (10240000 bytes,9.8 mib)

minimuminput/output unit size: 1 byte

sub-pagesize: 1 byte

characterdevice major/minor: 90:0

bad blocksare allowed: false

device iswritable: true

5.   附記

掛載檔案之後如果要重新掛載,可以先umount,之後擦除

umount fsmount

flash_eraseall /dev/mtd0

ubuntu下對jffs2的修改:

apt-getinstall mtd-tools

1.   

掛載檔案系統

mount

乙個jffs2檔案系統過程:

#建立mtd裝置:                          

modprobe-v mtd

modprobe-v jffs2

modprobe-v mtdram total_size=10000 erase_size=128 (單位

:k) modprobe-v mtdchar

modprobe-v mtdblock

#擦除mtd0:                       flash_eraseall /dev/mtd0

#用dd命令裝入mtd0分割槽:        ddif=rootfs.jffs2 of=/dev/mtd0

#新建乙個掛載點:                mkdir fsmount

#用mount掛載jffs2檔案系統:    mount -t jffs2 /dev/mtdblock0fsmount

#用umount解除安裝:                  umountfsmount

#可以刪除mtd模組:              modprobe –r xx(xx)

2.   修改檔案系統

成功掛在jffs2之後便可以對立面的內容進行修改,如新增和刪除檔案、修改檔案等。比如我們要增加乙個helloworld的檔案,操作如下:

cp hellowordfsmount

sync

3.   重新生成jffs2檔案系統

mkfs.jffs2 -r fsmount-o rootfs_new.jffs2 -e 

0x20000

--pad=

0x800000

-n4.   用mtdinfo命令可以檢視檔案系統的資訊

mtdinfo /dev/mtd0

mtd0

name:                           mtdram test device

type:                           ram

eraseblocksize:                131072 bytes, 128.0kib

amount oferaseblocks:          78 (10240000 bytes,9.8 mib)

minimuminput/output unit size: 1 byte

sub-pagesize:                  1 byte

characterdevice major/minor:   90:0

bad blocksare allowed:         false

device iswritable:             true

5.   xx

製作jffs2檔案系統

今天憋了老半天了,終於把jaffs檔案系統做成功了。之前系統啟動時,一直報錯如下 empty flash at 0x00003ffc ends at 0x00004000 一直報個沒完。後來查了一下,才知道,製作jffs2檔案的時候,指定的檔案大小的引數小了,而jffs檔案大小比他大。系統啟動的時候...

如何製作和使用Jffs2檔案系統

本文主要介紹如何在at91sam9261ek板子上製作和使用jffs2檔案系統,使用的是 2.6.21核心。首先 配置mtd 以上配置中沒有列出的,都沒選 其配置僅做參考,可根據自己的需要自行配置。make all 其次 製作mtd util工具 從網上zlib 1.2.3.tar.gz 解壓縮 c...

jffs2檔案系統映象掛載到Ubuntu PC端

載入mtdblock核心模組後通過lsmod可以檢視到 mtdblock mtd blkdevs mtd等module root ubuntu modprobe mtdblock 將該裝置的大小 total size 指定為jffs2根檔案系統映像的大小,將塊擦除大小 erase size 指定為f...