昨天作死给我的Moto X 2014(XT1085,已解锁,twrp2.8.6.0,官方5.1,分区表等级04,已root) 升级marshmallow。
有两种方案,
- 刷XT1097的5.1底包(分区表等级05),再刷5.1到6.0(分区表等级06)的OTA包。
- 在任何版本下直接在Recovery里恢复别人提供的6.0的TWRP备份包。(并不是!!)
于是我开始动手操作第二种方案,发现system分区刷写至95%的时候会报错ERROR=255.
↑来感受一下iPad2的摄像头
这时候系统是可以引导的,只不过会卡在第二屏。
这时候我想既然恢复包是基于1097的ROM的,那么刷成1097的底包大概就可以了。(别着急动手,看后面!)
然后我找来1097的5.1底包,VICTARA_RETBR_XT1097_5.1_LPE23.32-14.2_cid12_CFC.xml.zip
用fastboot刷入了gpt.bin,boot.img和system.img的所有chunk。
因为一般情况下不需要也不建议动bootloader,也就是motoboot.img,所以没有刷。
这时候悲剧发生了。刷完之后开机直接卡在第一屏,recovery无法挂载任何文件系统。
直到这时我才想起来去看底包的分区表等级,得知分区表等级是05,但与此同时其他版本的等级都是04,也就意味着,我现在如果想刷回国行或其他版本的5.1底包,那会有极大的变砖的风险。
就像这里提到的:[WARNING] Do NOT Downgrade Your Bootloader o… | Moto X (2014) | XDA Forums
The Moto X 2014 is not a Nexus device – you CANNOT safely downgrade your bootloader (motoboot.img) or partition table (gpt.bin). You risk bricking if you do, especially if you downgrade the bootloader!!!
而且一般情况下,在刷机的时候是不需要,也不应该动Bootloader(也就是motoboot.img)的,但是由于我刷入了不同区域且不同等级的分区表,因此需要一个能够引导05等级分区表的bootloader。
Also, you should not attempt to have a bootloader-partition table mismatch in terms of versions. Both your bootloader and your partition table should be the same version – i.e., if your bootloader is the 5.0 bootloader, your partition table should be the 5.0 partition table.
然后我再刷入了motoboot.bin,随后就可以正常启动1097的5.1官方ROM,恢复6.0的备份包也没有报错了。
另外,我在刷入boot.img的时候,fastboot界面上会显示粉色的hab check failed,但是系统可以正常启动,我很好奇这个东西是什么原因引起的。
更新:但是我给朋友的moto x 2014用相同方法刷机的时候遇到了诡异的问题:
@今天XANA出橙了吗_69包5橙 的手机型号以及状态跟我的完全一样,唯一的区别是为了他保修所以刷了原厂的5.1镜像和第一屏。
我用与本文相同的方法和顺序(gpt→boot→system→motoboot)刷入1097的5.1底包,结果刷完之后卡在第一屏,recovery的状态跟上文第二张图完全一样。
但是这完全说不通,因为我认为我的手机上出现这样的现象是由于我没有刷05等级的motoboot导致Bootloader无法引导05等级的分区表,但是在这台手机上我已经刷了1097的可以引导05等级gpt的motoboot。我怀疑是我的判断哪里出了问题。
由于两部手机的区别之一是他的logo并不是官方的logo,于是我刷了1097底包中的logo.bin,但是并没有什么卵用。接下来我只能假定刚才的步骤有什么地方出了问题,因此把刚才的所有步骤又执行了一遍,重复两次,问题依旧。
因为是卡第一屏,直觉告诉我问题出在boot,于是这次我等到刷完system之后再刷boot,而且竟然成功了。不过我承认这么做没有任何道理,纯粹是为了碰运气。
总而言之,我以后再也不想作死去碰bootloader和gpt了。
顺便惊叹一下官方的marshmallow竟然比官方CM还要早。
因此:
- 如果bootloader和gpt等级相同,则没有必要刷写bootloader。但是bootloader和分区表版本需要匹配,如果等级不同的话则需要刷入同一等级的motoboot和gpt。此外,尽量不要试图降级分区表,更不要降级bootloader。
- 正常情况下,除了1085之外的任何版本都可以正常使用TWRP备份包和包括CM在内的大部分第三方ROM,一般来说欧版(XT1092)的底包是比较好用的。也就是说,我本不需要冒着升级分区表和bootloader的风险去刷1097的底包,而是刷入同等级的XT1092底包即可。
- 避免在完整底包未放出时使用OTA升级。因为OTA大多会升级bootloader和分区表,而降级分区表和bootloader是极其危险的(但是这次是一个例外,巴西版6.0的06等级的分区表可以安全降级到国行5.1的04等级),一旦出现问题就只能等到完整底包放出之后才能救活。
- 用fastboot仅刷入自己需要的部分,而不是用RSD刷入完整包。因为一般来说基带,fsg等分区是不需要动的。如果必须用RSD的话,也最好将通信相关的部分从xml里去掉。
- 动手前记得备份。
发表回复/Leave a Reply