技術上來說Android手機在Root刷入Magisk後,依然可以跑OTA更新,只是過程比較繁瑣而已。
注意Root下OTA系統更新仍有風險,尤其是非LineageOS的原廠系統,可能會無法開機。
1. 判別手機更新行為#
OTA即空中更新,是從手機上安裝系統更新的技術,不需要電腦。但是Android品牌眾多,不同手機更新方式不一樣…我只講個大方向。
現在Android 13的Magisk通常透過修補boot.img安裝,由於Magisk僅存在於boot.img,不修改系統檔案。因此讓Magisk暫時消失,還原手機原本的boot.img,通常就可以跑OTA更新。之後再把Magisk刷回來。
為此裝Magisk的手機要更新系統前,首先要判別手機更新行為,再討論如何處理Magisk。下面討論的都是不含TWRP、手機啟用A/B分區的情況。
可以分為四種情況:
有的手機即使Root,仍可以從「系統設定」取得OTA更新,並且安裝完才會重開機,此時請採用安裝非使用的槽位法
LineageOS系統,即使Root後還是可以從系統設定取得OTA更新。更新後才會重開機。可採用安裝非使用的槽位法或重新修補boot.img法
系統更新要重開機(進Recovery)才會開始安裝的,一律採用重新修補boot.img法
如果手機偵測解鎖bootloader或Root後「系統設定」就看不到更新OTA的,請採用重新修補boot.img法。
2. 方法一:安裝至非使用的槽位#
此方法僅限Root後仍能從「系統設定」收到OTA、安裝更新不會立即重開機、採用A/B分區的手機。
開啟開發人員選項 → 關閉開機後套用自動OTA更新
開啟Magisk,點選解除安裝 → 還原原始映像檔
點選系統設定,檢查更新,開始安裝OTA。更新完後不要重開機。
開啟Magisk,點選安裝 → 安裝至非使用的槽位,之後重開機。
3. 方法二:重新修補boot.img#
- 將手機還原到沒有Magisk的狀態。要達成此目的,可以開啟Magisk,按解除安裝Magisk → 還原映像檔,還原原廠的boot.img
另一種方法是用Fastboot還原boot.img。你可以嘗試從系統更新包抽取boot.img,讓手機進入Fastboot後,用電腦的Fastboot刷入:
fasttboot flash boot boot.img
重開機,開啟Magisk APP,確認Magisk已安裝變成「無」
確認Magisk暫時消失後,開始套用系統更新。
有些手機一旦解鎖bootloader,系統設定就不給OTA了!如果無法單靠手機更新,就得另外找方法刷入系統更新包,比方說小米可以用電腦刷 線刷包;Sony則是用 NewFlasher強刷。
在更新完系統後,從系統更新包抽出boot.img,交給Magisk APP修補boot.img
之後再將該檔案傳回電腦。讓手機進入Fastboot,將修補過的boot.img刷回手機
fasttboot flash boot magiks_patched_boot.img