基于flash的根文件系统的移植(jffs2)

本文介绍了如何在Linux系统中移植和使用JFFS2根文件系统,包括ubifs和jffs2的对比、mtd-utils工具的编译、内核配置、分区调整、jffs2镜像制作以及内核和u-boot的烧录。详细讲解了jffs2的优缺点,并提供了环境变量配置和系统烧录的步骤。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值