0%

Google Pixel解锁BL、刷入Twrp及Root折腾小记

因为个人项目上的需要,我从某宝入手了一款二手的Google Pixel 欧版手机。当初选择时主要是考虑到它的大内存–4G内存,可以流畅运行常用的程序。(不过入手之后的感觉就是,要想用好Google的手机,「科学上网」是必备的技能,否则的话,还是用国内的手机吧!)

因为需要在手机上安装按键精灵的手机版app,而调试按键精灵的脚本又需要获取手机的Root权限,所以就开始了我的Pixel刷机之旅。


准备工具

  1. Google Pixel手机 欧版(国际版)
  2. Android 8.1.0
  3. Windows或Mac
  4. twrp
  5. Magisk
  6. ss

欧版判断

点击Settings(设置) -> System(系统) -> About phone(关于手机) -> Regulatory labels(监管标签) 查看。

MODEL: G-2PW4200 ,其中 4200 表示欧版,4100 表示美版。


解锁Bootloader

(注意:解锁 Bootloader 重置设备数据,请注意备份。一定不要忘记退出你的Google账号和取消指纹识别及锁屏设置。)

由于我的手机是新买的,所以这些操作就免了。


开启USB调试和OEM解锁

安装「科学上网」工具,并成功接入互联网。

选择 「设置-系统-关于手机-版本号」,猛击「版本号」7次开启 「开发者选项」。

返回「上一页」,在「开发者选项」中开启「USB调试」和「OEM解锁」两个选项。如果「OEM解锁」选项显示为灰色,请检查网络连接是否正常。

通过数据线将手机连接至电脑,此时,手机端会弹出 USB 调试申请,点击「允许」。

可以通过命令 adb devices 来验证是否允许adb调试:

1
2
3
➜ adb devices
List of devices attached
FA6XXXXXXX53 device

进入 Bootloader模式

进入bootloader默认有两种方式,第一种是通过在关机状态下「按住电源键+音量减少键」;第二种是通过「ADB命令」进入。

这里我采用「adb命令」来操作。

回到命令提示符窗口,键入 adb reboot bootloader 并回车,手机会立即重启至 Bootloader 模式。

1
2
~/test/pixel
➜ adb reboot bootloader

之后,通过 fastboot devices 命令验证 fastboot 是否成功:

1
2
➜ fastboot devices
FA6AB0311758 fastboot

解锁 Bootloader

上一步进入Bootloader页面后,手机界面应该是如下图:

在命令提示符窗口键入 fastboot flashing unlock 并回车,手机进入 Bootloader 解锁界面。

1
2
3
4
➜ fastboot flashing unlock
...
OKAY [ 0.049s]
finished. total time: 0.049s

对于 Pixel 2 XL 机型,要用如下的命令:

1
fastboot flashing unlock_critical

详情查看:Factory Images for Nexus and Pixel Devices | Google APIs for Android | Google Developers

在 Bootloader 解锁界面中,使用音量键 +/- 来控制光标,选择「Yes」并按下电源键来进行 Bootloader 解锁。

确认完毕后,稍作等待。通过 fastboot reboot 命令重启手机:

1
2
3
4
➜ fastboot reboot
rebooting...

finished. total time: 0.050s

稍等片刻之后,你的设备会自动重启。


判断解锁成功

当手机重启时出现黑底白字的英文警告页以及屏幕下方出现一把打开的小锁,那 Bootloader 就解锁成功啦。

重启手机,出现如下两个界面就算解锁成功:

当然,还有一种更简单的方法,就是再次进入 fastboot 模式,查看:


解锁Bootloader后的两个问题

恢复初始

在解锁 Bootloader 之后,可以看到手机系统已经是完全初始化的状态了。

在进入 「关于手机」 界面后,可以发现之前开启的「开发者选项」也是默认关闭了,需要再次点击7次「版本号」开启。

那么,在执行后面的操作时是否仍需要再次将「OEM解锁」打开呢?答案是:不需要

然而,因为后面需要用到 adb 命令去操作手机,所以「USB调试」选项还是需要打开的。

关于「OEM锁与bootloader锁的关系」,可以看下面的 疑难解答


错误提示

成功解锁Bootloader后,每次手机启动或重启时,都会出现黑底白字的英文警告页,提示 “Your device software can’t be checked for corruption. Please lock the bootloader”。

这没有什么可担心的,这是正常的!

这仅仅是提示你 Bootloader 被解锁了,直接忽视即可。


刷入第三方Recovery:TWRP及Root

由于Pixel及Pixel XL都采用A/B升级系统,因而可以理解为手机里有2个系统,如果你按照传统刷入Twrp的方法刷入的话,那么你并不会获得一个永久的Twrp。所以需要先刷入一个临时的Twrp,在通过临时的Twrp来刷入永久的Twrp从而来获取Root权限。

下载必要软件

需要下载临时的Twrp、永久Twrp及Magisk三个文件。

首先,前往 TWRP 官网 Devices 下载最新版 TWRP 压缩包(.zip)和临时 TWRP 镜像文件(.img)。

我的Pixel对应选择从这个页面 Download TWRP for sailfish 下载的 3.2.3-1 版本:

1
2
twrp-pixel-installer-sailfish-3.2.3-1.zip (永久twrp)
twrp-3.2.3-1-sailfish.img (临时twrp)

从github Releases · topjohnwu/Magisk 下载最新的 Magisk 包。 这里我下载的是 17.2 版本:

1
Magisk-v17.2.zip


拷贝文件到手机

假设我电脑上的操作目录为: ~/test/pixel

twrp-3.2.3-1-sailfish.img 拷贝到该目录下。

twrp-pixel-installer-sailfish-3.2.3-1.zipMagisk-v17.2.zip 拷贝到手机中。

在将文件拷贝到手机中时,我发现通过数据线连接到电脑时,选择 传输文件 电脑中并没有出现手机存储的盘符,也就无法直接将文件拖拽到手机中。

在经过一番摆弄之后,我觉得最靠谱的还是通过 adb 的方式来上传文件。

连接手机,在手机端弹出「USB调试」点击确定,打开item2,切换到目录 ~/test/pixel

1
2
3
~/test/pixel
➜ ls
Magisk-v17.2.zip twrp-3.2.3-1-sailfish.img twrp-pixel-installer-sailfish-3.2.3-1.zip

查看adb连接状态:

1
2
3
4
~/test/pixel
➜ adb devices
List of devices attached
FA6XXXXXXX53 device

先通过 adb shell 命令进入手机的bash命令下,在 /sdcard 目录下创建临时文件夹 tmp :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
~/test/pixel
➜ adb shell
sailfish:/ $ cd sdcard/
sailfish:/sdcard $ mkdir tmp
sailfish:/sdcard $ ls
Alarms Android DCIM Download Movies Music Notifications Pictures Podcasts Ringtones tmp
sailfish:/sdcard $ ls -al
total 100
drwxrwx--x 13 root sdcard_rw 4096 2018-10-16 17:27 .
drwx--x--x 4 root sdcard_rw 4096 2009-01-01 16:02 ..
drwxrwx--x 2 root sdcard_rw 4096 2009-01-01 16:02 Alarms
drwxrwx--x 3 root sdcard_rw 4096 2009-01-01 16:02 Android
drwxrwx--x 2 root sdcard_rw 4096 2009-01-01 16:02 DCIM
drwxrwx--x 2 root sdcard_rw 4096 2009-01-01 16:02 Download
...
...
drwxrwx--x 2 root sdcard_rw 4096 2018-10-16 17:27 tmp
sailfish:/sdcard $

通过 adb push <local> <remote> 命令将文件上传到手机的 /sdcard/tmp/ 目录中:

1
2
3
4
5
6
7
8
~/test/pixel
➜ adb push twrp-pixel-installer-sailfish-3.2.3-1.zip /sdcard/tmp/
twrp-pixel-installer-sailfish-3.2.3-1.zip: 1 file pushed. 14.6 MB/s (11492088 bytes in 0.753s)


~/test/pixel
➜ adb push Magisk-v17.2.zip /sdcard/tmp/
Magisk-v17.2.zip: 1 file pushed. 16.3 MB/s (4174026 bytes in 0.245s)

查看手机中文件列表:

1
2
3
4
5
6
7
~/test/pixel
➜ adb shell ls -al /sdcard/tmp/
total 15328
drwxrwx--x 2 root sdcard_rw 4096 2018-10-16 17:32 .
drwxrwx--x 13 root sdcard_rw 4096 2018-10-16 17:27 ..
-rw-rw---- 1 root sdcard_rw 4174026 2018-10-16 16:07 Magisk-v17.2.zip
-rw-rw---- 1 root sdcard_rw 11492088 2018-10-16 15:56 twrp-pixel-installer-sailfish-3.2.3-1.zip

注:对于为什么将文件拷贝到手机的 /sdcard 目录,可以看下面的 疑难解答


刷临时Twrp
引导进入 Bootloader

执行命令 adb reboot bootloader:

1
2
~/test/pixel
➜ adb reboot bootloader

刷入临时Twrp

执行命令 fastboot boot *.img 来启动临时Twrp:

1
2
3
4
5
6
7
~/test/pixel took 5s
➜ fastboot boot twrp-3.2.3-1-sailfish.img
downloading 'boot.img'...
OKAY [ 0.712s]
booting...
OKAY [ 0.903s]
finished. total time: 1.615s

之后,手机会进入到临时的Twrp中:

滑动下面的 Swipe to Allow Modifications 滑条,进入Twrp操作页面:


刷入永久Twrp

选择 Install – 找到目录 /sdcard/tmp/ – 选择 twrp*.zip 文件 – 弹出安装界面 – 直接滑动底部的滑条 Swipe to confirm Flash 安装:

这里也间接验证了为什么要选择 /sdcard 目录:点击 Install 按钮后,直接进入的就是 /sdcard 目录,即只能操作这个目录。

等待进度条执行完毕,最后会显示 ...done 的提示。说明这一步执行完成。


刷入Magisk

上一步安装完成后,我们发现界面中只有两个按钮:Wipe cache/dalvikReboot System 。后一项肯定不能选,如果选择重启,那还有一个 Magisk 文件没有刷入,否则的话还需要走一遍上面的 刷入临时Twrp 的操作;而第一项 清除临时缓存文件,只是我不清楚该文件具体是干什么用的,所以也怕点了之后会出问题。

这种情况下,我只好上网去查询看看是否有相关的操作介绍,可想而知,这个问题可能太简单了,很难找到相关的介绍。

正当我一脸迷蒙时,我的手误按了顶部的 “蓝色条” 部分,发现… 界面返回了 Install 页面:

我只想说,这操作简直是 666 啊!!!

经过验证,只要点击顶部的「install Zip」 蓝色条部分左侧的「图标」处,就会返回 Team Win Recovery Project 界面。

依照上面的安装步骤,继续安装 Magisk-v17.2.zip 文件。直到界面中提示 ...done 时,说明安装完成。

安装完成后,点击下面的 Reboot System 按钮,重启系统。

不过,这时候发现界面会提示询问是否安装 TWRP App

这里,千万不要安装。直接点击中间的 Do Not Install 即可。

待手机重启进入系统后,可以发现手机APP中多了一个 Magisk 的脸谱Logo图标。

至此,整个刷机过程就结束了。


验证是否成功Root

至于如何验证是否成功Root,最简单的方法就是安装几个需要获取Root权限的软件就可以了。

可以在「脸谱Logo」的菜单中选择「超级用户」,为相应的软件开启Root权限。


优化

去掉wifi叉号标记

在国内的网络环境下,通过wifi联网之后,Pixel的wifi图标上会默认显示一个「叉号」。虽然能够正常联网,但对于强迫症来说,还是觉得很碍眼。

对于这个问题,原理性的解释是:

谷歌原生安卓系统当连接到移动数据网络或者WIFI网络的时候,其NetworkMonitor模块会向特定的服务器发起一个http的请求并利用收到的响应进行网络状态判断。由于谷歌的服务器被GFW屏蔽,所以导致没有返回值,这个时候谷歌安卓系统就会在信号或者wifi上打一个感叹号或叉号。

可以通过换成v2ex的验证方式来解决。在命令提示符中执行:

1
adb shell settings put global captive_portal_https_url https://www.google.cn/generate_204

然后开启飞行模式,再关闭飞行模式即解决!

操作前:

执行命令:

1
2
3
4
5
~/test/pixel
➜ adb shell settings put global captive_portal_https_url https://www.google.cn/generate_204

~/test/pixel

操作后:

如果你想恢复的话,使用下面的命令:(未亲测)

1
2
adb shell settings delete global captive_portal_server  
adb shell settings put global captive_portal_detection_enabled 1

疑难解答

fastboot oem unlock or fastboot flashing unlock

在网上搜索到的一些教程中,有的说是使用 fastboot oem unlock 来解BL,有的说是通过 fastboot flashing unlock 来解BL。

最终在google的官网中,我找到了如下的介绍:

If necessary, unlock the device’s bootloader using one of the following methods:

If you are updating a Nexus or Pixel device that is manufactured in 2015 or later (for example, a Nexus 5X, Nexus 6P, Pixel, Pixel XL, Pixel 2 or Pixel 2 XL device), run this command:

fastboot flashing unlock

If you are updating an older device, run this command:

fastboot oem unlock

更多介绍,请看: Factory Images for Nexus and Pixel Devices | Google APIs for Android | Google Developers


OEM锁与bootloader锁的关系

OEM锁是限制了bootloader锁,OEM锁系统默认是关闭的,必须在开发者中手动打开。之后 bootloader锁才能进行解锁。

通俗一点的说,OEM锁只跟bootloader锁有关系,和之后的Root操作没有关系。所以当解锁Bootloader后系统配置被重置了,即使 「开发者选项」中的 「OEM解锁」显示为灰色不能操作,也无关紧要了。

参考:关于解锁bootloader的重要性.机友们务必细读,生死问题,请勿忽视! - Pixel | Pixel XL 论坛 - 智友论坛


解锁bootloader的好处
  1. 最重要是为自己的手机买了份保险,留了条生路.卡死 系统抽风或变砖后,
    可在bootloader界面下线刷原厂镜像恢复系统。(不解锁的无法刷机救回)
  2. 作为亲儿子机型,XDA上很多资源,有大量第三方ROM、优化补丁、Recoovery、ROOT
  3. 解锁bootloader后,不ROOT和修改系统文件,不影响在线OTA升级。

解锁后 开机Google logo下有个小锁和两秒钟的警示语说你的手机已经解了bootloader锁,
机友们可以无视之,不影响使用。


adbpush文件时权限不够

在使用命令 adb push 将文件 twrp-pixel-installer-sailfish-3.2.3-1.zip 上传到手机时,可能由于权限问题而报错:

1
2
3
4
~/test/pixel
➜ adb push twrp-pixel-installer-sailfish-3.2.3-1.zip /
adb: error: failed to copy 'twrp-pixel-installer-sailfish-3.2.3-1.zip' to '/twrp-pixel-installer-sailfish-3.2.3-1.zip': remote couldn't create file: Read-only file system
twrp-pixel-installer-sailfish-3.2.3-1.zip: 0 files pushed. 22.7 MB/s (1048448 bytes in 0.044s)

我们可以通过 adb shell 命令来进入到手机的bash命令下,也可以直接在后面跟上bash命令来执行。进行验证:

adb shell :

1
2
3
4
5
6
7
8
9
10
11
~/test/pixel
➜ adb shell
sailfish:/ $
sailfish:/ $ ls
ls: ./verity_key: Permission denied
ls: ./init.rc: Permission denied
ls: ./postinstall: Permission denied
ls: ./init.usb.configfs.rc: Permission denied
ls: ./init.zygote64_32.rc: Permission denied
...
...

或者

adb shell mkdir tmp :

1
2
3
~/test/pixel
➜ adb shell mkdir tmp
mkdir: 'tmp': Read-only file system

发现,果然是当前用户的权限不够。

经过验证,发现当前用户对 /sdcard 目录是有权限进行文件或目录的操作的。

1
2
3
4
5
6
7
8
9
10
11
12
13
~/test/pixel
➜ adb shell
sailfish:/ $ cd sdcard/
sailfish:/sdcard $ ls
Alarms Android DCIM Download Movies Music Notifications Pictures Podcasts Ringtones
sailfish:/sdcard $ mkdir tmp
sailfish:/sdcard $ ls
Alarms Android DCIM Download Movies Music Notifications Pictures Podcasts Ringtones tmp

sailfish:/sdcard $ rm -rf tmp
sailfish:/sdcard $ ls
Alarms Android DCIM Download Movies Music Notifications Pictures Podcasts Ringtones
sailfish:/sdcard $ exit

码字不易,以上操作均为本人实际操作并验证。如果该文章对您有所帮助,可以赠送一杯咖啡!!!


相关链接

工具
教程

2019年08月27日 Update

Magisk更新

将 Magisk 从 v17.2 版本升级到 v19.3 版本。

可以从 Magisk 下载最新版本的Magisk的zip压缩包。

第一步 adb连接

要确保手机设备通过adb正确连接。如果提示为 offline 则需要重新设置手机的连接。

1
2
3
➜ adb devices
List of devices attached
FA6XXXXXXX53 offline

直到出现 device 时,说明手机正确连接了。

1
2
3
➜ adb devices
List of devices attached
FA6XXXXXXX53 device

一般出现 offline 的情况可能是usb数据线的问题,或者连接设置的问题。

这里我的解决方法是:

  1. 断开usb设备连接
  2. 执行命令 adb kill-server 来停止adb服务
  3. 执行命令 adb start-server 来重新运行adb服务
  4. 重新通过usb连接手机设备
  5. 打开 开发者选项 ,重新勾选 usb调试,在弹出的窗口选择 确定
  6. 再次执行命令 adb devices,发现显示 device
第二步 拷贝Magisk文件

通过 adb push 命令将新版的Magisk文件拷贝到手机设备中:

1
2
➜ adb push Magisk-v19.3.zip /sdcard/tmp/
Magisk-v19.3.zip: 1 file pushed. 21.0 MB/s (5348187 bytes in 0.243s)

这里我之前使用的是 Magisk-v17.2.zip 版本,现在要更新到 Magisk-v19.3.zip 版本。

第三步 进入Bootloader

执行 adb reboot bootloader 进入 Bootloader 界面。

第四步 进入临时Twrp

通过 twrp*.img 文件,启动进入临时Twrp:

1
2
3
4
5
6
7
➜ fastboot boot twrp-3.2.3-1-sailfish.img
ERROR: Couldn't create a device interface iterator: (e00002bd)
downloading 'boot.img'...
OKAY [ 0.712s]
booting...
OKAY [ 0.893s]
finished. total time: 1.605s
第五步 安装Magisk

进入 Twrp 页面后,滑动下面的 Swipe to Allow Modifications 滑条,进入Twrp操作页面。

选择 Install – 找到目录 /sdcard/tmp/ – 选择 Magisk-v19.3.zip 文件,滑动 Swipe to confirm Flash 来安装。

安装完成后,点击下面的 Reboot System 按钮,进入下一步。

之后,直接点击中间的 Do Not Install 等待手机重启进入系统即可。


如有疑问或需要技术讨论,请留言或发邮件到 service@itfanr.cc