Android 玩機基礎知識#
筆記來源於哔哩哔哩極客灣視頻:玩機必看!帶你入坑安卓刷機
本教程只提供玩機之前應該了解的基礎框架和知識儲備,
具體操作仍然應該尋找具體教程,否則在玩機過程中會遇到很多麻煩的小問題無法解決。
相關網站:
安卓分區#
安卓手機中包含了數個分區
Boot 分區#
-
存放有啟動和引導的文件,與開機啟動引導相關
-
包含了操作系統的 Kernel (內核) 與 Ramdisk (虛擬內存)
-
Root 操作就是修改在 Boot 分區
-
如果 boot 分區被擦除或者損壞,手機就會卡在開機的第一屏
system 分區#
-
存放安卓系統和系統應用
-
系統分區包含了整個操作系統 與 系統軟件
-
系統升級或者刷機很多時候都是在操作這個分區
-
system 分區損壞會卡在開機的第二屏
Vendor 分區#
與 system 分區相似的還有一個 Vendor 分區。
-
它包含了開發廠商定制的一些應用與庫文件
-
很多廠商也會直接把 Vendor 分區這些文件放進 system 分區裡面,方便後期的更新和維護
Data 分區#
-
數據分區存放用戶數據,包括應用、音視頻、圖片、系統設置等
-
擦除 data 分區會清空用戶數據,但不會影響到手機的正常啟動
Cache 分區#
-
安卓的緩存區
-
緩存可以幫助你快速的打開系統最常訪問的數據和應用程序,不需要重複加載
-
擦除緩存並不會影響個人數據,後續使用還是會自動生成
Recovery 分區#
-
恢復分區包含一個簡易 Linux 系統用於恢復和維護手機
-
可以用來恢復和更新其他分區的內容 (如擦除數據),類似於 Windows PE (Pre-installing environment)
AB 分區#
近年來出現了越來越多不存在 recovery 分區的手機,這是因為安卓從 7.0 開始引入了新的 OTA 升級方式,A/B System Updates(AB 分區)
這種升級方式把 boot 和 system 分區設置了兩套,SlotA SlotB ,平時用的 Slot 是主分區,另一個 Slot 是備用分區
這樣在系統升級的時候可以做到無縫升級,用戶可以邊用手機後台邊升級系統 (更新備份分區的內容),升級完成之後重啟手機,備份分區就會自動切換成主分區,若升級失敗系統無法啟動是就會切會之前的分區,缺點就是會佔用雙倍的 System 空間。
![image](/_next/image?url=https%3A%2F%2Fraw.githubusercontent.com%2FDoraemonkeys%2Fpicture%2Fmaster%2F1442343_origin_IMG_20220428_143359.jpg&w=3840&q=75)
VA/B 分區#
為了解決空間佔用的問題,於是又出現了 AB 分區的改進版 OTA 升級方式, Virtual A/B System Updates (VA/B 分區),
兩代系統,相同文件共用,不同文件存於虛擬 A/B 分區,目前出廠搭載安卓 11 以上的機型普遍採用了 VA/B 分區。
![image](/_next/image?url=https%3A%2F%2Fraw.githubusercontent.com%2FDoraemonkeys%2Fpicture%2Fmaster%2F1442342_origin_IMG_20220428_143346.jpg&w=3840&q=75)
從玩機的角度來講 A/B 或者 VA/B 分區刷第三方 recovery 會比較麻煩一點,因為這兩種分區都把 recovery 分區並入了 boot 分區,
![image](/_next/image?url=https%3A%2F%2Fraw.githubusercontent.com%2FDoraemonkeys%2Fpicture%2Fmaster%2F1442341_origin_Screenshot_2022-04-28-14-33-28-105_tv.danmaku.bili.png&w=3840&q=75)
Bootloader#
- 如果把 recovery 比作 PE,fastboot 階段所屬的 bootloader 就相當於電腦上的 BIOS/UEFI。
- bootloader 顧名思義就是 引導 (boot) 加載器 (loader),長按電源鍵開機的那一刻起,bootloader 就已經開始工作了。
- 在這段時間裡bootloader 會初始化手機裡的硬件設備,引導操作系統內核 (boot 分區裡的 Kernel)。
- 在引導後期我們可以選擇進入一個叫 fastboot 的階段 (一般長按電源 + 音量減鍵進入),這就是我們常說的刷機模式。
- fastboot 比 recovery 更加底層,fastboot 下可以把手機連接電腦,輸入命令來直接刷機。
- 解鎖手機,注入 boot 鏡像,線刷系統等很多操作都要通過 fastboot 來進行。
- bootloader 並不屬於某個系統分區,如果系統某個分區損壞導致手機變磚,一般可以進入 fastboot 救磚
- 使用 fastboot 刷機一般稱為線刷(數據線連接電腦),使用 recovery 刷機一般稱為卡刷 (卡刷包下載到手機)
電腦手機環境配置#
fastboot#
-
可以去安卓官方的鏈接下載電腦端用的 Android SDK ,SDK Platform Tools
-
Android SDK Platform-Tools 是 Android SDK 的一個組件。它包含與 Android 平台進行交互的工具,主要是 adb和fastboot。
-
下載解壓後就能看到有 adb 和 fastboot 文件,在此文件目錄下打開終端就可以輸入命令對手機進行操作了
-
如果不能檢測到設備就去電腦端設備管理器安裝 fastboot 驅動,驅動鏈接:玩機資源合集 (jamcz.com)
![image](/_next/image?url=https%3A%2F%2Fraw.githubusercontent.com%2FDoraemonkeys%2Fpicture%2Fmaster%2F%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202022-04-28%20185643.png&w=3840&q=75)
fastboot 常用命令#
#顯示fastboot設備
fastboot devices
#獲取手機相關信息
fastboot getvar all
#重啟手機
fastboot reboot
#重啟到bootloader
fastboot reboot-bootloader
#擦除分區
fastboot erase (分區名)
例:清除system分區:fastboot erase system
#刷入分區
fastboot flash (分區名) (分區鏡像)
例:將boot鏡像 "boot.img" 刷入boot分區:fastboot flash boot boot.img
#引導啟動鏡像
fastboot boot (分區鏡像)
例:啟動到recovery分區:fastboot boot recovery.img
#刷入ROM
fastboot update (刷機包)
例:將 update.zip 刷入:fastboot update update.zip
#解鎖Bootloader
fastboot oem unlock (參數視機型而定)
ADB(Android Debug Bridge)#
-
連接電腦一般要打開手機開發者選項裡面的 USB 調試,也就是 ADB (安卓調試橋)。
-
ADB 是安卓提供給我們用於調試設備的命令行工具,借助 ADB 就可以在電腦端用各種命令來控制手機 (不需要 root)。
-
比如如輸入命令給手機安裝軟件,調整手機分辨率,模擬按鍵點擊等好玩的操作。
-
很多電腦端的手機工具箱,如搞機工具箱,都是基於 ADB 實現的。
Root#
-
ADB 只能實現一些調試功能,想要實現更多功能就要借助 Root 權限了
-
開發者選項裡打開 OEM 解鎖 (沒有就算了)
-
想要 root 一般想要解鎖 Bootloader (bl 鎖),然後修改 boot 文件,刷入 magisk (修補後的 boot),root 的過程就相當於修改 boot 分區
-
廠商為了保證手機安全一般會對 bootloader 上鎖,不解鎖 bootloader 就無法對分區進行修改
-
不同品牌解鎖方式不同,這裡不詳細討論
root 方法#
想要 root 一般有兩種方法:
1. 通過第三方 recovery 來 root#
- 官方 recovery 一般只有簡單的恢復功能,不會允許你亂刷東西
- 想要實現類似 PE 的效果就要刷一個好用的第三方 recovery
- 第三方 recovery 不光可以 root,還能刷內核,刷系統,備份數據等等
- TWRP 是目前比較出名的第三方 recovery
2. 直接在 fastboot 裡刷 boot 鏡像#
magisk 獲取 root 的原理是對 boot 分區進行修補,在 recovery 裡可以直接操作,
但我們不用 recovery 也能提取當前系統的 boot 鏡像,交給 magiskAPP 進行修補完後再手動刷回系統。
boot 一般可以在刷機包裡面提取,
線刷包一般解壓直接就能找到 boot.img 文件,卡刷包解壓後會有一個非常大的 payload.bin 文件,可以用 payload_dumper.exe 程序來解包,解包完成後就能找到 boot.img,把拿到的 boot 文件傳到手機裡,手機上裝好 magisk 的 APP, 打開之後點擊安裝,選擇修補一個文件,選擇 boot.img,修補完成後會把修補完的鏡像導出到 download 文件夾裡。把修補完的 boot 拷貝到電腦上,手機重啟到 fastboot 模式,使用 fastboot 命令 (fastboot flash boot) 刷入修補後的 boot 就可以獲取 root 權限了。
小米全機型全版本 ROM 下載地址:XiaomiROM.com - 小米 ROM 線刷包,卡刷包的最新及歷史版本下載
boot 管理工具 Magisk#
magisk 就是我們常說的面具,它不僅可以用來獲取 root 權限,還可以掛載各種模塊
magisk 實現 root 原理#
magisk 通過掛載一個和系統文件相隔離的 Magisk 分區來加載自己的內容,一切都在 bootloader 階段完成,在實現功能的同時可以讓系統分區 (system) 毫髮無損,所以可以隱藏 root。
9008 刷機 (EDL 串口線刷模式)#
一加與 OPPO 給的刷機 (線刷) 工具是基於 9008 的,9008 是高通平台更底層的刷機工具,不到萬不得已才會使用。
雖然 fastboot 線刷的方法可以解決大部分的軟件問題,但不可以刷寫一些更底層的東西,比如基帶串號。
有時候手機刷成黑磚,連 fastboot 都不能進入了,這個時候就只能使用 9008 模式刷機了。
9008 模式可以解決手機幾乎所有的軟件問題。
高通通用:QFIL 工具
![image](/_next/image?url=https%3A%2F%2Fraw.githubusercontent.com%2FDoraemonkeys%2Fpicture%2Fmaster%2F1443384_origin_Screenshot_2022-04-28-21-03-42-798_tv.danmaku.bili.png&w=3840&q=75)
聯發科通用:SP Flash 工具
![image](/_next/image?url=https%3A%2F%2Fraw.githubusercontent.com%2FDoraemonkeys%2Fpicture%2Fmaster%2F1443385_origin_Screenshot_2022-04-28-21-04-25-858_tv.danmaku.bili.png&w=3840&q=75)
MiFlash (Pro) 裡含有廠家定制 9008 刷機模式,加入了一些驗證機制,需要帳號授權才能使用 9008。