网站首页 > 开源技术 正文
1. UBIFS 文件系统简介
传统的flash文件系统如jffs2, yaffs2等是工作在MTD 设备上,而UBIFS则建立在UBI卷层之上,UBI卷层工作在MTD设备层之上,也可以说,UBIFS涉及三个子系统:
- MTD 子系统,提供对flash芯片Raw的访问接口。MTD子系统提供了MTD device的概念,比如/dev/mtdX(字符设备)和/dev/mtdblockX(块设备);
- l UBI Subsystem, 它工作在MTD设备之上,提供了UBI逻辑卷,对上层屏蔽了一些直接使用MTD设备需要处理的问题,如wear-leveling(磨损平衡)和volume management(坏块管理)功能等;
- l UBIFS 文件系统,工作于UBI之上。它提供文件的open, read, write等操作;
2.根文件系统镜像文件制作
- l mkfs.ubifs 参数说明
-x lzo 指定使用lzo压缩方法,默认是lzo, 还支持zlib, zlib的压缩率高,但是lzo压缩解压速度快。
-m 2048 Nand Flash的最小读写单元,一般为page size.
-r ./rootfs 指定根文件系统目录树的路径
-o rootfs.ubifs 指定制作出的根文件系统镜像文件名
-e 126976 指定LEB(Logical Erase Block, 逻辑擦除块)大小。Nandflash 读写单位为页,擦除单位为块,以ESMT F59L1G81MB 为例:一个PEB(Physical EraseBlockSize, 物理擦除块)大小就是2048*64=131072,-e 的算法是物理擦除块大小-2*页大小,这里就是131072-2*2048=126976(注:这里的擦除块大小都不包含oob, 有包含子页和不包含子页之分。)
-c xxx 指定该分区最大逻辑擦除块数量,该值随着根文件系统分区的大小和该分区的坏块数调整。
- l ubinize 参数说明
-o rootfs-ubifs.bin 指定ubinize处理后输出的image文件名,该文件可以由u-boot的nand write命令直接烧录;
-m 2048 指定minimum input/output unit 大小,为Nandflash的页大小;
-p 131072 指定物理擦除块大小:64 Pages * 2048 Byte/Page = 131072(不包含oob的大小)
-s 512/2048 指定sub-page-szie大小,如果有sub-page, 则配置为512;如果没有sub-page,则配置为2048
- n 关于配置文件说明:
image=rootfs-ubifs.img 指定mkfs.ubifs 制作成的根文件系统镜像文件路径;
vol_id=0 指定根文件系统树的卷标为0,u-boot的bootargs参数需要根据它来设置;
vol_size=xxx 指定该UBI逻辑卷的大小,该值计算公式一般为 逻辑擦除块大小*逻辑擦除块个数。该值一般不用写,默认值是image大小。写了这个作用是帮助检查image是否超过了分区限制,制作时候就会提示,否则mount会出错。逻辑擦除块个数的值是经过计算的最大值(前面mkfs.ubifs -c 指定的值),不过volume flag autoresize 参数会自适应大小,不会浪费空间,后面Linux 系统内核启动过程中可以看到这个现象。
vol_type=dynamic
vol_name=xxx 指定UBI Volume的名称,u-boot的bootargs参数需要根据它来设置;
vol_flags=autoresize UBI Subsystem 在系统启动时自动调整逻辑擦除块的个数;
经过ubinize 命令处理过后的根文件系统镜像rootfs-ubifs.bin就可以直接在u-boot使用
nand write 命令烧录到相应的根文件系统分区上去了。
- 关于Minim Flash input/output, sub-pages, UBI Header的说明:
http://www.linux-mtd.infradead.org/doc/ubi.html#L_min_io_unit
猜你喜欢
- 2024-10-07 MySQL 数据库优化方案及参数详解(值得收藏)(上)
- 2024-10-07 一文看懂 Linux 系统结构(linux的系统结构)
- 2024-10-07 带你真正认识Linux 系统结构(简述linux的系统结构)
- 2024-10-07 简直不要太硬了!一文带你彻底理解文件系统
- 2024-10-07 聊聊debezium的ChangeEventQueue(debest)
- 2024-10-07 多线程下的调用上下文 : CallContext
- 2024-10-07 通过IDoc来实现公司间STO的外向交货单过账后自动触发内向交货单2
- 2024-10-07 SAP 用户权限(sap用户权限怎么设置)
- 2024-10-07 使用Python编写量子线路打印项目,并使用Sphinx生成API文档
- 2024-10-07 不是Typescript用不起,而是JSDoc更有性价比?
你 发表评论:
欢迎- 最近发表
-
- 后端服务太慢?试试这 7 招(后端 服务端 区别)
- 做一个适合二次开发的低代码平台,把程序员从curd中解脱出来-1
- Caffeine缓存 最快缓存 内存缓存(caffeine缓存使用)
- Java性能优化的10大策略(java性能调优从哪几个方面入手)
- New Balance M576PGT 全新配色设计
- x-cmd pkg | qrencode - 二维码生成工具
- 平和精英抽奖概率是多少 平和精英抽奖物品一览
- x-cmd pkg | tmux - 开源终端多路复用器(terminal multiplexer)
- 漫威官方App中文版上线:全站漫画限时免费
- macOS Monterey 12.7.4 (21H1123) 正式版发布,ISO、IPSW、PKG 下载
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)