Table of Contents
嵌入式的文件系统有很多,比如JFFS2、YAFFS、UBIFS。下面来介绍下他们之间的区别:
- JFFS2一般用于NOR FLASH。具有在线压缩/解压缩功能,适合小容量的FLASH。
- YAFFS要快于JFFS2并且消耗更少的RAM。YAFFS也可用于NAND FLASH
- UBIFS提供类似JFFS2的压缩功能,但是它通常作为一种用于大容量NAND FLASH的更好选择
UBI文件系统使用
使能UBIFS
在内核中打开UBI file system support,建议编入内核。
挂载UBIFS
通常挂载UBIFS的方式是挂载UBI字符设备,例如:
1 2 3 |
$ mount -t ubifs /dev/ubi0_0 /mnt |
将会挂载UBIFS到UBI设备0的UBI卷标0上。
UBI卷标语法为ubiX_Y或者ubiX:NAME,其中
- X – UBI设备号
- Y – UBI卷标号
- NAME – UBI卷标名字
挂载空的UBI卷
我们可以挂载空的UBI卷,比如:此卷只包含0xFF的数据。
例如这里有一个mtd0的MTD设备,我们这样做(假如UBIFS已经编入内核):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# 擦除MTD设备 ubiformat /dev/mtd0 # 绑定mtd0到UBI。这条命令会创建UBI设备0并且mdev会创建/dev/ubi0设备文件 ubiattach /dev/ubi_ctrl -m 0 # 创建一个UBI卷,此处使用所有可用空间 ubimkvol /dev/ubi0 -N volume_name -m # 挂载UBIFS mount -t ubifs ubi0:volume_name /mnt/ # 我们也可以擦除一个已经存在的UBIFS卷 ubiupdatevol /dev/ubi0_0 -t |
使用UBIFS的分区作为根文件系统
首先我们需要将裁剪好的rootfs拷贝到NANDFLASH挂载的目录。然后进入u-boot,修改启动参数和命令:
1 2 3 4 5 |
set bootargs mem=256m console=ttyS0,115200 ubi.mtd=0 root=ubi0:Data rootfstype=ubifs rw set bootcmd bootm fe100000 - fe0e0000 saveenv |
第一条修改根文件系统采用mtdblock0的Data卷
第二条为PowerPC下启动命令,其中-代表启动内核而没有initrd image
第三条保存环境变量
参考:
- http://www.yaffs.net/
- http://www.linux-mtd.infradead.org/doc/ubi.html
- http://www.linux-mtd.infradead.org/faq/ubi.html
- http://www.denx.de/wiki/U-Boot/WebHome