制作 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版)》