1. root手机
2. 配置/etc/udev/rules.d/51-Android.conf,将手机的USB的vendor id/product id加进去。用lsusb可以看到这两个ID。
3. adb shell
4. su; cd /sdcard
5. tar czvf system.tar.gz /system
6. dd if=/dev/mtd/mtd0 of=/sdcard/boot.img # 应该可以和system分区同样处理,用tar将/boot打包即可。dump整个分区有很多废数据产生
7. 退出adb shell
8. 在PC上:adb pull /sdcard/system.tar.gz
9. tar zxvf system.tar.gz
10. mkfs.yaffs2.x86 ./system system.img # mkfs.yaffs2.x86在googlecode上下载
11. 有了boot.img和system.img,就可以使用Android Kitchen来制作一个刷机包了。
cat /proc/mtd可以看到所有的mtd分区和对应的名字,这样就可以知道boot分区是哪个设备文件了。
刷机时发现:
1. Android kitchen做的刷机包,META-INF/com/google/android目录下的update-binary是不正确的,可以找一个别人制作的w619刷机包中的替代。不正确的update-binary的现象就是刷机出错:status 0(使用的是CWM recovery)
2. META-INF/com/google/android目录下的updater-script中也有几个问题:
A. 文件行尾不能有\r\n,只能有\r,也就是说必须是unix格式的文本。刷机现象:status 6
B. format("MTD", "system"); -> format("yaffs2", "MTD", "system"); 刷机现象:CWM recovery会提示format有三个参数
C. mount("MTD", "system", "/system"); -> mount("yaffs2", "MTD", "system", "/system"); # 和format的现象一样