- 1、本文档共9页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:18428362892(电话支持时间:9:00-19:00)。
如何正确的在PC上挂载ubi镜像文件及反向重新制作镜像.doc
如何正确的在 PC 上挂载 ubi 镜像文件及反向重新制作镜像
注:文中的 PC 环境为 ubuntu 13.04 32 位
其中经历的各种曲折就不表述了,下面直接说正确的方法步骤。
一,工具准备
从 HYPERLINK "/UBIFS#Mounting_UBI_Image_on_PC_using_nandsim" /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,请参照
HYPERLINK "/zh-cn/lucid-updates/i386/mtd-utils/download" /zh-cn/lucid-updates/i386/mtd-utils/download,将 mtd-utils 的最近的源加入到 sources.list 中,然后再安装。比如:
deb .tw/ubuntu precise main universe
方法2:
通过源码安装。(我用的是方法1,方法2没有验证)
$ git clone git:///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..
0000040: ffff ffff ffff ffff ffff ffff ffff ffff
这是 ubi 镜像的头部,从 ubi-header.h 中可以了解到这个头部各个字节的含义。
struct ubi_ec_hdr {
uint32_t magic; //#define UBI_EC_HDR_MAGIC 0 uint8_t version;
uint8_t padding1[3];
uint64_t ec; /* Warning: the current limit is 31-bit anyway! */
uint32_t vid_hdr_offset;
uint32_t data_offset;
uint8_t padding2[36];
uint32_t hdr_crc;
} __attribute__ ((packed));
上面的 UBI_EC_HDR 告诉了我们 UBI_VID_HDR 的存储位置 (红色字部分 0000 1000) 是偏移 4KB,DATA 区的存储位置是偏移 8KB (绿色字部分 0000 2000)。
我们来验证一下:
$ xxd userdata.img | less
0001000: 5542 4921 0101 0005 7fff efff 0000 0000 UBI!
0001010: 0000 0000 0000 0000 0000 0000 0000 0000
0001020: 0000 0000 0000 0000 0000 0000 0000 0000
0001030: 0000 0000 0000 0000 0000 0000 b825 64a8 %d.
0001040: ffff ffff
文档评论(0)