1. JFFS2文件系统配置
a) 内核配置
# make menuconfig //默认的MINI2440配置已经打开了JFFS2的支持
File systems --->
[*] Miscellaneous filesystems --->
<*> Journalling Flash File System v2 (JFFS2) support
(0) JFFS2 debugging verbosity (0 = quiet, 2 = noisy)
[*] JFFS2 write-buffering support
b) 编译内核
# make uImage
将生成的内核下载到开发板中运行,使用以下命令可以查看内核支持的文件系统类型,可看到现在内核已经可以支持jffs2文件系统了。
# cat /proc/filesystems
c) 通过mount挂载jffs2文件系统
# /mtd_tools/flash_eraseall /dev/mtd3
# mount -t jffs2 /dev/mtdblock3 /mnt //挂载文件系统
2. JFFS2文件系统映像制作
a) 获取mkfs.jffs2工具
此工具在mtd-utils-1.5.0.tar.bz2中包含(制作UBIFS的MTD工具),将此工具复制到/usr/bin即可。
# cp mkfs.jffs2 /usr/bin/
b) 制作文件系统镜像
# mkfs.jffs2 -n -s 2048 -e 128KiB -d NFS -o fs_micro2440.jffs2
-s 页大小
-n 擦除块大小,需和手册相匹配,此处为128(由手册可知),1 Block = (2K + 64)B + 64 Pages = (128K + 4K)bytes
此处如果设置过大(如 256),将出现jffs2_scan_eraseblock():Magic bitmask......问题。如果设置过小(如 64),将出现Empth flash at .......问题。
c) 通过MTD工具烧写镜像
注意,这些工具不能使用busybox自带的,里面自带的功能不全。
# ./mtd_tools/flash_eraseall /dev/mtd3
# ./mtd_tools/nandwrite -a -p /dev/mtd3 fs_micro2440.jffs2
# mount -t jffs2 /dev/mtdblock3 /mnt
通过mount挂载jffs2文件系统mtd3分区到/mnt上,可以正常挂载,说明烧写成功。
d) 通过JFFS2启动根文件系统
现在已经将JFFS2文件系统烧写到NAND的mtd3分区,可以修改LINUX的启动参数,让jFFS2文件系统作为LINUX的根文件系统。
进入U-BOOT命令行模式,修改启动参数如下即可。
# setenv bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0 rootfstype=jffs2