1,解包
三星的galaxy s2/S3/note等手机的官方odin线刷包是tar压缩,里面的system.img与cache.img等如果在linux下用file命令看,都是data格式。所以解包成有如下几个步骤
> tar -xvf KIES_HOME_I9300ZSDLK4.tar 解压tar包
> simg2img cache.img cache.img.ext4 从data格式转成ext4格式
> mkdir tmp 新建临时文件夹
> sudo mount -o loop cache.img.ext4 tmp 将ext4文件挂载到tmp目录
2,按照需要修改tmp目录中的内容
3,打包
先ls -l cache.img.ext4看大小,假设是1073741824,这个参数后边用到。
> make_ext4fs -s -l 1073741824 -a cache new_cache.img ./tmp
-s是个很重要的参数,不加的话生成的new_cache.img的大小直接就是1073741824(1个G),加上的话是按需生成。
-l刷到机器后的分区大小,-a挂载点(cache.img开机时会挂载到/cache),new_cache.img输出文件名,/tmp文件内容。
上述的simg2img和make_ext4fs是android自带的工具,如果有android源码而且编译通过的话, 这些工具可以在/out/host/linux-x86/bin中找到。
=================================
附赠小知识,odin在刷tar包的时候,如果tar包里面有cache.img,刷机成功后手机会重启到recovery模式,然后recovery将会解析cache/recovery/command命令来执行。修改这个command文件可以达到很多有趣的效果。