Install OTA updates and keep root on your LineageOS.
討論永久保持root權限的方法。
刷了LineageOS的Android手機,如何在OTA更新後如何保持Root權限?其實不用電腦進Fastboot重刷,我們只要抓住A/B分區更新後的「那個瞬間」寫入就行,就能傳承root之力給下一代系統。
簡化步驟如下:

1. A/B分區原理 #
有的Android原廠系統偵測到Root後會拒絕OTA更新,得自己用線刷包升級。Google Pixel似乎是不管的。
而LineageOS,是不管你有無Root都可以OTA更新。

不過更新系統,重開機後,Root權限就會噴掉,需要進Fastboot或Recovery重刷。
目前Android 17的主流Root方案,包含Magisk、KernelSU、APatch,大多透過修補系統啟動所需的映像檔,來取得權限。這樣能防止直接修改系統分區,降低變磚風險。修改對象可能是boot.img或vendor_boot.img,更舊的還有recovery.img。安裝方法是你將LineageOS的boot.img丟給Magisk Manager修補後,然後傳到電腦,用Fastboot模式刷入分區。
現在Android 10以上的手機多半使用A/B分區機制(包含Virtual A/B),讓系統更新失敗時仍有機會還原到舊版,避免手機無法開機。A/B分區指的是手機會有A、B兩組啟動槽位(Slot)。
假設你目前使用的是A槽位,OTA更新便會在背景將新版系統寫入B槽位,等到下次重新開機,才會切換至B槽位啟動。如果目前使用的是B槽位,則下次OTA更新就會改裝到A槽位。
但是,原本的Root是安裝在A槽位的boot.img,新版系統的B槽位還沒有Root啊!於是,OTA更新後重新開機,系統就會切換到沒有Root的boot.img的B槽位,Root權限也就噴掉了。這樣還得進Fastboot,用電腦重刷修補過的boot.img。
(注解:Root權限噴掉,不代表系統就unroot了,解鎖Bootloader的痕跡還是會在,且Magisk模組位於/data/adb/modules/的檔案不會自動刪除)
不能在手機完成OTA並抱持Root嗎?
可以。
2. 在OTA更新後維持Root權限 #
將Root權限安裝到未使用槽位即可。
這裡我不考慮使用TWRP,因為需要每臺手機移植,然而LineageOS自己就有Recovery了,雖然功能很少。
具體步驟:
-
在LineageOS系統安裝好OTA更新之後,系統提示你重開機的時候,先不要手賤按下去

-
利用目前的系統還有Root權限的空檔,打開Root權限管理器,選擇「安裝到另外一個未使用的槽位」就行了,它其實就是寫入已經安裝了OTA更新的A/B分區,令其預先獲得root權限。Magisk、APatch、KernelSU都支援這個功能。

-
接著重開機即可,Root權限還會在。
-
在LineageOS我大部分都是用這樣完成系統更新的,鮮少遇到繼承Root後開不了機的。不過如果是跨版本大更新(如Android 16升Android 17)可能會發生模組不相容,就先解除Root,確保能開機比較安全。