2012年10月11日

2 小时半途而废玩 android rom

最近得了个新手机,国货。

跟手里再用的经典摩托 milestone 不同,国产手机本来就少有 cyanogenmod 直接支持,倘若又无强人仗义撑腰(在这里真的要特别感谢 nadlabak,milestone 这样的老机器能有 cm7 可用,当初真是没有选错机器!),就只能忍受国内论坛各种夹带私货的 rom。

现在再用的来自移动叔叔的 rom 算干净的,但也会每次开机都重新搞个叔叔工具箱进来。于是花了点时间看了看能不能把这个东西干掉。

linux 用户么,第一个要怀疑的就是 /etc/init*。各种 find/grep 下来,发现塞了私货的脚本其实写在 /init.rc 里。看到了脚本就好办,三下五除二搞定。

一个顺带的发现是替换启动动画其实很简单,替换 /system/media/bootanimation.zip 即可,里面就是一堆图片+一个描述文件,自己做起来也不麻烦。关键字『best android bootanimation』能给出不少好结果。

重启,结果移动叔叔又回来了,检查 /init.rc,居然恢复成之前的样子了,失败。

看了看刷机 zip 包,里面的目录结构从 /system 起。那么,根目录的这些东西是从哪儿来的呢?看来看去,包里面的 boot.img 最可疑。

file 了一下 boot.img,类型是 data,失败。尝试直接 mount boot.img,失败。放狗搜 boot.img,居然是个大杂烩,跟 bootanimation.zip 的风格一点都不一样,很嵌入式。

顿时有点不想搞了。不过路线看起来还是比较清楚的,gzip+cpio。但是改完了的新 boot.img 是不是就这么塞回刷机包里看起来还是有风险,因为刷机包貌似有个什么签名机制。没来得及细看。

等有时间了再慢慢琢磨吧,奶爸不易。

总结:

  • 做刷机包不是很高精尖的技术。只要能找到准确的文档,照办即可。
  • 通常 android 手机拿来第一步都是要刷 recovery 进去。基本上,线刷就是用特定工具配合特定驱动,将手机内置存储分段刷入目的不同的数据块。recovery 就是其中之一。如果要对内置存储重新分区,看起来只有在线刷的阶段做比较安全。
  • 所谓卡刷,就是用固化在 recovery 段的代码负责格式化某些分区,并将刷机包的内容部署到这些分区里(比如 /system)。
  • 包里面的各种脚本其实有 linux 运维经验的人都不难看懂,脚本的代码质量也不见得都高,或许有优化的余地。
发表评论