ubifs 和 jffs2 根文件系统
根文件系统就是基于flash的文件系统,与传统的文件系统ext2、ext3、ext4不同,他们都是针对不同的硬件而诞生的,不同的根文件系统性能指标不同,那么ubifs和jffs2就是比较常见的用的比较多的根文件系统,jffs2是很早期的根文件系统,ubifs是linux内核2.6之后才产生的一种新型根文件系统。
-
jffs2 专门针对Norflash设计的文件系统,小页的Nandflash也可以使用,只是效率不高;因为根文件系统存放在Flash上,所以根文件系统路径下的文件修改后掉电仍然存在;
-
(顺带一提)yaffs2 早期专门针对大页Nandflash设计的文件系统,他的源码独立于Linux内核维护着,所以可以在单片机等裸机环境下使用(只有该文件系统可以),linux内核想用它必须要打上补丁;在分区较大时,nandflash的挂载时间较长,现在逐渐被ubifs广泛替代;
-
ubifs 是专门针对Nandflash设计的一种文件系统,他在内核的MTD一层上面又建立了UBI一层,挂载速度、磨损均衡、读写速度非常快,目前nandflash上应用得最广的一种根文件系统;
ubifs详情:https://blog.csdn.net/yedushu/article/details/79767099
VFS虚拟文件系统,这个文件系统保证了linux下多种文件类型的统一,文件系统、根文件系统、网络文件系统、ram文件系统就是通过VFS的机制实现不同层文件系统的标准统一。
mtd-utils工具
mtd-utils编译依赖lzo、zlib和libuuu(e2fsprogs)这几个库,所以我们在编译它之前先要编译这些库。另外,为了在运行mkfs.jffs2和mkfs.ubifs这些命令时不依赖这些动态库,我们采用静态编译、然后静态链接生成这两个命令。
创建/x86_tools/mtd_utils目录
下载我们工具所需要的库lzo和zlib
lzo库:http://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gz
zlib库:wget https://github.com/madler/zlib/archive/v1.2.10.tar.gz -O zlib-1.2.10.tar.gz
e2fsprogs库:wget
https://github.com/tytso/e2fsprogs/archive/v1.43.7.tar.gz -O e2fsprogs-1.43.7.tar.gz
lzo库解压缩之后配置编译参数
./configure --prefix=`pwd`…/install --enable- static --disable-shared
–prefix指定安装路径 --enable-static指定生产静态库 --disable- shared 指定不要生成动态库,指定我们编译的参数。然后make && make install
配置zlib库
配置e2fsprogs库 编译make ; make install-libs