下载:
ftp://sources.redhat.com/pub/jffs2/mkfs.jffs2
或者使用命令:
apt-get install mtd-utils
命令使用实例:
mkfs.jffs2 -s 0x1000 -e 0x40000 -p 0x500000 -d rootfs/ -o jffs2.img
说明:
页大小0x1000 4k
块大小0x40000 256k
jffs2分区总空间0x500000即5m
当然生成的jffs2.img并没有一下子分配5m,还是实际大小0xc0000
mkfs.jffs2使用方法
选项含义(man a mkfs.jffs2)
mkfs.jffs2: usage: mkfs.jffs2 [options]
make a jffs2 file system image from an existing directory tree
options:
-p, --pad[=size] 用16進制來表示所要輸出檔案的大小,也就是root.jffs2的size。
很重要的是, 為了不浪費flash空間, 這個值最好符合flash driver所規劃的區塊大小。
如果不足则使用0xff来填充补满。
-r, -d, --root=dir 指定要做成image的源資料夾.(默认:当前文件夹)
-s, --pagesize=size 节点页大小(默认: 4kib)
-e, --eraseblock=size 设定擦除块的大小为(默认: 64kib)
-c, --cleanmarker=size size of cleanmarker (default 12)
-m, --compr-mode=mode select compression mode (default: priortiry)
-x, --disable-compressor=compressor_name
disable a compressor
-x, --enable-compressor=compressor_name
enable a compressor
-y, --compressor-priority=priority:compressor_name
set the priority of a compressor
-l, --list-compressors show the list of the avaiable compressors
-t, --test-compression call decompress and compare with the original (for test)
-n, --no-cleanmarkers 指明不添加清楚标记(nand flash 有自己的校检块,存放相关的信息。)
如果挂载后会出现类似:
cleanmarker node found at 0x0042c000 has totlen 0xc != normal 0x0
的警告,则加上-n 就会消失。
-o, --output=file 指定輸出image檔案的文件名.(default: stdout)
-l, --little-endian 指定使用小端格式
-b, --big-endian 指定使用大端格式
-d, --devtable=file use the named file as a device table file
-f, --faketime change all file times to '0' for regression testing
-q, --squash squash permissions and owners making all files be owned by root
-u, --squash-uids 将所有文件的拥有者设为root用户
-p, --squash-perms squash permissions on all files
--with-xattr stuff all xattr entries into image
--with-selinux stuff only selinux labels into jffs2 image
--with-posix-acl stuff only posix acl entries into jffs2 image
-h, --help 显示这些文字
-v, --verbose verbose operation
-v, --version 显示版本
-i, --incremental=file parse file and generate appendage output for it
生成的rootfs.img可通过u-boot直接烧写至nand flash:
nand erase 0x200000 0x3e00000//擦写
tftp 0x30000000 rootfs.img//下载
nand write.jffs2 0x200000 $(filesize)//烧入
(二) 在linux的pc上挂载jffs2根文件系统映像
因为jffs2是构建于mtd设备上的文件系统,所以无法通过loop设备来挂载,但是可以通过mtdram设备来挂载。mtdram是在用ram实现的mtd设备,可以通过mtdblock设备来访问。使用mtdram设备很简单,只要加载mtdram和mtdblock两个内核模块即可。这两个内核模块一般的linux内核发行版都有编译好的,直接用modprobe命令加载。
下面是具体步骤:
(1).加载mtdblock内核模块
modprobe mtdblock
(2).加载mtdram内核模块,将该设备的大小指定为jffs2根文件系统映像的大小,块擦除大小(即flash的块大小)指定为制作该jffs2根文件系统时“-e”参数指定的大小,缺省为64kb。下面两个参数的单位都是kb。
modprobe mtdram total_size=5120 erase_size=256
(3).这时将出现mtd设备/dev/mtdblock0,使用dd命令将jffs2根文件系统拷贝到/dev/mtdblock0设备中。
dd if=jffs2.img of=/dev/mtdblock0
(4).将保存了jffs2根文件系统的mtd设备挂载到指定的目录上。
mount -t jffs2 /dev/mtdblock0 /mnt/mtd
这之后就可以到/mnt/mtd目录查看、修改挂载的jffs2根文件系统了,修改后的jffs2根文件系统可以通过dd命令拷贝为一个jffs2的映像文件
美创科技发布新一代数据安全架构,护航千行百业数字时代
华擎将推出嵌入式AMD锐龙主机
SMT贴片加工厂的虚焊判断和解决方法
英特尔锐炫 A750新驱动实测:“丝滑”呈现霍格沃茨魔法世界!
国大多数生产Type-C连接器企业为何集中于3C领域?
学会用mkfs.jffs2命令制作jffs2镜像文件
汽车电气系统的故障可以分为哪几种
ZigBee技术的原理及特点
Realme似乎正式推出了Realme Q2系列
美国联邦通信委员会批准了SpaceX要求修改互联网传输卫星轨道的计划
氧气传感器在医疗麻醉呼吸机中的应用
2018-2023年,全球UV LED市场规模年复合增长率高达27%
一加手机X拆解,看看这款手机的内部做工如何
5G的变革性技术对企业来说是个大新闻
绕线电感厂科普商棒状电感好坏怎么判断
“芯荒”下车厂纷纷停产
垂直GaN功率器件彻底改变功率半导体
Nokia7评测:有了骁龙630和蔡司加持_诺基亚7性价比暴增
天马完成全球首款LCD屏内多点指纹识别解决方案
Imagination旗下两款产品入围年度IP产品