Nexus 6/9 及以后的 Nexus 设备的 Bootloader 解锁机制及问题

阅读时长:4 分钟

如果您给谷歌与设备制造商合作设计制造的 Nexus 系列设备刷机,那么您一定不会对 Bootloader 锁(以下简称 BL 锁)和 fastboot 工具陌生。作为从 Nexus One 就开始引入的机制,如果希望在 Nexus 设备上刷写任何固件,包括官方的以及非官方的,都需要先使用 fastboot 解开 BL 锁才可以刷,否则无法刷入。(XDA 论坛上有人说在一些早期型号的 Nexus 上无须解锁也可以刷入谷歌放出的原厂固件,但因为我也没有那些老设备,无法考证)

直到 Nexus 5,解 BL 锁都只有一个大步骤:在设备进入了 fastboot 模式并连接到电脑的前提下,电脑上使用 fastboot 工具输入简简单单的一行解锁命令,设备就解锁了。

从 Nexus 6 和 Nexus 9 这一代设备开始,解锁的步骤就又加了一步:需要先在系统中的开发者选项里勾选一个叫做“允许 OEM 解锁”的选项,然后才能按照以前的步骤解锁。如果没勾选这个选项,解锁请求是会被拒绝的。此外,也没有任何其它方法能够调用这个选项。

开发者选项中的“允许 OEM 解锁”选项

谷歌设计这个机制的一大目的就是为了提高“安全性”:假如用户的设备丢失或被盗,他人获得设备后,只要机主设了密码而且没有在开发者选项中勾选允许 OEM 解锁,就不能对设备进行刷机或任何修改。毕竟不能进入设置应用开启这个选项,也不能解 BL 锁。加上从 Android 5.1 开始引入的设备保护机制,在重置设备后,需要用重置前在设备上登录的帐户来激活设备才能使用,因此获得设备的人恢复出厂设置也不能使用设备。因此,就算设备丢失或被盗,也不能被重新使用。

您可能觉得,谷歌新设计的解锁步骤也就是先在系统里勾一个选项再解锁吗,不算麻烦啊。当然了,并不是说这有多麻烦,而是谷歌设计的这种解锁机制造成了不少人的手机变砖。

变砖

自从 Android 5.0 起,Nexus 设备 OTA 更新失败变砖的事故数量也开始不断上升了。有一些用户反映,他们在设备上接到 OTA 更新之后,重启安装时出现错误,显示安卓机器人倒地、肚子上有一个红色感叹号三角的图标。出现错误后,系统也无法正常启动。

关于这个错误的原因,现在还无法确定。有的人(主要是谷歌脑残粉等)否认正常接收 OTA 变砖的事实,称所有这种变砖都是因为,在墙内更新重启后,开机没有第一时间翻出去墙,然后又收到了相同的更新,下载后重启。假设我们正在安装 6.0 到 6.0.1 的更新吧,下载的更新包是只能从 6.0 更新到 6.0.1 的,在系统已经是 6.0.1 的情况下再安装到 6.0.1 的更新,就产生了错误,然后变砖。但是,在老外的 XDA 论坛上,也有不少有这问题的。显然他们在开机后可以第一时间直接连接谷歌的服务器,但依然还有不少设备出现这种问题的人,更何况很多都是并没有重复更新,只是点一次更新就砖了。我们也很难确定到底是什么原因造成 OTA 更新变砖。

倘若用户在更新变砖前没有勾选“允许 OEM 解锁”,他们就不能解开设备的 BL 锁,因为无法进入系统勾选这个选项。

除此之外,还有一部分人,已经正确地解锁设备后,将设备重新上了 BL 锁后,无法启动系统。这种情况一般发生在重新上 BL 锁前设备上刷入了第三方 recovery 的机器。倘若用户在重锁前取消勾选了“允许 OEM 解锁”选项,又在上述情况下锁了 BL,那么他们就无法进入系统勾选允许解锁的选项,也无法再重新解锁。这是因为,从 Nexus 6/9 这一代开始,重锁 BL 和解锁一样,也将强制清除数据。清除数据的指令只有原生的 recovery 才能正确识别并执行,TWRP 等第三方 recovery 无法执行;在没有完成数据清除前,不会启动系统,也就不能再去勾选允许解锁的选项,更不能重新解锁 BL 救砖。

绝大多数的变砖、无限重启等,都可以通过刷入谷歌官方的原厂固件来救回。但是,请注意这样做的前提条件:Bootloader 必须已解锁。上述的设备变砖的情况,因为用户没有勾选开发者选项里的允许解锁,进入 fastboot 后输入解锁指令会被拒绝,不能解锁;又没法进入系统勾选该选项,也没有任何其它办法来调用该选项。

本来是为了所谓的“安全性”考量,结果导致用户遇到问题时不能恢复设备的固件。更可怕的是,这些问题在用户正常使用设备,不刷机不折腾,正常更新系统,完全遵循保修条款的情况下,都会出现。

幸好,谷歌后来在网站上放出了可用于救砖的完整 OTA 更新包,无须解锁,只需要一根数据线,进入设备自带的 recovery,就可以救砖了。

救砖

这里下载适用于您的设备的最新的完整 OTA 更新包,然后进入设备的 recovery,使用 adb sideload 重新安装一遍系统更新即可。具体的过程,网上有很多教程都有介绍,这里也不再赘述。此过程不会导致设备上的数据丢失。

注意:完整 OTA 更新包不支持系统降级。如果您尝试刷入的系统比当前设备上的系统旧,设备会报错无法刷入。因此,请记得下载最新的更新包。

预防

在谷歌释出完整 OTA 更新包前,此问题几乎是无解的。但现在可以轻松恢复系统,数据也不会受到影响,因此没有必要采取预防措施。

对于已经解锁的用户:请不要轻易重新给您设备的 Bootloader 上锁,除非您清楚究竟该怎么做才能确保重上 BL 锁后不会导致设备变砖。 XDA 论坛上有人在没有正确重锁 BL 后遭遇设备不能启动还不能解锁的惨痛经历,都是血淋淋的教训。