查看原文
其他

KernelSU: Root 兼容性大幅提升

维术 虚拟框架 2023-04-09

昨天 KernelSU 发布了 0.5.0 版本,大幅提升了 ROOT 命令与 MagiskSU 的兼容性。在这以前,很多童鞋表示有非常多的 ROOT 应用在 KernelSU 上无法使用,其中有一些应用专门针对 KernelSU 做了适配,而另外还有相当一部分没有;这就比较尴尬了:明明有 ROOT 权限,但是却用不了;不过这一切都在新版本中得到了解决。

Magisk 的 SU 应该是来源于 SuperSU,比如 --mount-master 选项,它的作用其实就是切换 SU 的命名空间;按照我的理解,这个选项实际上就是 nsenter 的语法糖,奈何这个语法糖被直接内置进了 SU,并且依赖它的应用太多,以至于如果你不给它加糖它就拒绝工作;最开始我建议大家自己使用 nsenter 手动切换命名空间,这样可以保证兼容所有的 SU,假如未来出现一个 TeeSU 理论上也可以运行,可是基本上没人买账 : (

KernelSU 的 SU 是“虚空 SU”,文件系统中实际上没有 SU 文件的存在,SU 命令在 exec 的时候,内核会将“虚空SU”识别出来并替换为 Android 系统的默认 shell /system/bin/sh;因此,KernelSU 的 "SU" 实际上就是 "sh"。但 Android 的这个内置 shell 实在是有点弱,非常不好用(它甚至都没 --help 选项?)在新版本里面,咱们模拟了一个 "sh" 然后在 SU 命令 exec 的时候替换为咱们自己实现的的这个 "sh",然后问题就得到了解决。

新版本的改动还有个额外的 bonus:可以给 SU 使用的 shell 指定一个类似电脑上的 .zshrc 或者 bashrc 之类的东西,把你常用的命令加到这个 /data/adb/ksu/.ksurc 文件里面,你就可以方便地在 adb shell 中使用了!

不过,KernelSU 与 MagiskSU 的最大区别不在于此。MagiskSU 是remote SU,而 KernelSU 是 local SU,这就导致两者在使用的时候可能还会有细微区别;这些问题就等以后暴露出来再解决吧 :)

最后,强烈建议大家升级到 0.5.0 版本!大家晚安!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存