本文是鄙人在学习根文件系统移植中对UBIFS文件系统分区挂载的过程,以及对其中常见问题的分析与解答。
文件挂载:将一个设备(通常是存储设备)挂接到一个已存在的目录上。
由于linux操作系统将所有的设备都看做文件,我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上,然后通过访问这个目录来访问存储设备。
挂载分为手动挂载和自动挂载,这里介绍UBIFS文件系统的手动挂载过程,UBIFS文件系统将是以后常用的文件系统。
条件:1.根文件系统已经挂上,将一个mtdblock分区作为UBIFS文件系统类型,然后挂在一个目录下。
2.busybox(提供挂载命令)
步骤:
一、~ >:cat proc/mtd
这里是看我们的分区信息,以便于我们选择挂哪个分区,我有五个分区:mtd0,mtd1,mtd2,mtd3,mtd4。分别对应u-boot(1M)、kernel(15M)、roofts(40M)、apps(100M)、data(100M),我选择mtd2,即rootfs这个分区进行挂载。
二、用mtd2来关联为ubi设备。ubiattach命令用来链接原始flash设备到UBI(原始flash设备的卷管理系统,管理操纵多个卷实现损耗平衡,不需考虑坏块,逻辑擦除块)并且创建相应的UBI设备。
这时我们可以看到我们创建的UBI设备ubi0
三、划分逻辑卷,ubimkvol命令用来从UBI设备上创建UBI卷。我们便可以看见UBI卷ubi0_0。
置于最后这个参数,因为我用的是版本比较旧的busybox,所以需要输入划分大小,我划分33M,所以后面数字为33*1024*1024.
四、挂载(mount命令),并检查是否挂载成功。
五、挂载成功以后记得dmesg,用来查看自己所挂文件系统的信息
这里的available PEBs的值在使用你的所挂分区时比较重要。
六、接下来说说我遇到的常见的问题
1、UBI error: ubi_io_write: error -5 while writing 512 bytes to PEB 0:512, written 0 bytes
这个选项不要选就可以了。
2、随机出现的坏块问题,这里不做解释,因为是随机的嘛。
3.bad CRC(ubifs)和(jffs2)
这是因为没有擦除干净,我们可以在u-boot里面进行擦除,比如:nand erase 1000000 2800000,这里的起始地址和大小随你的分区而定。
4、附上新版busybox的挂载步骤