注:本文内容全部为操作层面的内容,不涉及UBI及UBIFS的任何实现及介绍的内容。 个别参数值请自行根据自己设备情况修改!
下面开始介绍如何在Linux 和 U-Boot 下挂载UBIFS。内核从2.6.32版本开始,对UBIFS支持的比较完善,因此建议使用2.6.32以上的版本开发UBIFS。使用的U-Boot版本为2011.12。Flash介质为512MB Nand Flash。1、UBIFS用户态工具
工欲善其事,必先利其器。话虽这样说,实则是不得已而为之,如果不需要工具就能直接搞定岂不是更好。无奈对于挂载UBIFS,我们需要先编译出来一些工具,这些工具位于mtd-utils中,其提供的与UBIFS相关的工具有:
ubinfo - provides information about UBI devices and volumes found in the system;
ubiattach - attaches MTD devices (which describe raw flash) to UBI and creates corresponding UBI devices;
ubidetach - detaches MTD devices from UBI devices (the opposite to what ubiattach does);
ubimkvol - creates UBI volumes on UBI devices;
ubirmvol - removes UBI volumes from UBI devices;
ubiupdatevol - updates UBI volumes; this tool uses the UBI volume update feature which leaves the volume in "corrupted" state if the update was interrupted; additionally, this tool may be used to wipe out UBI volumes;
ubicrc32 - calculates CRC-32 checksum of a file with the same initial seed as UBI would use;
ubinize - generates UBI images;
ubiformat - formats empty flash, erases flash and preserves erase counters, flashes UBI images to MTD devices;
mtdinfo - reports information about MTD devices found in the system.这里我们主要会用到的有:mtdinfo、ubiformat、ubiattach、ubinfo、ubimkvol。工具的编译过程不再详述,可见参考资料【3】。
2. Linux下挂载
内核中在make menuconfig时选好UBIFS相关支持,具体见参考资料【1】。启动Linux 后,将一个MTD分区挂载为UBIFS文件系统的一般步骤为:
1. ubiformat /dev/mtdX //擦除mtdX
2. ubiattach /dev/ubi_ctrl -m Y //和mtdY关联,/dev/ubi_ctrl需要自己创建<