如何从 UBI 映像更改单个文件

如何从 UBI 映像更改单个文件

我有一个 ubi 图像文件 (.ubi),我想从该图像更改单个文件(/etc/network/interfaces准确地说)。

如何更改 ubi 映像中的单个文件?

我使用的是 OS X,但我也有一个 Ubuntu VM。

答案1

好吧,经过大量阅读后,我终于弄清楚了如何在 Ubuntu 上做到这一点:

1.) 模拟 NAND MT 设备nandsim

modprobe nandsim first_id_byte=... second_id_byte=.. third_id_byte=.. fourth_id_byte=...

NAND 芯片 ID 列表。

2.) 找出 MT 设备 ID

cat /proc/mtd | grep -i "NAND Simulator"

3.) 加载UBI内核模块

modprobe ubi

4.) 擦除 MT 设备(您可以跳过此步骤)

flash_erase /dev/mtdX 0 0

5.) 刷新 UBI 镜像ubiformat

ubiformat /dev/mtdX -y -f /path/to/ubi -O XXXX -s XXXX

6.) 将 MT 设备连接到 UBI,ubiattach并记下 UBI 设备编号

ubiattach -p /dev/mtdX

7.) 安装它mount

mount -t ubifs ubiX /path/to/mount-point/

8.) 进行更改。

9.) 创建 UBIFSmkfs.ubifs

mkfs.ubifs -o ubifs.img -m XXXX -e XXXX -c XXXX -v -r /path/to/mount-point/

10.) 创建 UBI 镜像ubinize

ubinize -o final.ubi -p XXXX -m XXXX -s XXXX -v ubinize.cfg

XXXX= 特定于所使用的 NAND 闪存芯片的参数。

ubinize.cfg看起来像这样:

[rootfs]
mode=ubi
image=ubifs.img
vol_name=rootfs
vol_flags=autoresize
vol_type=dynamic
vol_id=0

相关内容