1. YAFFS2文件系统配置
a) YAFFS2源码下载地址
yaffs2-HEAD-4e188b0.tar.gz:http://www.yaffs.net/download-yaffs-using-git (http://pan.baidu.com/s/1jG7OAP4)
b) 解压源码
# tar -xvf yaffs2-HEAD-4e188b0.tar.gz -C ./
c) 为内核打YAFFS2补丁
# cd yaffs2-HEAD-4e188b0/
# ./patch-ker.sh c m ../linux-2.6.39/
d) 配置内核
# make menuconfig
File systems --->
[*] Miscellaneous filesystems --->
<*> yaffs2 file system support
e) 编译内核
# make uImage
将生成的内核下载到开发板中运行,使用以下命令可以查看内核支持的文件系统类型,可看到现在内核已经可以支持yaffs、yaffs2文件系统了。
# cat /proc/filesystems
f) 通过mount挂载yaffs2文件系统
# mount -t yaffs2 /dev/mtdblock3 /mnt //挂载文件系统
如下图所示,成功挂载YAFFS2文件系统后,使用ls命令查看mnt目录,里面包含有完善的一个root文件系统,这个文件系统是友善的文件系统,之前一直就保存在NAND中。
2. YAFFS2文件系统映像制作
a) 源码下载
yaffs2-HEAD-4e188b0.tar.gz:http://www.yaffs.net/download-yaffs-using-git
(http://pan.baidu.com/s/1jG7OAP4)
b) 编译镜像制作工具
# cd yaffs2-HEAD-4e188b0/utils/
# vim Makefile //增编译选项(以下红色字体)
CFLAGS = -O2 -Wall -DCONFIG_YAFFS_UTIL -DCONFIG_YAFFS_DEFINES_TYPES
c) 制作文件系统镜像
# ./mkyaffs2image NFS/ fs.yaffs2
最后发现直接从YAFFS2源码编译的mkyaffs2image工具生成的文件系统映像不能使用,使用友善提供的mkyaffs2image-128M生成的即可。关于mkyaffs2image工具的修改本文档不作说明,可参考网上的教程进行修改。
d) 测试镜像
可通过super vivi的y命令将fs.yaffs2下载到NAND的第三分区,然后使用以下命令挂载mtdblock3至mnt目录,查看mnt目录下是否有一个完整的根文件系统。
# mount -t yaffs2 /dev/mtdblock3 /mnt
e) 通过MTD工具烧写镜像
注意,这些工具不能使用busybox自带的,里面自带的功能不全。
# ./mtd_tools/flash_eraseall /dev/mtd3
# ./mtd_tools/nandwrite -a -o /dev/mtd3 fs.yaffs2
# mount -t yaffs2 /dev/mtdblock3 /mnt
通过mount挂载yaffs2文件系统mtd3分区到/mnt上,可以正常挂载,说明烧写成功。
f) 通过YAFFS2启动根文件系统
现在已经将YAFFS2文件系统烧写到NAND的mtd3分区,可以修改LINUX的启动参数,让YAFFS2文件系统作为LINUX的根文件系统。
进入U-BOOT命令行模式,修改启动参数如下即可。
# setenv bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0 rootfstype=yaffs2