01.Root和刷机基础

基础概念

ADB

ADB 的全称为 Android Debug Bridge,是 android sdk 里的工具, 可以用它对 android 模拟器或者安卓真机进行调试,adb 命令可以实现的功能有:

adb 需要安装驱动

fastboot

什么是 fastboot?

fastboot 是一种协议,是一种通过 USB 连接与 bootloader 通讯的机制。它被设计的非常容易实现,适用于 Linux、Windows 或者 macOS 等多种平台。fastboot 是 Android 系统提供的一种较 recovery 更底层的通过 USB 更新文件系统的方式。
Android 开发包提供了 fastboot.exe 工具用于与 Android 系统通信,主要完成分区镜像烧录、分区擦除、设备重启、获取设备状态信息等操作。当需要通过 fastboot 协议与 Android 系统交互时,Android 系统需要启动到 bootloader 模式,此时只有最基础的硬件初始化,包括按键、USB、存储系统、显示等模块,以支持分区镜像的写入和系统启动模式的切换。

fastboot 是 PC 与 BootLoader 的 USB 通信的命令行工具,通过向 BootLoader 传送刷机文件(.img)实现 Android 系统分区重烧。fastboot astboot 需要 BootLoader 支持,且需要使用 USB 数据线连接,因此常称为线刷模式。

fastboot 需要安装驱动;fastboot 是常说的线刷工具

fastboot 工具

FastbootEnhance windows 工具

A user-friendly Fastboot ToolBox & Payload Dumper for Windows

Releases · libxzr/FastbootEnhance

fastboot 命令

常用命令

fastboot flash bootloader bootloader-name.img

fastboot flash radio radio-name.img

fastboot flash recovery TWRP-name.img

fastboot flash boot boot.img

fastboot flash system system.img

fastboot flash cache cache.img

fastboot flash userdata userdata.img

fastboot reboot-bootloader

fastboot -w

fastboot erase boot

BootLoader

什么是 BootLoader?

BootLoader 是嵌入式设备中用来引导内核启动的一段代码,在它完成 CPU 和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装载到内存中然后跳转到操作系统所在的空间,启动操作系统运行。可以理解为它是一个独立的程序,如同 Application 程序一样,虽然 Bootloader 的体量小,但是 " 五脏俱全 ",启动代码、中断、主程序(Boot_main 函数)、操作系统(非必须)都有。

内核启动是需要一定条件的,当设备上电后会首先运行 BootLoader,BootLoader 会初始化必要的硬件,比如 DDR、Flash、串口等,通过这段程序可以将系统硬件环境设置到一个合适的状态,为进行系统内核调试准备好环境,相关初始化完成后就会去启动内核。
(在嵌入式系统中,通常没有 BOIS 那样的固态程序,因此整个系统的加载启动任务就由 BootLoader 来完成,BootLoader 程序通常安排在嵌入式系统最开始运行的地址处 0x0000 0000

BootLoader 锁

解锁 Bootloader

开启开发者模式和 USB 调试

关于手机→Build 号(多次点击),打开开发者模式

OEM 解锁

开发者模式→OEM解锁

h3rit

进入 Bootloader 模式

輸入 adb reboot bootloader 並按 Enter,手機會立即重啟至 Bootloader 模式。

adb reboot bootloader

此時手机會出现這畫面就是 Bootloader 模式
可以看到目前綠色字代表目前是鎖定狀態,我們接下來要解鎖:

lvz5q
然后,通過 fastboot devices 命令驗證 fastboot 是否成功:

fastboot devices

cbq43
如果沒反應,請在電腦上安裝最新 Pixel 驱动 (我也卡在這邊好久,爬文找到答案)
https://developer.android.com/studio/run/win-usb?hl=zh-cn

71w9s

解锁 Bootloader

注意:解鎖 Bootloader 等同重回原廠設定,請事先登出 Google 帳號 & 刪除指紋、密碼等安全設定。

fastboot flashing unlock

dftqu
输入命令后用音量鍵選擇 Unlock the bootloader,接著他會重啟 Bootloader:

bhgiq
然後你會看到它變成紅色 Unlock,此時代表成功解鎖 Bootloader:

y5k6o
通過 fastboot reboot 命令重啟手機

重新開機後,出現如下這個畫面就是解鎖成功

chfxj

解鎖 Bootloader 後,此時手機會恢復出廠狀態,因為還是要使用 adb 指令
所以要重新去打開 OEM 解锁 & USB 调试,见前面

Recovery

什么是 Recovery?

Recovery 本身的本质也是一个简单 Linux 加一个 Google 开发简单图形界面。它跟你在用的内核的 boot.img 分区的格式是完全一样的。他的作用在于当你的产品里的内核有问题时; 你可以切换到 Recoverty 这个小操作系统里用工具重新下载内核。因此如果打比方的话,更像 PC 机的可引导的 U 盘修复盘。
recovery 过程主要有两个作用:factory reset 和 OTA install。一般 Android 系统都有两个分区 /boot /recovery。这两个分区都可以引导系统。recovery mode 从本质上来看就像是一个袖珍版的 Linux。Android 的上层结构 (虚拟机) 可以调用一个特定的类 ( RecoverySystem ) 来写入命令参数以提供重启之后 recovery 模式所必需的命令参数。简而言之,recovery 模式其实方便了开发者升级系统和擦除相应的分区 ( /data 和/cache )。

进入到 Recover 模式

adb reboot recovery

43jie

TWRP

官网,可查看支持的设备列表:Devices

如果你的设备有来自 TWRP 的官方支持,只需在打开 USB 调试后将手机与电脑相连,然后打开电脑端的命令行窗口:

  1. 执行 adb reboot bootloader 进入 Bootloader 界面
  2. 执行 fastboot boot TWRP.img 进入临时 TWRP
  3. 在 TWRP 中刷入你下载的 Magisk 安装包

有 twrp 官方支持可以进入临时 twrp,这个方法在 Android 10 之后好像就失效了,这种方式基本失效了

TWRP 资源:

一加各机型TWRP官方/非官方版本,含最新3.7.0版本 - 大侠阿木博客

解锁 Bootloader、手机重启后,需要重新设法进入 Bootloader(你可以重新开启一次开发者模式通过高级重启进入),然后在终端使用以下指令:

fastboot boot path/to/twrp-3.3.1-0-guacamoleb.img
# fastboot boot 指令提供了临时从某个镜像文件启动的方式,大大降低了 debug 的难度。  

正常情况下,手机会临时进入一次 TWRP。

氢 OS 出厂版本仍然使用低版本的 Bootloader,尚不支持 fastboot boot 指令。这不影响你下一步刷入氧 OS。在你刷完最新版本的氧 OS 以后你可以再使用 fastboot boot 命令尝试临时进入 TWRP。

Android 启动模式

Android 系统相对开源,因此允许用户对手机系统进行一定修改即刷机。因此对应不同的功能以及权限,其一般具备 6 个不同模式,分别为一般启动模式(normal mode)、安全模式(safe mode)、恢复模式(recovery mode)、引导模式(bootloader mode)、fastboot 模式和诊断模式(diagnostic mode)这种说法。一般分 2 种说法:透明系统栏和沉浸式模式。一般使用透明系统栏比较多,沉浸式模式基本只有游戏,全屏视频才用得上。

一般启动模式(normal mode)

这个模式的功能是正常启动手机,开启方法为关机状态下按电源键启动。该模式即俗称的开机,进入正常的系统,即用户正常使用手机的系统。

安全模式(safe mode)

此模式和正常启动一样,但没有登记 Google,所以不能访问 Market 或使用你的 Google 账号。进入方法一般为按住 "menu" 键,按电源键启动手机,直至手机启动完成松开 "menu" 键。该系系统因不同厂家设置而不同,进入方法也有所不同。

恢复模式(recovery mode)

该模式下使用音量键上下进行选择,电源键进行确定,当然现在市面上已经出现触摸版的第三方 recovery 模式,允许用户使用触屏进行操作。该模式具有相对较高的修改权限,可进行打开命令解释程序(shell),刷新映像文件(flash image),执行备份等。该模式可根据用户的需要进行修改,因此有官方 recovery 模式以及第三方 recovery 模式。第三方 recovery 模式可以识别第三方 rom 包,因此可以用来刷机。而官方 recovery 一般不能识别第三方 zip 文件。进入方式一般为就是音量键上 + 电源键。

引导模式(bootloader mode)

该模式的功能是从 SD 卡上安装新的系统映像(DREAIMG.NBH),其中包括刷系统以及 recovery,具有很高的修改权限。该模式基本每款手机都拥有,但其命名不一定相同。大多数 Android 手机解锁或获取 root 权限都使用模式进行。进入方法一般为音量键下 + 开机键。

fastboot 模式(fastboot mode)

该模式主要是在电脑上使用 fastboot 命令来刷新映像文件,并可以进行清理数据等一定的操作。进入方法一般为按住音量键下 + 开机键启动手机,直至屏幕出现 FASTBOOT 字样后松开返回键。

诊断模式(diagnostic mode)

该模式是为了测试手机各项功能的模式,一般在购买新手机时会使用到该模式以便对手机 CPU、传输速率以及屏幕显示效果等进行测试。进入方式因手机厂商设置不同而不同,一般是在拨号界面输入一定的数字符号。

Android 系统分区介绍

Hboot——系统开机引导类似电脑 BIOS,这块刷错手机就会变成砖

Radio——通讯模块、基带、WIFI、Bluetooth 等衔接硬件的驱动软件

Recovery——系统故障时负责恢复

Boot——Linux 嵌入式系统内核

System——系统文件、应用

Cache——系统运行时产生的缓存

Userdata——用户使用 APP 产生的缓存数据

刷机方式

线刷

fastboot 是一种线刷,就是使用 USB 数据线连接手机的一种刷机模式。这种模式是更接近于硬件的界面,所以这个模式一般好似在手机变砖或者修复时使用的。

卡刷

通过 Recovery 刷机称为卡刷,是存在于安卓系统 recovery 分区的一个微型系统,类似于电脑的微型 pe 系统,用于卡刷 ROM 升级包,清除数据,恢复出厂设置,备份数据等,一些第三方 recovery 比如 CWM、TWRP 拥有更加强大的功能,比如 adb sideload 模式,挂载储存设备,卡刷第三方 rom,卡刷 supersu 进行 root 等。

怎么进入 fastboot 模式和 Recovery 模式

刷机

通用刷机步骤

安装 ADB 工具包

解锁 BootLoader

刷入 TWRP … ?

#TWRP

刷入 ROM

刷入 Magisk