如何正确的在PC上挂载ubi镜像文件及反向重新制作镜像.docVIP

如何正确的在PC上挂载ubi镜像文件及反向重新制作镜像.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
如何正确的在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)

jackzjh + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档