欢迎转载收藏,转载请保留如下信息:
Mr.ROM出品
Email:
iammrrom@gmail.com
Blog:
http://blog.sina.com.cn/mrrom1
各位使用MTK提供的flash_tool进行刷机时,有否注意到刷机包中有一个system.img文件?实际上不管是何种平台,Android系统代码编译完成后,都会生成system.img这个文件。
它是Android系统最重要的目标文件,其中包含整个Android部分的镜像。
本文介绍如何解包、编辑、重新打包此文件。
1. system.img文件的格式
system.img文件实际上是yaffs2格式的压缩包,关于yaffs2格式,如下是重要的参考链接:
. 官方网站: http://www.yaffs.net/
. 百度百科: http://baike.baidu.com/view/1655597.htm
2. 如何解压缩system.img文件
unyaffs2这个工具是专门用于解压缩yaffs2包的,其官方网址如下:
http://code.google.com/p/unyaffs2/
从这个网址下载到unyaffs2.c和unyaffs2.h后,gcc -o unyaffs2 unyaffs2.c即可得到此工具
然后unyaffs2 system.img,即可在当前目录下生成system.img中保存的所有文件。 为了不污染当前目录,
我一般会生成一个临时目录存放需要解压的system.img,然后在其中进行解压缩的工作。
3. 编辑解压后的内容及注意事项
你可以用任意工具去编辑生成的文件。 到底哪些文件可以动,哪些不能动,请参看我的其他系列文章。你也可以在里面添加需要的文件,例如应用程序。
注意:类似于vi这样的工具,在编辑后会在当前目录生成临时文件,记得在编辑完成后,删除这些临时文件。
4. 重新打包
打包要用到mkyaffs2image这个工具。这个工具在我们编译过程中会生成,存放在./out/host/linux-x86/bin/mkyaffs2image
但是你也可以从yaffs官方网站下载最新的代码自己来生成此工具,这对于你在Cygwin环境下使用这个工具特别方便。
从官方网站下载代码编译的方法如下:
。 cd yaffs2/utils
。 make
接下来,加入你要打包的文件都放在system这个目录下,你就可以用mkyaffs2image -f system system.img这个命令来打包。
然后它就可以被烧录到手机上使用了。
请记住一定要使用-f参数!! 这个参数保证最后烧录到手机后,所有的文件的权限、用户、组都符合目标手机的要求。否则
生成的system.img烧录到手机上后,会出现严重的权限问题。