快轉到主要內容

非Android GKI手機編譯安裝KernelSU,以Sony Xperia 5 II當例子

智慧型手機 Root與刷機 KernelSU Sony Xperia Linux Kernel Magisk
🗓️ 民國112年 癸卯年
✍ 切換正體/簡體字
目錄

本文紀錄給Sony Xperia 5 II編譯核心,令其支援KernelSU的過程,並簡介KernelSU的用法。

1. 說明
#

KernelSU為「基於核心的Root解決方案」,將Root權限直接在放在Linux核心執行。KernelSU相較於原版Magisk更難以被偵測到,躲避Root偵測的能力可跟Magisk Alpha/Delta一較高下。

但是刷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核心。本文我是自己編譯。

2. 修改Linux核心
#

  1. 參考 Xperia 5 II編譯LineageOS教學,下載LineageOS原始碼(約50GB),完成環境初始化。

  2. 進入編譯環境。

cd ~/android/lineage/
source build/envsetup.sh
breakfast pdx206
  1. 切換到核心原始碼目錄,產生設定檔
cd ~/android/lineage/kernel/sony/sm8250/
export ARCH=arm64
make pdx206_defconfig
  1. 下載KernelSU提供的kprobe工具
curl -LSs "https://raw.githubusercontent.com/tiann/KernelSU/main/kernel/setup.sh" | bash -
  1. 修改核心設定檔
make menuconfig
  1. 進入核心設定選單

  2. 開啟以下三個選項。可以按/搜尋。

CONFIG_KPROBES=y
CONFIG_HAVE_KPROBES=y
CONFIG_KPROBE_EVENTS=y
  1. 更改完成後,把變更寫回arm64目錄
make savedefconfig
cp .config arch/arm64/configs/pdx206_defconfig
  1. 開始編譯Linux核心,得到boot.img
make clean
mka bootimage
  1. 讓Sony手機進入Fastboot模式(關機按著音量下鍵接到電腦,亮藍燈),將位於``~/android/lineage/out/target/product/pdx206/`的boot.img刷到手機
fastboot flash boot boot.img

3. KernelSU授予Root權限的方式
#

KernelSU應該可以跟Magisk共存,但我暫時不這樣做,所以沒有給Magisk修補boot.img。

  1. 重開機後到KernelSU的 Github,下載KernelSU管理器APK(在最新版本點選Show all assets)

  2. KernelSU沒有Root授權對話框,預設都是不給予Root權限的。

  3. 需要個別給APP授予Root權限。KernelSU還提供範本,能詳細設定要賦予的權限模式。

  4. 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。

相關文章

編譯修改第三方Android ROM & Kernel,以LineageOS 20 + Sony Xperia 5 II為例
智慧型手機 Root與刷機 Sony Xperia Android LineageOS Linux Kernel
推薦「MRepo」Magisk模組管理器,取代Androidacy
智慧型手機 Root與刷機 Magisk KernelSU
Sony Xperia手機Root後如何安裝OTA更新,使用NewFlasher
智慧型手機 Root與刷機 Sony Xperia Magisk

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。