核手動移植教程:4.14 以上非 GKI 設(shè)備如何集成內(nèi)核級 root)
KernelSU 舊內(nèi)核手動移植教程4.14 以上非 GKI 設(shè)備如何集成內(nèi)核級 root【免費下載鏈接】KernelSUA Kernel based root solution for Android項目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU打開 KernelSU 管理器設(shè)備欄顯示不支持adb shell uname -r出來的是4.19.191-android11-8-gb2f41e6——這是典型的老設(shè)備。官方 FAQ 給出的邊界是最低支持到 Linux 4.14低于 4.14 需要自行移植而自 v1.0 起KernelSU 已放棄對非 GKI 設(shè)備的官方支持最后支持非 GKI 內(nèi)核的版本是 v0.9.5見 website/docs/zh_CN/guide/faq.md 和 website/docs/zh_CN/guide/how-to-integrate-for-non-gki.md。結(jié)論先說4.14–5.3 區(qū)間可以集成但前提是你擁有設(shè)備開源內(nèi)核源碼且能從源碼編譯出一個能正常開機的內(nèi)核。如果內(nèi)核不開源、或者沒有編譯過 Linux 內(nèi)核的經(jīng)驗這條路不適合你別往下走。動手前核對這份清單事項性質(zhì)內(nèi)核版本 ≥ 4.14uname -r主版本號硬性要求Bootloader 已解鎖硬性要求無法繞過設(shè)備內(nèi)核源碼開源且你有能力編譯出可開機的內(nèi)核硬性要求官方文檔原話源碼不開源時這通常難以做到交叉編譯工具鏈與內(nèi)核基線匹配硬性要求設(shè)備支持fastboot boot臨時引導可繞過沒有 TWRP 等自定義 Recovery 也行原廠 boot.img 已備份硬性要求刷壞后的唯一恢復手段特別提醒一點判斷用哪個內(nèi)核只看內(nèi)核版本不看 Android 版本。android12-5.10的內(nèi)核可能跑在 Android 13 系統(tǒng)上website/docs/zh_CN/guide/faq.md 明確警告混用會導致 bootloop。集成 KernelSU 到內(nèi)核源碼樹并配置編譯第 1 步確認內(nèi)核版本與 KMI 標識執(zhí)行adb shell uname -r拿到完整版本號例如4.19.191-android11-8-gb2f41e6。預期結(jié)果記下主版本號4.19確認 ≥ 4.14。失敗時的第一反應連不上 ADB 先檢查驅(qū)動和線纜這一步?jīng)]有替代手段。第 2 步備份原廠 boot 鏡像刷機前把原廠 boot 存下來。已有 root 時可直接從塊設(shè)備導出adb shell su -c dd if/dev/block/by-name/boot of/sdcard/boot-backup.img adb pull /sdcard/boot-backup.img沒有 root 就從官方線刷包/固件包里提取 boot.img。by-name/boot不是每臺設(shè)備都有找不到時用ls /dev/block/by-name/列出實際分區(qū)名。這一步失敗別硬刷——后續(xù)所有排錯都依賴這個備份。第 3 步把 KernelSU 掛進內(nèi)核源碼樹在設(shè)備內(nèi)核的根目錄執(zhí)行倉庫里的安裝腳本指定 v0.9.5sh /path/to/KernelSU/kernel/setup.sh v0.9.5腳本會克隆 KernelSU、檢出指定 tag、在內(nèi)核drivers/下建kernelsu符號鏈接并自動向drivers/Makefile和drivers/Kconfig追加掛載條目邏輯見 kernel/setup.sh。預期輸出以[] Done.結(jié)尾。注意版本必須用 v0.9.5v1.0 之后的主線已移除非 GKI 集成能力。失敗時的第一反應如果腳本拉取源碼失敗手動git clone https://gitcode.com/GitHub_Trending/ke/KernelSU進入目錄git checkout v0.9.5再把kernel/目錄軟鏈到drivers/kernelsu并補上 Makefile/Kconfig 兩行即可腳本做的事一共就這三件。第 4 步打開 CONFIG_KSU 與 kprobe 選項找到你設(shè)備的 defconfig通常在arch/arm64/configs/或arch/arm64/configs/vendor/加上# KernelSU CONFIG_KSUy再確認 kprobe 相關(guān)配置已啟用未啟用則補上CONFIG_KPROBESy CONFIG_HAVE_KPROBESy CONFIG_KPROBE_EVENTSykernel/Kconfig 里KSU依賴KPROBES EXT4_FS所以make menuconfig搜索KSU時如果看不到選項先查這兩個依賴kprobe 又依賴CONFIG_MODULES依賴鏈任何一環(huán)沒開hook 都不會生效。第 5 步編譯內(nèi)核用該內(nèi)核自帶的構(gòu)建流程編譯沿用你平時出 boot 鏡像的方式make ARCHarm64 CROSS_COMPILEaarch64-linux-gnu- -j$(nproc)CROSS_COMPILE換成你的工具鏈前綴。預期得到 boot.img或 Image 打包腳本的產(chǎn)物。編譯報錯先查頭兩個錯誤十有八九是工具鏈版本和內(nèi)核基線不匹配。第 6 步用 fastboot boot 臨時引導驗證不要直接刷分區(qū)先臨時啟動fastboot boot boot-backup目錄里的新鏡像.img設(shè)備正常進系統(tǒng)即通過卡 logo 就重啟系統(tǒng)會回到原內(nèi)核無副作用。失敗時的第一反應判定是 kprobe 在這個內(nèi)核上工作不正常。官方給出的驗證法是注釋掉kernel/ksu.c中的ksu_sucompat_init()和ksu_ksud_init()重編譯若能開機就是 kprobe 的鍋轉(zhuǎn)手動補丁路線第 7 步。第 7 步兜底手動改內(nèi)核源碼掛 hookkprobe 用不了時按官方存檔教程在四個位置插入調(diào)用fs/open.c的do_faccessat、fs/exec.c的do_execveat_common、fs/read_write.c的vfs_read、fs/stat.c的vfs_statx。兩個版本差異要注意老內(nèi)核沒有vfs_statx就改用vfs_fstatat4.17 之前沒有do_faccessat直接改faccessat系統(tǒng)調(diào)用定義處補丁全文見 website/docs/zh_CN/guide/how-to-integrate-for-non-gki.md。同時強烈建議一并改drivers/input/input.c的input_handle_event把安全模式接進來——救磚時這是保命功能。?? 走手動路線必須把CONFIG_KPROBES關(guān)掉否則開機時按音量下會誤觸發(fā)安全模式。第 8 步刷入并重啟fastboot flash boot boot-ksu.img fastboot reboot刷完進系統(tǒng)即算完成。開機異常立刻fastboot flash boot boot-backup.img fastboot reboot回滾。典型故障速查現(xiàn)象集成后開機卡 logo重啟能恢復原因該內(nèi)核的 kprobe 實現(xiàn)有 bug 或配置不完整 處理按第 6 步的方法注釋 sucompat/ksud 初始化驗證確認后用手動補丁路線重做現(xiàn)象make 報CONFIG_KSU相關(guān) undefined或 menuconfig 找不到 KernelSU 菜單原因drivers/Kconfig沒被 source或 defconfig 沒加CONFIG_KSUy處理檢查drivers/Kconfig中是否有source drivers/kernelsu/Kconfig行沒有就重跑 setup.sh 或手動補上現(xiàn)象能開機但 hook 不生效su 注入不出現(xiàn)原因CONFIG_MODULES未啟用kprobe 依賴鏈斷了 處理make menuconfig里從KPROBES項逐級查依賴全部補y后重編譯現(xiàn)象手動集成后開機時誤按音量下導致模塊全部被禁原因手動模式?jīng)]關(guān)CONFIG_KPROBES處理defconfig 設(shè)CONFIG_KPROBESn重編譯臨時可用管理器卸載問題模塊恢復現(xiàn)象刷入后無法開機或卡在 avb 校驗原因內(nèi)核基線與設(shè)備不匹配或觸發(fā)防回滾/安全補丁校驗 處理刷回原廠 boot 恢復重新核對內(nèi)核源碼基線版本參考 website/docs/zh_CN/guide/rescue-from-bootloop.md驗證生效與安全回滾確認 root 生效執(zhí)行adb shell su -c id返回uid0(root)即成功同時確認/data/adb/ksu/目錄存在且里面有ksud。管理器安裝后應顯示已安裝狀態(tài)管理器 APK 與內(nèi)核版本需配套統(tǒng)一用 v0.9.5 時期的包?;貪L只有一條路fastboot flash boot boot-backup.img fastboot reboot把第 2 步的備份刷回去即恢復原狀。之后想繼續(xù)用裝模塊時凡是模塊要改/system文件的需要先裝 metamodule如meta-overlayfs純腳本/sepolicy 類模塊直接裝模塊刷壞導致不開機開機第一屏后快速點按音量下三次進 KernelSU 安全模式在管理器里卸載問題模塊即可?!久赓M下載鏈接】KernelSUA Kernel based root solution for Android項目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考