制作JFFS2文件系统
制作 JFFS2 文件系统是通过工具 mkfs.jffs2 将文件系统目录制成映像文件。制作工具 mkfs.jffs2 需要编译 zhb 库和 mtd-utils,下面详细介绍其制作过程。
1.内核配置MTD驱动支持和JFFS2支持
我们可以了解 YAFFS2 自带 MTD 驱动,而 JFFS2 文件系统则需要在内核中配 置 MTD 驱动支持。
内核也必须支持 JFFS2 文件系统。 在编译内核时选择 Device Drivers ---> Memory Technology Device (MTD) support --->, 进入 Memory Technology Device 配置窗口,如图 5.14 所示。 在编译内核时选择 File systems --->Miscellaneous filesystems--->,进入 Miscellaneous filesystems 配置窗口,选择支持 JFFS2 文件系统,如
2.制作工具mkfs.jffs2
制作工具 mkfs.jffs2 是用于制作 JFFS2 映像文件。制作 JFFS2 映像文件需要以下两个文件:
(1)编译安装 zlib 库,用于文件压缩和解压。进入 zlib 的解压目录下,使用 configure命令生成 Makefile。
# ./configure --prefix=/usr/local/arm/4.4.3/arm-none-linux-gnueabi/libc -shared
修改生成的 Makefile 如下:
CC=arm-linux-gcc
LDSHARED= arm-linux-gcc -shared
-Wl,-soname,libz.so.1,--version-script,zlib.map
CPP=arm-linux-gcc –E
AR=arm-linux-ar
RANLIB=arm-linux-ranlib
执行 make 和 make install 进行编译和安装。
#make
#make install
编译和安装完成后在目录/usr/local/arm/4.4.3/arm-none-linux-gnueabi/libc/lib 下会生成 动态和静态库文件 libz.a、libz.so、libz.so.1.2.8 和 libz.so.1。
(2)编译工具 mtd-utils。进入 mtd-utils 的解压目录,执行 make 进行编译。完成编译后,新生成的工具
mkfs.jffs2、mkfs.jffs 等在目录/usr/local/jffs_root/tmp/mtd-utils-1.0.0 下。
# tar jxvf mtd-utils-1.5.0.tar.bz2
# cd mtd-utils-1.5.0
# make
# make install
将该路径添加到环境变量 PATH 中。
#PATH=$PATH: /usr/local/jffs_root/tmp/mtd-utils-1.0.0
(3)制作 JFFS2 映像文件。制作 JFFS2 根文件系统的过程与其他文件系统的过程相同,
制作 JFFS2 映像文件的命令如下:
#mkfs.jffs2 -r jffs_root -o jffs_root.jffs2 -e 0x4000 --pad=0x800000 -s 0x200 -n
各个参数的含义如下所述。
-r:指定文件系统。
-o:指定输出的映像文件名。
-e:擦除块的大小(block size),不同的 flash,其 block size 不一样。
--pad (-p):指定输出文件的大小,也就是 jffs_root.jffs2 的大小。重要的是, 为 了不浪费 flash 的空间,该值应该符合 flash driver 划分块的大小。
-n:在每个擦除块中不添加 clreanmarker(消除标志)
本文摘自《linux系统移植(第2版)》