0x00 背景
之前在公司做了一下三星S6 Edge的root化,第一次做root化,加上该机器比较新,没有一键root,绕了很多远路,整理一下自己的理解。
最近自己买了一个二手Nexus5,也拿来root了一下,相对简单一些。
0x01 名词解释
(Custom) ROM:ROM原本是手机里的非易失性存储,因为手机的操作系统是装在ROM里,所以现在几乎都是指代手机的操作系统/刷机包。Custom ROM就是特指第三方刷机包,但是Custom会经常被省略,直接用ROM来表示第三方刷机包。
(Custom) Recovery:リカバリとはシステムの初期化やOSの書き換えなどを行うためのもので、標準状態のAndroidでも元々搭載されています。TWRPは標準リカバリに手を加えたもので、メーカー以外の非純正ROM(カスタムROM)を書き込んだり、システム(ROM)全体のバックアップをしたりすることができます。第三方发布的Recovery程序,主要有CWM和TWRP两种,CWM已经不更新了,现在都用TWRP。Custom Recovery其实就是类似一个引导程序,大小为二三十MB,并不是一个完整的操作系统,与ROM要区分开。
(Stock) Recovery:指官方的Recovery,仅提供了一些有限的功能,一般不提供刷第三方的ROM的功能,也没有从sd卡安装软件的功能。所以如果要刷第三方ROM或者要安装SuperSU软件,则需要先安装Custom Recovery。
Root化:取得Root权限。
Flashing(刷机):刷机就是只往ROM上烧录新的ROM(第一个ROM指硬件,第二个ROM指代刷机包/OS)。刷机并不一定是为了Root化,有可能只是不满意当前的系统。
SuperSU:SuperSU就是一个能执行su、sudo命令等的软件,因为android系统并不自带su功能,我们得将这个软件拷贝到安卓上才算完整的root化。而拷贝这个软件到一台为越狱的android上要么需要android的漏洞,要么需要先刷个Custom Recovery。
0x02 Root Nexus5
-
在windows里安装adb,如果装过Android Studio的话adb会被装在 C:\Androidsdk\platform-tools\ 目录下,把这个目录添加到系统PATH里,然后重启机器就可以在windows的cmd或者power shell里直接使用adb命令了。
-
把手机用USB连接上电脑,然后打开开发者模式:打开Settings > About Phone,然后猛点Build Number,直到手机提示你开发者模式已经打开。注意之后还要点进Developer options,把USB debugging打开,否则连接不上电脑。如果仍然连接不上电脑有可能是没装Android USB driver,在Android Studio的SDK Manager里装上驱动即可。
-
下载对应机器的CWM Recovery(我下载的是Nexus 5的Touch Recovery);下载最新的SuperSU。
-
把SuperSU.zip拷贝到Nexus 5的根目录下。
-
将手机关机,然后同时按下电源键和音量下键,进入FastBoot模式。
-
刷入Recovery:在windows上打开power shell,键入命令
fastboot flash recovery recovery-clockwork-touch-6.0.4.5-hammerhead.img
如果显示FAILED (remote: not supported in locked device)的话,则先运行命令
fastboot oem unlock
将手机解锁后再运行第一个命令。
-
使用音量键将手机调成Recovery Mode,然后按电源键进入Recovery Mode。选择install zip > choose zip from SD card。如果提示cannot mount /sdcard的话则返回Recover Mode的最上级菜单,选择mounts and storage > format /data and /data/media (/sdcard),把sdcard格式化。如果做了格式化,则之前拷贝到根目录下的SuperSU.zip也被删掉了,此时在windows上使用以下命令将SuperSU.zip重新拷贝到sdcard里:
adb push /path/to/local/SuperSU.zip /data/media/
然后的再执行intall zip from SD card即可。
-
安装完后会显示'Install from SD card complete',此时退回最上级菜单,选择reboot system now > Yes - Fix root (/system/xbin/su)即可重启。如果顺利重启则root完成,如果一直卡在重启界面,有可能还是cannot mount XXX之类的问题,返回最上级菜单,选择wipe data/factory rest和wipe the cache partition将各分区格式化,然后再重启即可。
-
最后可以在google play里下载root checker检查是否root成功。
0x03 Root 三星S6 Edge
方法一 (这个方法其实我并没有使用,有待考证)
- 在PC上下载Odin这个软件
- 使用Odin往手机里烧录TWRP的Recovery包
- 把带有Root权限的ROM拷到手机SD卡里,使用TWRP的install from zip功能将Custom ROM烧录到ROM里。
方法二 (我使用的方法)
直接使用CF-Auto-Root进行Root。
- odin3をダウンロードして
- https://autoroot.chainfire.eu/ から機種に対応してる自動rootリカバリーをダウンロード、今回(Galaxy S6 edge SCV31)の場合smg9200をダウンロードした。
- 管理者権限でodin3を立ち上げて
- 携帯をUSBでPCに繋いで
- APのところにリカバリーファイルを選ぶ
- 携帯の電源を切って
- volume-、HOME、電源この三つのボタンを同時に押して、
- 青い画面が出たらvolume+ボタンを押して、download(fastboot?)モードに入る
- odin3のstartボタンを押して待ってばいい
- 再起動の途中とまったけど、強制的に再起動すればなんと問題なし
- 再起動終わったらplay storeからroot checkerをインストールして、rootが成功したかどうかを確認。
这个方法的好处就是只要刷Custom Recovery就行了,不需要刷Custom ROM,要知道Custom Recovery只有几十MB,而一个ROM得有1个GB左右。
方法三
跟root Nexus一样,在刷完TWRP的Recovery包之后,从SD卡里安装SuperSU这个Root化软件即可。这个方法也不需要刷Custom ROM。我还没尝试过,以后有机会去试试。
0x04 Root Pixel3 With Magisk
- 在设置里允许解锁bootloader
- 重启bootloader
adb reboot bootloader - 解锁bootloader
fastboot flashing unlock
并在手机上点击确认 - 刷入TWRP的recovery
fastboot boot twrp-3.3.0-0-blueline.img
这里使用fastboot flash recovery twrp-3.3.0-0-blueline.img
会显示失败FAILED (remote: Not allowed to flash (recovery))
,不清楚为什么会这样,所以用上面一个命令就好了。 - 在TWRP界面里点击Advanced -> ADB Sideload,然后在手机上用
adb sideload Magisk-v20.1.zip
来安装magisk。注意安装完需要重启时选择Do not Install。否则有可能进入bootloop。
如果进入bootloop,这里有几个可以尝试的方法(首先要TWRP的Advanced -> Fix recovery bootloop解除bootloop。):
- 安装完Magisk选择Do not Install (Magisk Manager)。
- 在谷歌官网上随便找一个pixel3的image下下来,flash_all一下。
- 在Android Studio的Platform tools里把fastboot更新到最新。
0x05 Root Pixel 4 With Magisk
Pixel 4只能安装Android 10, 而TWRP 不支持 Android 10,那么如何安装Magisk呢?可以参考这篇文章:https://scratchpad.jp/google-pixel4-8/