Flashing custom Xiaomi Phone ROM on Linux.
本文介紹如何在GNU/Linux安裝ADB和Fastboot,給小米手機進行刷機。
如果熟悉使用命令行的話,Linux系統給Android刷機或者刷Magisk拿root權限,比用Windows刷機要方便許多,因為不需要裝驅動之類有的沒的。
1. 安裝ADB與Fastboot套件#
一般的GNU/Linux系統給Android手機刷機通常不需要裝手機的「驅動程式」,那些都含在Linux核心裡面了。
刷機需要工具主要是ADB和Fastboot工具,選擇一種方法安裝,
用套件管理員安裝#
大多數Linux發行版可透過套件管理員安裝ADB與Fastboot工具,例如Ubuntu:
sudo apt install android-tools
安裝後即可在終端機使用adb
和fsastboot
指令
手動下載執行檔#
第二個安裝方法是到 Android Developers下載Google建置的最新版Platform Tools,僅適用x86_64架構的電腦。
解壓縮即會得到adb和fastboot的二進位執行檔。
這樣做的好處是無論哪個發行版都能下載到最新版的ADB,可是要執行adb
或fastboot
的指令必須切換到執行檔所在的目錄,而無法全系統呼叫。
執行adb
指令前要先切換到該執行檔所在的目錄
cd ~/Downloads/platform-tools
./adb
2. 解鎖小米手機的Bootloader#
新買的小米手機,需要等待15天後,下載官方解Bootloader鎖的程式 Mi Unlock來解鎖。
Mi Unlock這個程式需要Windows電腦,沒有辦法直接用Linux操作,得用 Windows QEMU/KVM虛擬機搭配USB重新導向來解鎖。
不過,其實小米解鎖工具也是有非官方Linux版啦,像是XDA用戶開發的 XiaomiTool和 MiUnlock,他們可以協助你在Linux取得解鎖碼。請注意他們無法繞過新機的15天限制。
3. 開始刷機#
小米手機迭代好久了,刷機方法無法一概而論,但是大多數步驟用到的就是ADB和Fastboot這二個工具而已。
小米手機的第三方ROM可以到XDA Developers下載,歐版ROM請到xiaomi.eu下載。
讓小米手機進入Fastboot模式。
將小米手機用原廠線插到電腦USB Type A 2.0的孔(USB Type A 3.0或Type C似乎容易抓不到裝置)。輸入
lsusb
指令確認有認到小米裝置,應該會顯示Google Inc.
或者Xiaomi
開頭輸入
fastboot devices
確認有偵測到Fastboot模式的裝置這樣就可以開始刷機了,不論是要裝TWRP還是直接刷都行,請參閱XDA文章的指示。
4. 將小米手機刷回原廠系統#
在Windows上很多用戶會用MiFlash程式來刷機,但是其實Linux只要執行小米刷機包裡面隨附的指令稿就能刷機。
小米的刷機包跟其他廠牌不同,它有提供便捷的刷機指令稿。
到 ezbox按照機型,下載小米原廠的刷機包,選fastboot版本的tgz。例如我是Xiaomi Pocophone F1。
在下載目錄開啟終端機,將tgz解壓縮
tar -xvzf whyred_global_images_V11.0.5.0.PEIMIXM_20200917.0000.00_9.0_global_46113830ee.tgz
cd whyred_global_images_V11.0.5.0.PEIMIXM_20200917.0000.00_9.0_global
解壓縮出來的目錄會有以下檔案。
檢查
flash_all.sh
的內容可知道裡面跑的都是fastboot的指令,只要執行此指令稿就能刷機。
# 這邊是flash_all.sh的內容節錄
fastboot $* flash xbl `dirname $0`/images/xbl.elf
fastboot $* flash xblbak `dirname $0`/images/xbl.elf
fastboot $* flash tz `dirname $0`/images/tz.mbn
fastboot $* flash tzbak `dirname $0`/images/tz.mbn
將小米手機關機,按特定組合鍵使其進入Fastboot模式,用原廠線插到電腦USB Type A 2.0的孔(USB Type A 3.0或Type C似乎容易抓不到裝置)。執行
fastboot devices
指令查看已連接的裝置。執行
flash_all.sh
指令稿,它會開始刷機回原廠。如果要給手機Bootloader上鎖請改執行flash_all_lock.sh
指令稿。
bash flash_all.sh
- 等待刷機完成即可重開機