zoukankan      html  css  js  c++  java
  • android system.img

    哥们要我做些模拟包,给过来的是mtk的底包,需要从system.img中提取部分文件。

    网上一找资料,说是yaffs2文件系统,同时以前做linux的时候也是用yaffs2,感觉碰到老朋友了,不管三七二十一,跟着就用uyaffs工具解文件,但怎么都是一个error。

    后面同事帮忙把文件算是弄出来了,网上一查,原来从android从2.3版本起就推荐用ext4文件系统。内部储存伴随着从raw nand flash 到 emmc的变化。

    而ext4默认制作出来的img会有很多空白的数据,文件比较大,又整了个-s的参数来对该img进行压缩,所以默认做出来的img不能直接mount成ext4文件系统,需要用simg2img工具解压成正常的ext4 img文件。

    但这里还是有点不明白,用sudo fdisk -l tmp.img,查看解压出来的img

    Disk tmp.img: 461 MB, 461373440 bytes
    255 heads, 63 sectors/track, 56 cylinders, total 901120 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00000000

    Disk tmp.img doesn't contain a valid partition table

    发现这个文件根本没有分区表,暂时还没搞懂真没回事

    如果要把一个文件夹制作成该格式的文件,只用make_ext4fs就行了

    如果要跟踪makefile system.img生成流程,其实很简单:

    在makefile里面BUILT_SYSTEMIMAGE调用build/tools/releasetools/build_image.py进行分区处理,包括其他如data分区也是一样,他们会把处理的结果保存到$OUT/obj/PACKAGING里面。

    build_image.py还会调用system/extras/ext4_utils/mkuserimg.sh,而mkuserimg.sh就调用make_ext4fs真正处理。

    参考:

    http://elinux.org/Android_File_Systems

    https://lwn.net/Articles/440690/

    http://arstechnica.com/information-technology/2010/12/ext4-filesystem-hits-android-no-need-to-fear-data-loss/

  • 相关阅读:
    lodash kebabCase
    lodash escapeRegExp 转义正则特殊字符
    lodash capitalize 首字母大写
    lodash camelCase 驼峰写法
    lodash pick
    lodash random
    lodash round
    Linux 目录结构
    每天一个linux命令(6/18):lsof命令
    Linux 内核编译步骤及配置详解
  • 原文地址:https://www.cnblogs.com/Empenguin/p/3673274.html
Copyright © 2011-2022 走看看