moto 跨区跨版本刷机相关

昨天作死给我的Moto X 2014(XT1085,已解锁,twrp2.8.6.0,官方5.1,分区表等级04,已root) 升级marshmallow。

有两种方案,

  1. 刷XT1097的5.1底包(分区表等级05),再刷5.1到6.0(分区表等级06)的OTA包。
  2. 在任何版本下直接在Recovery里恢复别人提供的6.0的TWRP备份包。(并不是!!)

于是我开始动手操作第二种方案,发现system分区刷写至95%的时候会报错ERROR=255.

Image 235

↑来感受一下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无法挂载任何文件系统。

Image 237

直到这时我才想起来去看底包的分区表等级,得知分区表等级是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还要早。

因此:

  1. 如果bootloader和gpt等级相同,则没有必要刷写bootloader。但是bootloader和分区表版本需要匹配,如果等级不同的话则需要刷入同一等级的motoboot和gpt。此外,尽量不要试图降级分区表,更不要降级bootloader。
  2. 正常情况下,除了1085之外的任何版本都可以正常使用TWRP备份包和包括CM在内的大部分第三方ROM,一般来说欧版(XT1092)的底包是比较好用的。也就是说,我本不需要冒着升级分区表和bootloader的风险去刷1097的底包,而是刷入同等级的XT1092底包即可。
  3. 避免在完整底包未放出时使用OTA升级。因为OTA大多会升级bootloader和分区表,而降级分区表和bootloader是极其危险的(但是这次是一个例外,巴西版6.0的06等级的分区表可以安全降级到国行5.1的04等级),一旦出现问题就只能等到完整底包放出之后才能救活。
  4. 用fastboot仅刷入自己需要的部分,而不是用RSD刷入完整包。因为一般来说基带,fsg等分区是不需要动的。如果必须用RSD的话,也最好将通信相关的部分从xml里去掉。
  5. 动手前记得备份。

 

9 thoughts on “moto 跨区跨版本刷机相关

  1. Google Chrome 46.0.2490.86 Google Chrome 46.0.2490.86 Windows 10 x64 Edition Windows 10 x64 Edition

    从第一篇可见文章翻到了最新的一篇[哆啦A梦互粉]

    1. Frank  Mod
      Google Chrome 47.0.2526.73 Google Chrome 47.0.2526.73 Windows 10 x64 Edition Windows 10 x64 Edition

      视奸狂魔[哆啦A梦报警]

  2. tcdw
    Google Chrome 47.0.2526.76 Google Chrome 47.0.2526.76 Android 5.0 Android 5.0

    唉,分区表
    悲伤的回忆
    给自己的 Moto 手机刷机一大坑
    年少无知的我曾经通过官推升级把 xt910 的分区表等级升到 4
    然后就再也回不到 Android 2.3 系统了
    想想 2.3 系统炫丽的官方启动器和特效
    再看看官方 4.x 系统那四不像的样子
    遗憾

    1. Frank  Mod
      Google Chrome 47.0.2526.73 Google Chrome 47.0.2526.73 Windows 10 x64 Edition Windows 10 x64 Edition

      我觉得4.0还好吧,至少有自己的设计规范了,虽然跟material相比我也觉得holo不好看。
      但是不能自由降级确实让人很头疼。

  3. 陈小予
    QQbrowser 9.1.3471.400 QQbrowser 9.1.3471.400 Windows 10 x64 Edition Windows 10 x64 Edition

    过来踩踩

  4. Sogou Explorer Sogou Explorer Windows 10 x64 Edition Windows 10 x64 Edition

    所以我的手机被你当小白鼠用了
    我还请你吃了顿饭
    (我现在就这个表情.jpg)

    1. Frank  Mod
      Google Chrome 47.0.2526.73 Google Chrome 47.0.2526.73 Windows 10 x64 Edition Windows 10 x64 Edition

      是我的手机先当的小白鼠好不好,只不过你那出了意料之外的问题

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注

人姬测试 *