如何正确的在 PC 上挂载 ubi 镜像文件及反向重新制作镜像
注:文中的 PC 环境为 ubuntu 13.04 32 位
其中经历的各种曲折就不表述了,下面直接说正确的方法步骤。
一,工具准备
从 http://elinux.org/UBIFS#Mounting_UBI_Image_on_PC_using_nandsim 这个网站得知,要挂
载 ubi 镜 像 , 需 要 使 用 到 nandsim ,ubidetach , ubiattach 等 工 具 。 nandsim 系统自带 ,
ubidetach 和 ubiattach 需要另外安装一个叫 mtd-utils 的工具集。mtd-utils 工具集里还有制作
镜像所需的 mkfs.ubifs 和 ubinize。
mtd-utils 的安装:
方法 1:
$ sudo apt-get install mtd-utils
如果提示在库里找不到 mtd-utils,请参照
http://packages.ubuntu.com/zh-cn/lucid-updates/i386/mtd-utils/download,将 mtd-utils 的最近的
源加入到 sources.list 中,然后再安装。比如:
deb http://ubuntu.stu.edu.tw/ubuntu precise main universe
方法 2:
通过源码安装。(我用的是方法 1,方法 2 没有验证)
$ git clone git://git.infradead.org/mtd-utils.git
$ cd mtd-utils/
$ make
二,挂载分析步骤
首先要用 nandsim 模拟出一个 mtd 设备。而且这个 mtd 设备要与 ubi 镜像的参数保存一致,
否则后面的步骤会失败。这些参数包括 mtd 设备的物理块擦除大小 (Physical Erase Block,
PEB) 和 页大小 (Page Size)。网上的资料对于这一点完全没有提及。
这两个参数可以从 ubi 镜像中分析出来。
ubi 镜像有多个 PEB 组成,每个 PEB 包括以下三部分内容
[ UBI_EC_HDR,UBI_VID_HDR,DATA (LEB) ]
$ xxd userdata.img | less
0000000: 5542 4923 0100 0000 0000 0000 0000 0000 UBI#............
0000010: 0000 1000 0000 2000 2240 9f1f 0000 0000 ...... ."@......
0000020: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000030: 0000 0000 0000 0000 0000 0000 2956 d5be ............)V..