[指南Vol.4专栏版]KernelSu的概念与安装教程 |
您所在的位置:网站首页 › iqoo5最新系统版本 › [指南Vol.4专栏版]KernelSu的概念与安装教程 |
最近在玩机圈中,有一个不温不火的小话题 KernelSu 一个内核级别的ROOT管理器 他是什么意思?如何安装使用? 首先,我们需要了解KernelSu的概念。 Kernel,翻译过来就是内核,什么是内核? Android 设备的启动分为三个阶段: 1.BootLoader: Android设备打开电源后,首先会从处理器片上ROM的启动引导代码开始执行,寻找Bootloader代码,并加载到内存。 2.Linux Kernel: Bootloader开始执行,首先负责完成硬件的初始化,然后找到Linux内核代码,并加载到内存。 3.Android 系统服务: Linux内核开始启动,初始化各种软硬件环境,加载驱动程序,挂载根文件系统,并执行init程序,由此开启Android的世界。 Android系统实际上是运行在Linux Kernel之上的一系列系统服务进程。 为什么可以 Root 在类Unix系统中,一切皆文件。文件结构通过某种树状的机制组织起来,并且最终归于一个起源:根目录,root。 这个根目录的修改权限是较为敏感的系统操作,同时考虑到系统安全性与稳定性,也是一般不会为普通用户开放的权限。 这时,为了更高的系统可玩性,用户可能会去获得这个权限。在多用户机制中,得到这一权限的用户被称为root用户。 KernelSU KernelSU,顾名思义,就是基于内核的 SU。它通过自定义内核,直接在内核中赋予目标进程 root 权限。 由于 KernelSU 的实现需要自定义内核,而 Android 系统的碎片化极其严重,又由于 Linux 内核不同版本之间没有兼容性可言;因此之前的 KernelSU 方案很难拥有通用性:你必须给每个型号的设备编译一个自定义内核,这几乎是不可能实现的。另外,之前的 KernelSU 实现没有鉴权系统,系统中的任何进程,无需任何授权,都可以直接通过 su 访问到 root 权限;这对普通用户来说是难以接受的:随便一个 App 一上来就有可能控制你的整个手机。 在GKI2.0之前,这是不可能实现的事情。而GKI2.0带来了内核的通用性,使得KernelSU的推广也成为了可能。 特性 基于内核的 su 和权限管理。 基于 overlayfs 的模块系统。 GKI(Gerneric Kernel Image,通用内核镜像) 根据谷歌官方的文档中记载,Android 通用内核 (ACK) 是所有 Android 产品内核的基础。供应商内核和设备内核位于 ACK 的下游。供应商通过修改内核源代码并添加设备驱动程序,添加了对 SoC 和外围设备的支持。 因此,设备内核由以下部分组成: 1.上游:来自 kernel.org 的 Linux 内核 2.AOSP:AOSP 通用内核的其他 Android 专用补丁程序 3.供应商:供应商提供的 SoC 和外围设备支持以及优化补丁程序 4.原始设备制造商:其他设备驱动程序和自定义项 几乎所有设备都具有自定义内核。这就导致了内核碎片化问题。 内核碎片化会对 Android 社区产生若干负面影响。 1.安全更新需要耗费大量人力 2.很难合并长期支持的更新 3.妨碍 Android 平台进行版本升级 4.很难将内核更改贡献回上游 Linux 通用内核映像 (GKI) 项目通过统一核心内核并将 SoC 和板级支持从核心内核移至可加载模块中,解决了内核碎片化问题。GKI 内核为内核模块提供了稳定的内核模块接口 (KMI),因此模块和内核可以独立进行更新。 KernelSU 安装 首先检查您的设备是否被支持 从 GitHub 或 酷安 下载 KernelSU 管理器应用,然后将应用程序安装到设备并打开: 如果应用程序显示 “不支持”,则表示您的设备不支持 KernelSU,你需要自己编译设备的内核才能使用,KernelSU 官方不会也永远不会为你提供一个可以刷写的 boot 镜像。 如果应用程序显示 “未安装”,那么 KernelSU 支持您的设备;可以进行下一步操作。 KMI 查看 KMI 全称 Kernel Module Interface,相同 KMI 的内核版本是兼容的 这也是 GKI 中“通用”的含义所在;反之,如果 KMI 不同,那么这些内核之间无法互相兼容,刷入与你设备 KMI 不同的内核镜像可能会导致死机。 具体来说,对 GKI 的设备,其内核版本格式应该如下: KernelRelease := Version.PatchLevel.SubLevel-AndroidRelease-KmiGeneration-suffix w .x .y -zzz -k -something其中,w.x-zzz 为 KMI 版本。例如,一个设备内核版本为5.10.101-android12-9-g30979850fc20,那么它的 KMI 为 5.10-android12-9;理论上刷入其他这个 KMI 的内核也能正常开机。 请注意,内核版本中的 SubLevel 不属于 KMI 的范畴!也就是说 5.10.101-android12-9-g30979850fc20 与 5.10.137-android12-9-g30979850fc20 的 KMI 相同!(只看前两个版本号) 请注意:内核版本与 Android 版本并不一定相同! 如果您发现您的内核版本是 android12-5.10.101,而你 Android 系统的版本为 Android 13 或者其他;请不要觉得奇怪,因为 Android 系统的版本与 Linux 内核的版本号不一定是一致的;Linux 内核的版本号一般与设备出厂的时候自带的 Android 系统的版本一致,如果后续 Android 系统升级,内核版本一般不会发生变化。如果你需要刷机,请以内核版本为准!! 安装 KernelSU 的安装方法有如下几种,各自适用于不同的场景,请按需选择: 1.使用自定义 Recovery(如 TWRP)安装 2.使用内核刷写 App,如 (Franco Kernel Manager)安装 3.使用 KernelSU 提供的 boot.img 使用 fastboot 安装 4.手动修补 boot.img 然后安装 使用自定义 Recovery 安装 前提:你的设备含有第三方Recovery 如TWRP;如果只有官方 Recovery,请使用其他方法。 步骤: 在 KernelSU 的 Release 页面 下载与你手机版本匹配的以 AnyKernel3 开头的 zip 刷机包;例如,手机内核版本为 android12-5.10.66,那么你应该下载 AnyKernel3-android12-5.10.66_yyyy-MM.zip 这个文件(其中 yyyy 为年份,MM 为月份)。 重启手机进入 TWRP。 将 AnyKernel3-*.zip 放到手机 /sdcard 然后在 TWRP 图形界面选择安装。 这种方法适用于任何情况下的安装(不限于初次安装或者后续升级),只要你用 TWRP 就可以操作。 使用 KernelSU 提供的 boot.img 安装 这种方法不需要你有 TWRP,也不需要你的手机有 root 权限;适用于你初次安装 KernelSU。 首先找到合适的 boot.img KernelSU 为 GKI 设备提供了通用的 boot.img 您可以从 GitHub Release下载 boot.img, 请注意您应该使用正确版本的 boot.img. 例如,如果您的设备显示内核是 android12-5.10.101, 需要下载 android-5.10.101_yyyy-MM.boot-;format;.img. 其中 ;format; 指的是你的官方 boot.img 的内核压缩格式,请检查您原有 boot.img 的内核压缩格式,您应该使用正确的格式,例如 lz4、gz;如果是用不正确的压缩格式,刷入 boot 后可能无法开机。 小米设备通常使用 gz 或者 不压缩。 然后将 boot.img 刷入设备 使用 adb 连接您的设备,然后 进入 fastboot 模式,然后使用此命令刷入 KernelSU: fastboot flash boot boot.img注意,boot是你设备的引导镜像,如果出现问题,会导致卡第一屏,请先备份设备原boot镜像再操作 部分机型支持 fastboot boot-临时启动,可以先使用 fastboot boot boot.img如果刷写后卡在第一屏怎么办?刷回备份好的原boot镜像即可恢复,如果没有备份,下载当前系统的线刷包或卡刷包,提取boot镜像刷回即可。 KernelSu的优缺点 优点 WSA 和运行在容器上的 Android 也可以与 KernelSU 一起工作。 GKI 设备不用自行修补镜像,更方便。 目前不会被检测到(如果要用模块的话会检测overlayfs,只用su并不会被检测到) 缺点 KernelSU 官方支持 GKI 2.0 的设备(内核版本5.10以上);旧内核也是兼容的(最低4.14+),不过需要自己编译内核。 KernelSU 的模块系统与 Magisk 的 magic mount 有冲突,如果 KernelSU 中启用了任何模块,那么整个 Magisk 将无法工作。 但是如果你只使用 KernelSU 的 su,那么它会和 Magisk 一起工作:KernelSU 修改 kernel 、 Magisk 修改 ramdisk。 模块 ZygiskOnKernelSU 刷入此模块后,其他常用模块直接刷入(可能存在部分问题) 无论何时,请保管数据,下期见。 引用文章 KernelSu部分概念(https://mp.weixin.qq.com/s?__biz=MjM5Njg5ODU2NA==&mid=2257500703&idx=1&sn=31e8d32ee4ac1122764db58d320493c4&chksm=a598287492efa1625dfc4ad932dee0f05d03acd834d7bd5b44daa657a1188aa5fc243fdf6329&scene=21#wechat_redirect) 谷歌官方文档(https://source.android.com/docs/core/architecture/kernel/generic-kernel-image?hl=zh-cn) KernelSu管理器下载(https://www.coolapk.com/apk/me.weishu.kernelsu) KernelSU 的 Release 页面(https://github.com/tiann/KernelSU/releases) ZygiskOnKernelSU(https://github.com/Dr-TSNG/ZygiskOnKernelSU) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |