UBI镜像文件打包与编辑

rootfs.ubi 是基于 UBI(Unsorted Block Images)的镜像文件,可以将嵌入式文件系统打包成这个文件,方便储存与管理。

接下来的操作都需要在root模式下进行。

首先确保系统有ubi系列工具,没有的话请安装:

shell 复制代码
sudo apt install mtd-utils

用如下命令可以打包文件系统:

shell 复制代码
#将rootfs目录生成UBI文件系统镜像
sudo mkfs.ubifs -r rootfs -m 2048 -e 126976 -c 1816 -o rootfs.ubifs
#根据ubinize.cfg配置将文件转换成UBI镜像
sudo ubinize -o rootfs.ubi -m 2048 -p 128KiB -s 2048 ./ubinize.cfg

ubinize.cfg文件内容如下:

shell 复制代码
[ubifs]
	mode=ubi
	image=rootfs.ubifs
	vol_id=0
	vol_size=220MiB
	vol_type=dynamic
	vol_name=rootfs
	vol_flags=autoresize
	vol_alignment=1

注意

  • vol_size必须要大于rootfs.ubifs

如果后续rootfs目录丢失,只有rootfs.ubi的情况下,则可以通过下面的方法还原出rootfs目录:

先将rootfs.ubi文件复制到工作目录下,然后用mkdir建立rootfs目录和temp目录。

接着用下面的命令

shell 复制代码
# 1. 加载内核模块
sudo modprobe ubi
sudo modprobe ubifs
sudo modprobe nandsim first_id_byte=0x20 second_id_byte=0xaa third_id_byte=0x00 fourth_id_byte=0x15

# 2. 将 UBI 镜像写入虚拟 MTD 设备
sudo dd if=rootfs.ubi of=/dev/mtd0 bs=1024

# 3. 附加 UBI 设备
sudo ubiattach /dev/ubi_ctrl -m 0 -O 2048

# 4. 查看 UBI 卷信息(找到 rootfs 卷,比如 ubi0_0)
sudo ubinfo /dev/ubi0

# 5. 挂载 UBI 卷
sudo mount -t ubifs /dev/ubi0_0 ./temp

# 6. 挂在成功后将文件复制到rootfs目录,-a参数是保留文件一切属性
sudo cp -a ./temp/. ./rootfs/

# 7. 卸载和清理
sudo umount ./temp
sudo ubidetach /dev/ubi_ctrl -m 0
sudo rmmod nandsim

进行完上面的操作后,rootfs目录下就是之前打包的文件了,可以直接操作这个目录,然后再按照最开始的方式打包即可。

相关推荐
码途行者21 分钟前
Linux 服务器 Golang 安装及环境变量配置
linux·运维·服务器
叼烟扛炮22 分钟前
Linux 学习笔记(四十七):TCP 状态机与 tcpdump 抓包排雷实战
linux·网络·笔记·学习·tcp/ip·tcpdump
爱和冰阔落30 分钟前
【Linux网络】UDP 聊天室怎么实现?从在线用户管理、消息广播到双线程收发与线程池
linux·运维·网络·udp
芯片人00739 分钟前
GEK100系列芯片进入上市公司上海移远通信供应链
人工智能·单片机·嵌入式硬件·物联网·芯片
雪落漂泊39 分钟前
Linux进程(三)概念:进程优先级与进程切换篇
linux·运维·服务器
拂拉氏40 分钟前
【知识讲解】 Linux信号与可重入函数的认识
linux·运维·服务器
cynicism??1 小时前
Linux 与 ZXISOS 驱动开发架构对比
linux·驱动开发·架构
djjjx.1 小时前
Linux进程篇(十二):从零构建属于你的自定义 Shell 解释器
linux·运维·服务器
fly_sunnn1 小时前
ADC模数转换器
单片机·嵌入式硬件
我叫洋洋2 小时前
I2C 为什么必须用开漏输出?从推挽短路、线与,到上拉电阻取值
单片机·嵌入式硬件