【嵌入式】使用mkfs.ubifs和unbnize命令制作ubi镜像的教程、方法和注意事项

本文详细介绍了如何使用mkfs.ubifs和ubinize命令在嵌入式开发中制作UBI镜像,包括步骤、相关命令以及注意事项,适合对嵌入式和UBI技术感兴趣的开发者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

🧑 博主简介:现任阿里巴巴嵌入式技术专家,15年工作经验,深耕嵌入式+人工智能领域,精通嵌入式领域开发、技术管理、简历招聘面试。CSDN优质创作者,提供产品测评、学习辅导、简历面试辅导、毕设辅导、项目开发、C/C++/Java/Python/Linux/AI等方面的服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:gylzbk)

💬 博主粉丝群介绍:① 群内高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

🗄️ 专栏介绍:本文归属于专栏《嵌入式开发工具》,专注嵌入式开发中的常用工具,持续更新中,欢迎大家免费订阅关注。

1. 制作ubi镜像的步骤

制作ubi镜像,需要用到两个命令mkfs.ubifsunbnize,两者均包含在mtd-utils工具集中。

以下命令均以gd5f1gq4uby1g这款spinand为例,其相关参数如下所示:

页(PAGESIZE)大小: 2048
物理擦除块(PEB)大小:128KiB
逻辑擦除块(LEB)大小:124KiB(PEB-4KiB)
逻辑擦除块总数量:992(分区容量 / PEB)

1.1 使用mkfs.ubifs制作ubi文件系统

$ mkfs.ubifs -m 2KiB -e 124KiB -c 992 -r output/fs/rootfs -o output/target/rootfs.ubifs

其中:

  1. -m, 最小输入输出单元大小,即页大小
  2. -e, 逻辑擦除块(LEB)大小, 即逻辑块大小(擦除块大小, 4KiB)
  3. -c, 最大逻辑擦除块数量, 分区大小/PEB, 通过mtdinfo /dev/mtdX输出结果中的Amount of eraseblocks也可得到.
  4. -r, 文件系统源目录
  5. -o, 目标文件

1.2 使用ubinize制作ubi镜像

$ ubinize -o rootfs.img -p 128KiB -m 2048 -s 2048 -O 2048 ubi.ini

其中,

  1. -o, 目标文件
  2. -p, 物理擦除块(PEB)大小.
  3. -m, 最小输入输出单元大小,即页大小
  4. -s, UBI头的大小输入输出大小, 从mtdinfo /dev/mtdX的输出结果中的Sub-page size可以得知(默认为页大小)
  5. -O, VID头从PEB起始位置的偏移位置(默认为Sub-page size)
  6. ubi.ini, UBI镜像文件配置文件, 该文件内容如下所示
[rootfs]
mode=ubi
image=output/target/rootfs.ubifs
vol_id=0
vol_size=32MiB
vol_type=dynamic
vol_name=rootfs
vol_alignment=1
vol_flags=autoresize

至此,ubi镜像制作成功(上述部分参数从开机时的内核打印信息中也可以获取到)

2. 相关信息补充

2.1 ubi相关命令

  1. ubiattach:链接MTD设备(MTD设备描述原始Flash设备)到UBI并且创建相应的UBI设备。比如:将MTD设备**/dev/mtd2链接到UBI设备/dev/ubi2上:ubiattach -m 2 -d 2.链接成功后会在/sys/class/ubi/目录下生成对应的UBI设备目录/sys/class/ubi/ubi2**, 该UBI设备上如果有卷,则会根据卷的数量同时创建各个卷的目录:/sys/class/ubi/ubi2_0/sys/class/ubi/ubi2_1等。通过**/sys/class/ubi/ubi2_X/name**可以查看各个卷的名字。

  2. ubidetach:与ubiattach相反的操作,将MTD设备与UBI设备解除链接; 比如:解除MTD设备**/dev/mtd2与UBI设备的链接: ubidetach -m 2, 解除UBI设备/dev/ubi2**上链接的MTD设备: ubidetach -d 2.注意-m-d不可同时使用

  3. ubimkvol, 从UBI设备上创建UBI卷;

  4. ubirmvol, 从UBI设备上删除UBI卷;

  5. ubiblock, 管理UBI卷上的block;

  6. ubinize, 制作UBI镜像;

  7. ubiformat, 擦除Flash(ubiformat /dev/mtd2)、写入UBI镜像到Flash(ubiformat /dev/mtd2 -f /mnt/sdcard/ubifs.img);

  8. mtdinfo, 报告从系统中找到的UBI设备的信息(mtdinfo /dev/mtd2).

3. 注意事项

  1. uboot bootargs中添加ubi.mtd=X选项,内核会自动自动链接MTD设备__/dev/mtdX__到UBI设备**/dev/ubi0**上
  2. 板子上挂载ubifs分区,mount命令不能使用**/dev/mtdblockX**, 需要使用UBI设备:卷标的格式进行挂载。比如:MTD设备**/dev/mtdblock2已经链接到UBI设备/dev/ubi0上,其卷标为rootfs**, 挂载**/dev/mtdblock2需要使用 mount -t ubifs ubi0:rootfs /mnt/ubifs/。另一张办法:UBI设备/dev/ubi0创建时,会为其上每一个卷各自创建一个字符设备/dev/ubi0_X**;目前**/dev/ubi0上只有一个卷,因此只有/dev/ubi0_0**一个字符设备,使用mount -t ubifs /dev/ubi0_0 /mnt/ubifs命令就可以进行挂载。
  3. dd命令(操作**/dev/mtdblockX**)或者ubiformat命令(操作**/dev/mtdX**)都可以写ubi镜像,写之前需要先解除其与UBI设备的链接,否则操作会失败。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

I'mAlex

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值