你在透過Magisk/KernelSU/APatch取得Root權限後,要如何透過OTA更新系統呢?
技術上來說Android手機在Root後,依然可以跑OTA更新,只是過程比較繁瑣而已。
通常,只要有Root的裝置,系統認為你的環境不乾淨,就不會給你OTA更新系統。舉凡Google Pixel、Sony、小米、Samsung、OnePlus、ASUS皆是如此。
少部份例外是LineageOS,有Root的時候它還是會讓你下載OTA更新,不過更新後boot分區會一併覆蓋掉,這會導致Root權限暫時噴掉。需要手動修補。
本文Ivon討論一些Root後如何OTA的手段,以及如何在更新後快速復原Root權限。
測試裝置:Google Pixel 6a,原廠Android 16系統 & LineageOS
方法1:還原boot.img再安裝OTA更新#
Magisk/KernelSU/APatch的Root方式都是修補手機的boot.img或init_boot.img,修改後系統就會變得不乾淨。那麼,只要還原原廠未修補前的boot.img,就可以重新接收更新了。
你可以用Root權限管理員來還原原廠boot.img。這個功能只有Magisk有。
或者用電腦刷入原廠boot.img。
要是你沒有備份原廠boot.img怎麼辦?找原廠更新包。例如Google Pixel官方有提供原廠映像檔,從壓縮檔裡面的image檔案可以解出boot.img。
然後,將手機接到電腦,進入Fastboot模式,用fastboot指令刷入該檔案到boot分區就行了。
fastboot flash boot boot.img
等待更新後再重新修補boot.img取得Root權限即可。
方法2:使用電腦刷機程式手動安裝OTA更新#
以Google Pixel來說,官方有提供原廠映像檔以及Android Flash Tool刷機工具。
讓手機進入Fastboot模式,接到電腦,再執行Android Flash Tool,選取最新版Public Releases,就可以更新到最新版系統。
不過這個工具可能會以為你要還原原廠,會嘗試清除使用者資料,因此在刷之前要記得點開選項,取消勾選Wipe Device與Lock Booloader,只要更新系統就好,不要清除資料。
由於有Root的裝置通常已經是解鎖Bootloader的裝置了,所以這裡刷機應該不會觸發清除資料的機制。
方法3:用Root權限管理員在OTA之後保留Root#
此方法的前提是裝置需要使用A/B分區來進行系統更新。Google Pixel幾乎全系列都使用這套機制。
假設你的系統在Root的狀態下還願意給你OTA的話,就可以用這個方式在OTA後保存Root權限。這樣的話就不需要透過電腦來刷入修補的boot.img了。
Magisk/KernelSU/APatch都有提供這個功能。
先安裝OTA更新,等到安裝完成後提示你重開機,但先不要重開機

開啟Root權限管理員,點選安裝,將其安裝到非活動插槽(slot),這樣的話它修補的對象就會變成剛剛安裝的OTA更新的boot.img了!

為了安全起見,你可以先把一些模組停用,免得因為系統更新後衝突開不了機。
重開機,Root權限就會自動繼承到更新後的系統,不用修補boot.img。
如果Root權限繼承失敗,就多一個步驟,手動修補boot.img,然後透過電腦Fastboot刷入。