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/

  • 相关阅读:
    201-STM32+Air724UG基本控制篇(阿里云物联网平台)-设备使用物模型Topic上报温湿度数据
    Sentinel Go 核心统计结构滑动窗口的深度解析
    golang sync.Mutex互斥锁的实现原理
    Golang-Scheduler原理解析
    Golang-Channel原理解析
    golang里channel的实现原理
    最长回文子序列
    GO语言的goroutine并发原理和调度机制
    golang 常见问题
    通过js给网页加上水印背景
  • 原文地址:https://www.cnblogs.com/Empenguin/p/3673274.html
Copyright © 2011-2022 走看看