我有一个 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=...
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