此方法为在lineage21 Android14 内核版本为 Linux version 4.9.337 非 GKI 内核中集成

1.cd kernel/xiaomi/sdm845

curl -LSs "https://raw.githubusercontent.com/tiann/KernelSU/main/kernel/setup.sh" | bash -s v0.9.5

2.然后在arch/arm64/configs/sdm845_defconfig中加入

CONFIG_KSU=y

3.在https://kernelsu.org/zh_CN/guide/how-to-integrate-for-non-gki.html#modify-kernel-source-code

找到“将 KernelSU 调用添加到内核源代码中,这里有几个补丁可以参考:”

根据官方文档将补丁合入sdm845内核代码。这几个是 最小必须补丁,不打齐的话,KernelSU 就会出现“编译进去了,但 root 不生效”的情况。

编译 bootimage 刷入重启。

4.内核只是注入了 KernelSU 的内核端,还需要装 KernelSU Manager 应用来控制。
 https://github.com/tiann/KernelSU/releases

  • 下载 v0.9.5 对应的 Manager APK

  • 安装到手机

  • 打开后会检测到内核里的 KernelSU,显示 “工作中”

  • 在超级用户中给应用授权

注意:manager app 在 Android14 中 是 /data/app/~~uWa9CjqTQ-vUZbmBPodLEA==/me.weishu.kernelsu-sNCVOOOEmgwH7JoE5kXsXQ==/base.apk

所以需要在 KernelSU/kernel/throne_tracker.c 文件中做以下修改

	if (!manager_exist) {
		if (ksu_is_manager_uid_valid()) {
			pr_info("manager is uninstalled, invalidate it!\n");
			ksu_invalidate_manager_uid();
		}
		pr_info("Searching manager...\n");
        //Android14遍历深度是3
		//search_manager("/data/app", 2, &uid_list);
        search_manager("/data/app", 3, &uid_list);
		pr_info("Search manager finished\n");
	}

否则KernelSU找不到manager app,manager app上就会提示 "KernelSU 现在只支持 GKI 内核"。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐