本文Ivon紀錄給Sony Xperia 5 II編譯核心,令其支援KernelSU的過程,並簡介KernelSU的用法。
1. KernelSU介紹#
KernelSU為2022年出現的「基於核心的Root解決方案」,將Root權限直接放在Linux核心執行。KernelSU相較於Magisk更難以被偵測到,躲避Root偵測的能力可跟Magisk Alpha/Delta一較高下。
符合條件的裝置,僅需解鎖bootloader,再刷KernelSU官方提供的boot.img即可獲取Root權限,操作十分簡單。
但是刷KernelSU的條件比較嚴苛,根據 官方安裝說明,它要求裝置必須使用Android GKI 2.0以上的核心(Android 12 + Linux 5.10)才能刷官方提供的boot.img。不像Magisk不限核心,只要解鎖bootloader就能修補boot.img。
KernelSU依賴的GKI 2.0核心,2023年還有一大票Android廠商尚未採用,連LineageOS也沒有。加上我使用的手機為2020年發表的Sony Xperai 5 II (pdx206),核心還在4.19,就更不可能支援了。
根據 KernelSU官方指示,如果手機非GKI核心,第三方ROM社群也沒人特地移植的話,那就只能自己修改核心,把KernelSU所需功能整合進去,重新編譯,刷到手機囉。
我這支Xperia 5 II 已經刷成LineageOS 20,原始碼也有收錄在LineageOS儲存庫,所以可以直接改核心。
註: th1nhhdk/android_kernel_sony_sm8250-kernelsu已有預先建置的Xperia 5 II KernelSU核心boot.img。本文我是自己編譯。
2. 修改Linux核心,加入KernelSU支援#
參考 Xperia 5 II編譯LineageOS教學,下載LineageOS原始碼(約50GB),完成環境初始化。
進入編譯環境。
cd ~/android/lineage/
source build/envsetup.sh
breakfast pdx206
- 切換到核心原始碼目錄,產生設定檔
cd ~/android/lineage/kernel/sony/sm8250/
export ARCH=arm64
make pdx206_defconfig
- 參考 KernelSU編譯指示,下載kprobe工具
curl -LSs "https://raw.githubusercontent.com/tiann/KernelSU/main/kernel/setup.sh" | bash -
- 修改核心設定檔
make menuconfig
進入核心設定選單
開啟以下三個選項。可以按
/
搜尋。
CONFIG_KPROBES=y
CONFIG_HAVE_KPROBES=y
CONFIG_KPROBE_EVENTS=y
- 更改完成後,把變更寫回arm64目錄
make savedefconfig
cp .config arch/arm64/configs/pdx206_defconfig
- 開始編譯Linux核心,得到
boot.img
make clean
mka bootimage
- 讓Sony手機進入Fastboot模式(關機按著音量下鍵接到電腦,亮藍燈),將位於``~/android/lineage/out/target/product/pdx206/`的boot.img刷到手機
fastboot flash boot boot.img
3. KernelSU授予Root權限的方式#
KernelSU應該可以跟Magisk共存,但我暫時不這樣做,所以沒有給Magisk修補boot.img。
重開機後到KernelSU的 Github,下載KernelSU管理器APK(在最新版本點選Show all assets)
KernelSU沒有Root授權對話框,預設都是不給予Root權限的。
需要個別給APP授予Root權限。KernelSU還提供範本,能詳細設定要賦予的權限模式。
APP拿到Root權限後應該就會正常運作,沒有「已授予Root權限」的提示。
4. 安裝Magisk模組和LSPosed#
儘管不是100%相容,我試了幾個模組都可以正常運作。
KernelSU刷模組過程跟Magisk相同,不過刷模組前要把模組重新命名成modules
開頭。
經過測試Viper4Android(搭配Audio Modification Library)正常、Busybox正常、PlayIntegrityFix正常。
LSPosed得另外刷 ZygiskNext模組才能運作。
5. 測試KernelSU躲避Root偵測的效果#
搭配 PlayIntegrityFix, YASNAC顯示SafetyNet可以通過。
搭配 Shamiko的情況下,健保快易通(3.0.33)、玉山銀行(4.7.0)可以開啟。不過行動郵局(1.19.0)還是偵測到Root。