昨晚捣鼓了下,发现比想象的容易很多。分区信息并不是写死的。而是在 emmc 设备的开始有分区表。因此手动改改分区表再重启格式化即可。然后发现把最后一个分区完全删掉也没问题。改改 vold.fstab 就行。有时间的话甚至可以做个完美卡刷包出来。

对于 V970 来说,他的分区数量超过了四个,因此里面有一个扩展分区,恰好我们要修改的最后两个分区都在这个扩展分区里面,于是只要修改 /emmc@ebr1 文件里面的分区表即可。用 dd if=/emmc@ebr1 of=/sdcard/test bs=512 count=1 即可 dump 出来,然后 adb pull 下来修改。这里有个值得一提的地方是,不知道是 MTK 的 bug 还是所有 android 都是这样,最后一个分区的 size 值是错误的,正常应该是 block 总数,他最后一个分区却是字节总数。因此用标准的工具比如 fdisk 之类编辑会出错,只能手动修改。修改好了以后,重启进入 recovery,adb 连上用 dd 写回 /emmc@ebr1。再重启进 recovery 让 kernel 认出新分区,最后 mke2fs -T ext4 /emmc@usrdata 。 同时别忘记 mount 上 /system ,修改 /system/etc/vold.fstab,将里面包含 /emmc@fat 的行删除,否则 vold 会彻底罢工导致 sd 卡也无法加载。

btw:神族上的风气真是不好,总是故作神秘,从来不见原理介绍贴。要说是贴合小白伸手党需求吧,往外放的东西却是专杀小白。有人放了个个 3g data 的包出来,下来一看居然是分好了把整个 emmc dump 出来。结果一堆把 imei 刷丢的。其实只要做的人认真点,避开 nvram,也不至于搞死这么多人。。