获取Root权限:修订间差异

来自Uotan Wiki · 刷机百科
(将指令用代码块包裹)
(更改magiskboot 引用到词条)
 
(未显示2个用户的11个中间版本)
第2行: 第2行:
同Linux相似,Android系统中的Root权限是Android系统中的最高权限,可以完成绝大部分需要高权限的操作
同Linux相似,Android系统中的Root权限是Android系统中的最高权限,可以完成绝大部分需要高权限的操作


==== <big>因此,获取Root权限后,应妥善管理,不应给可疑软件Root权限,更不应随意使用Root权限修改系统文件,因Root权限管理/使用不当导致的问题,轻则系统出现bug,重则变砖</big> ====
'''<big>因此,获取Root权限后,应妥善管理,不应给可疑软件Root权限,更不应随意使用Root权限修改系统文件,因Root权限管理/使用不当导致的问题,轻则系统出现bug,重则变砖!</big>'''
<big>注:本章目前仅适用于A-only设备,其他设备敬请期待</big>
 
== 下面开始阐述如何获取Root权限 ==


=== <big>操作前准备</big> ===
=== <big>操作前准备</big> ===


# 设备Bootloader已解锁
* 设备Bootloader已解锁
# 一台电脑,数据线(最好是原装),电脑已安装驱动,已下载fastboot工具包
* 一台电脑,数据线(最好是原装),电脑已安装驱动,已下载fastboot工具包
# (可选但推荐)给设备刷入一个第三方Recovery
* (可选但推荐)给设备刷入一个第三方Recovery


=== <big>正式操作</big> ===
=== <big>正式操作</big> ===
'''<big>目前有三种主流的Root方案:[[Magisk|Magisk(面具)]]  [[KernelSU]] 与 [[APatch]]</big>'''
Magisk是建议的root方案,它比较简单,适用于入门用户
KernelSU较为高级,且兼容的内核版本没有Magisk广泛,但KernelSU在内核层面提供root,反检测能力更强,适用于高级用户


=== 目前有两种主流的Root方案:Magisk(面具) 和 KernelSU ===
APatch是内核层面的root,但提供了Magisk的修补功能


=== KernelSU过于复杂,本章节只讨论Magisk ===
'''<big>强烈建议:在刷入Magisk,KernelSU或APatch前备份boot镜像,供无法开机时恢复</big>'''
'''<big>强烈建议:在刷入Magisk前备份boot镜像,供无法开机时恢复</big>'''
 
=== '''<big>---------- 1.使用Magisk ----------</big>''' ===


=== 方案一:提取boot并刷入(较稳定) ===
=== 方案一:提取boot并刷入(较稳定) ===
第37行: 第40行:
2.没有boot.img/init_boot.img,但是有payload.bin,请参考Magisk中文网的[https://magiskcn.com/payload-dumper-go-boot 教程]提取出boot镜像
2.没有boot.img/init_boot.img,但是有payload.bin,请参考Magisk中文网的[https://magiskcn.com/payload-dumper-go-boot 教程]提取出boot镜像


=== 2.使用Magisk修补boot镜像 ===
==== 2.使用Magisk修补boot镜像 ====
 
===== 方法一:APP修补 =====
1.将提取的boot镜像传到设备上,在设备上下载并安装Magisk,点击主页"Magisk"卡片右上角的"安装"
1.将提取的boot镜像传到设备上,在设备上下载并安装Magisk,点击主页"Magisk"卡片右上角的"安装"


第46行: 第51行:
4.依照Magisk输出中给出的修补后的镜像路径,将修补后的镜像传给电脑
4.依照Magisk输出中给出的修补后的镜像路径,将修补后的镜像传给电脑


'''注:有些机型支持使用fastboot boot boot镜像路径 的方式来临时启动boot镜像,如果magisk正常工作,再使用刷入命令刷入;这样的好处在于,如果magisk没有正常工作,可以直接重启来恢复,建议优先使用该方法'''
'''注:有些机型支持使用fastboot boot boot镜像路径 的方式来临时启动boot镜像,如果magisk正常工作,再使用刷入命令刷入'''
 
'''这样的好处在于,如果magisk没有正常工作,可以直接重启来恢复,建议优先使用该方法'''


5.手机进入fastboot,用数据线连接电脑和设备,在具有fastboot的目录下执行此命令:
5.手机进入fastboot,用数据线连接电脑和设备,在具有fastboot的目录下执行此命令:


<code>fastboot flash boot 修补后的boot镜像路径</code>
  fastboot flash boot 修补后的boot镜像路径
 
如果设备为AB分区,请附加槽位后缀,默认为当前活动槽位


(如果设备刷入了第三方Recovery,可忽略第4步和第5步,直接在Recovery中刷入镜像)
(如果设备刷入了第三方Recovery,可忽略第4步和第5步,直接在Recovery中刷入镜像)
第60行: 第69行:
若不能正常工作,请刷回原来的boot镜像,使用该指令:
若不能正常工作,请刷回原来的boot镜像,使用该指令:


<code>fastboot flash boot boot镜像路径</code>
  fastboot flash boot boot镜像路径
 
===== 方法二:使用柚坛工具箱修补 =====
[[文件:柚坛工具箱基本刷入页面.png|居中|缩略图|630x630像素]]
在柚坛工具箱的基本刷入页面的修补Boot中,选择提取出的Boot镜像,在选择文件一行中,可以更换需要使用的Magisk安装包,不更换则自动使用工具箱默认的版本。一般情况下,下面的5个选项保持默认即可。随后,点击开始修补。
 
修补完成后工具箱会提示是否刷入至当前设备,选择 是 即可刷入至当前连接的设备(请确保设备处于Fastboot模式),选择否将自动打开修补后的boot所在的文件夹。


=== '''方案二:使用第三方Recovery卡刷''' ===
=== 方案二:使用第三方Recovery卡刷 ===
这种方法更简便,尤其是设备刷入了第三方Recovery,而boot镜像的获取比较困难之时,直接卡刷是一个不错的选择
这种方法更简便,尤其是设备刷入了第三方Recovery,而boot镜像的获取比较困难之时,可选择直接卡刷


这种方案仅需要:
这种方案仅需要:
第74行: 第89行:


如果打开Magisk后提示"需要修复运行环境"或其他问题,请按照指引操作,此时在刷入时可以直接选择"直接安装"
如果打开Magisk后提示"需要修复运行环境"或其他问题,请按照指引操作,此时在刷入时可以直接选择"直接安装"
=== '''---------- 2.使用KernelSU ----------''' ===
'''注:使用KernelSU获取Root权限相对于Magisk复杂一点,且部分Magisk模块可能不兼容KernelSU,请谨慎选择'''
==== <big>操作前准备</big> ====
* 设备Bootloader已解锁
* 设备使用的是gki内核(不知道什么是gki内核没关系,可使用KernelSU管理器查看,见下文)
* 一台电脑,数据线(最好是原装),电脑已安装驱动,已下载fastboot工具包
* (可选但推荐)给设备刷入一个第三方Recovery
==== <big>正式操作</big> ====
==== 1.检查支持 ====
从[https://github.com/tiann/KernelSU/releases KernelSU GitHub Release]下载KernelSU管理器(文件名为xxx.apk,建议最新版本)后安装并打开
如果KernelSU显示的是"不支持",则表明KernelSU不支持该设备,这很大概率上是因为设备内核非gki内核
你可以尝试自己编译内核,但这不是本章节讨论的内容
如果KernelSU显示的是"未安装",则表明设备支持KernelSU,可以进行下一步操作
==== 2.获取内核并刷入 ====
'''<big>强烈建议:在刷入KernelSU前备份设备boot镜像,以供无法启动时恢复</big>'''
===== 方案一:手动处理 =====
====== 方法一:GKI ======
首先查看你的内核版本,看完下文gki内核版本概述,并在[https://github.com/tiann/KernelSU/releases KernelSU GitHub Release]获取正确的boot镜像
gki内核的内核版本大致的组成是这样的:
<code>内核大版本.patchlevel.sublevel-内核android版本-KmiGeneration-其他</code>
比如一个内核的内核版本为<code>5.10.335-android13-9-g12345678</code>
那么,该内核的'''内核大版本'''为5,'''patchlevel'''为10,'''sublevel'''为335,'''内核android版本'''为13,'''KmiGeneration'''为9,g12345678为其他部分
刷入的boot镜像中 '''内核大版本''','''patchlevel''','''内核android版本'''和'''KmiGeneration'''必须一致,'''理论上'''sublevel不一致也能开机
boot镜像的内核压缩方式也需要注意,不同机型有不同的压缩方式,一般是'''lz4'''和'''gzip''',小米设备主要是gzip
'''如何确定压缩方式?'''
参考[[Magiskboot|这里]]解包boot
并查看输出的<code>KERNEL_FMT</code>即为内核压缩方式
同样需要注意'''Android安全补丁级别''',最好刷入'''Android安全补丁级别'''一致的boot镜像,否则可能会不开机
在KernelSU github release中获取'''内核android版本''','''内核大版本''','''patchlevel''','''Android安全补丁级别''','''内核压缩方式'''一致的boot镜像
(最好sublevel也一致)
'''<big>下面开始刷入boot镜像</big>'''
'''注:建议先临时启动boot镜像,若无问题再进行刷入;指令:
  fastboot boot boot镜像路径
'''如果设备刷入了第三方Recovery,可以使用Recovery进行刷入镜像操作'''
手机进入fastboot,用数据线连接电脑和设备,在具有fastboot的目录下执行此命令:
  fastboot flash boot boot镜像路径
如果设备为AB分区,请附加槽位后缀,默认为当前活动槽位
不出意外,fastboot应该刷入成功. 重启设备,若成功进入系统,且KernelSU管理器显示"工作中",则刷入成功
如果KernelSU没有正常工作,使用如下指令刷入备份的boot镜像来恢复:
  fastboot flash boot 备份的原boot镜像路径
====== 方法二:LKM(较为简便) ======
KernelSU现在对于GKI内核提供LKM安装方法,实现了与Magisk相似的修补功能
LKM的优点在于不需要刷入GKI内核,仅让KernelSU作为一个内核模块加入到内核,较为便捷
方法:
# 打开KernelSU管理器,点击"未安装"红色卡片
# 无特殊需求则选择"选择并修补一个文件"
# 选择设备当前的boot镜像
# 等待修补完成,然后刷入修补后的boot重启即可(刷入参见上文)
注意,KernelSU拒绝修补已经被Magisk修补后的boot镜像
===== 方案二:使用柚坛工具箱实现KernelSU =====
[[文件:柚坛工具箱基本刷入页面.png|居中|缩略图|702x702像素]]
在柚坛工具的基本刷入的修补Boot部分中,可以在选择文件中选择[https://github.com/tiann/KernelSU/releases KernelSU github release]提供的AnyKernel文件或KO文件*,随后在 选择Boot 中选择提取出的Boot文件,随后点击开始修补。
修补完成后工具箱会提示是否刷入至当前设备,选择 是 即可刷入至当前连接的设备(请确保设备处于Fastboot模式),选择否将自动打开修补后的boot所在的文件夹。
<nowiki>*</nowiki>3.0版本的柚坛工具箱暂不支持选择KO文件,该功能将于3.1版本支持。
=== ---------- 3.使用APatch ---------- ===
可以从[[APatch|这里]]了解APatch
使用方法:
# 从[https://github.com/bmax121/APatch/releases Github]下载APatch管理器并打开
# 点击"安装",输入一个Root密钥(Root密钥是用APatch获取Root权限的必要数据,丢失会导致无法使用Root权限,请妥善保管)
# 选择当前的设备boot镜像,有需要可嵌入模块
# 修补,刷入(刷入见上文)
# 打开APatch,输入Root密钥,安装系统补丁
如果你的boot镜像修补失败,很大概率是因为内核未启用完整的kallsyms支持(CONFIG_KALLSYMS_ALL)

2024年8月18日 (日) 21:42的最新版本

首先了解一下Android系统中Root权限的概念

同Linux相似,Android系统中的Root权限是Android系统中的最高权限,可以完成绝大部分需要高权限的操作

因此,获取Root权限后,应妥善管理,不应给可疑软件Root权限,更不应随意使用Root权限修改系统文件,因Root权限管理/使用不当导致的问题,轻则系统出现bug,重则变砖!

操作前准备

  • 设备Bootloader已解锁
  • 一台电脑,数据线(最好是原装),电脑已安装驱动,已下载fastboot工具包
  • (可选但推荐)给设备刷入一个第三方Recovery

正式操作

目前有三种主流的Root方案:Magisk(面具) KernelSUAPatch

Magisk是建议的root方案,它比较简单,适用于入门用户

KernelSU较为高级,且兼容的内核版本没有Magisk广泛,但KernelSU在内核层面提供root,反检测能力更强,适用于高级用户

APatch是内核层面的root,但提供了Magisk的修补功能

强烈建议:在刷入Magisk,KernelSU或APatch前备份boot镜像,供无法开机时恢复

---------- 1.使用Magisk ----------

方案一:提取boot并刷入(较稳定)

1.获取设备的boot镜像

获取boot镜像的一般方式是从刷机包中提取

注:如果设备的内核版本为5.15.XX – 6.1.XX,且内核版本中含有"android13"或更高android版本的字符串,请提取init_boot.img而不是boot.img,此时下文的"boot镜像"指的是init_boot.img;否则提取boot.img即可

从官方网站/其他途径下载该设备的(认真核对,设备代号必须一致),系统版本一致的卡刷包/线刷包

如果获取的刷机包不是zip格式,请自行在网上寻找解包方法

以压缩文件方式打开刷机包,一般会有两种情况:

1.可以直接看到boot.img/init_boot.img,提取即可

2.没有boot.img/init_boot.img,但是有payload.bin,请参考Magisk中文网的教程提取出boot镜像

2.使用Magisk修补boot镜像

方法一:APP修补

1.将提取的boot镜像传到设备上,在设备上下载并安装Magisk,点击主页"Magisk"卡片右上角的"安装"

2.Magisk可能会提供一些选项,若无特殊需求则直接点击"下一步",若没有则忽略

3.点击"选择并修补一个文件",选择提取的boot镜像,点击"开始",等待

4.依照Magisk输出中给出的修补后的镜像路径,将修补后的镜像传给电脑

注:有些机型支持使用fastboot boot boot镜像路径 的方式来临时启动boot镜像,如果magisk正常工作,再使用刷入命令刷入

这样的好处在于,如果magisk没有正常工作,可以直接重启来恢复,建议优先使用该方法

5.手机进入fastboot,用数据线连接电脑和设备,在具有fastboot的目录下执行此命令:

 fastboot flash boot 修补后的boot镜像路径

如果设备为AB分区,请附加槽位后缀,默认为当前活动槽位

(如果设备刷入了第三方Recovery,可忽略第4步和第5步,直接在Recovery中刷入镜像)

不出意外,fastboot应该刷入成功,重启设备,设备应该正常开机,Magisk正常工作

如果打开Magisk后提示"需要修复运行环境"或其他问题,请按照指引操作,此时在刷入时可以直接选择"直接安装"

若不能正常工作,请刷回原来的boot镜像,使用该指令:

 fastboot flash boot boot镜像路径
方法二:使用柚坛工具箱修补

在柚坛工具箱的基本刷入页面的修补Boot中,选择提取出的Boot镜像,在选择文件一行中,可以更换需要使用的Magisk安装包,不更换则自动使用工具箱默认的版本。一般情况下,下面的5个选项保持默认即可。随后,点击开始修补。

修补完成后工具箱会提示是否刷入至当前设备,选择 是 即可刷入至当前连接的设备(请确保设备处于Fastboot模式),选择否将自动打开修补后的boot所在的文件夹。

方案二:使用第三方Recovery卡刷

这种方法更简便,尤其是设备刷入了第三方Recovery,而boot镜像的获取比较困难之时,可选择直接卡刷

这种方案仅需要:

  1. 获取Magisk安装包并安装,但是不要删除安装包
  2. 在第三方Recovery中直接安装该Magisk安装包.如果Recovery的刷入界面中找不到Magisk安装包,请在文件管理中把安装包的后缀改为.zip
  3. 重启.不出意外,Magisk正常工作

如果Magisk没有正常工作,请使用Recovery或电脑刷入备份的boot镜像

如果打开Magisk后提示"需要修复运行环境"或其他问题,请按照指引操作,此时在刷入时可以直接选择"直接安装"

---------- 2.使用KernelSU ----------

注:使用KernelSU获取Root权限相对于Magisk复杂一点,且部分Magisk模块可能不兼容KernelSU,请谨慎选择

操作前准备

  • 设备Bootloader已解锁
  • 设备使用的是gki内核(不知道什么是gki内核没关系,可使用KernelSU管理器查看,见下文)
  • 一台电脑,数据线(最好是原装),电脑已安装驱动,已下载fastboot工具包
  • (可选但推荐)给设备刷入一个第三方Recovery

正式操作

1.检查支持

KernelSU GitHub Release下载KernelSU管理器(文件名为xxx.apk,建议最新版本)后安装并打开

如果KernelSU显示的是"不支持",则表明KernelSU不支持该设备,这很大概率上是因为设备内核非gki内核

你可以尝试自己编译内核,但这不是本章节讨论的内容

如果KernelSU显示的是"未安装",则表明设备支持KernelSU,可以进行下一步操作

2.获取内核并刷入

强烈建议:在刷入KernelSU前备份设备boot镜像,以供无法启动时恢复

方案一:手动处理
方法一:GKI

首先查看你的内核版本,看完下文gki内核版本概述,并在KernelSU GitHub Release获取正确的boot镜像

gki内核的内核版本大致的组成是这样的:

内核大版本.patchlevel.sublevel-内核android版本-KmiGeneration-其他

比如一个内核的内核版本为5.10.335-android13-9-g12345678

那么,该内核的内核大版本为5,patchlevel为10,sublevel为335,内核android版本为13,KmiGeneration为9,g12345678为其他部分

刷入的boot镜像中 内核大版本patchlevel内核android版本KmiGeneration必须一致,理论上sublevel不一致也能开机

boot镜像的内核压缩方式也需要注意,不同机型有不同的压缩方式,一般是lz4gzip,小米设备主要是gzip

如何确定压缩方式?

参考这里解包boot

并查看输出的KERNEL_FMT即为内核压缩方式

同样需要注意Android安全补丁级别,最好刷入Android安全补丁级别一致的boot镜像,否则可能会不开机

在KernelSU github release中获取内核android版本内核大版本patchlevelAndroid安全补丁级别内核压缩方式一致的boot镜像

(最好sublevel也一致)

下面开始刷入boot镜像

注:建议先临时启动boot镜像,若无问题再进行刷入;指令:

 fastboot boot boot镜像路径

如果设备刷入了第三方Recovery,可以使用Recovery进行刷入镜像操作

手机进入fastboot,用数据线连接电脑和设备,在具有fastboot的目录下执行此命令:

 fastboot flash boot boot镜像路径

如果设备为AB分区,请附加槽位后缀,默认为当前活动槽位

不出意外,fastboot应该刷入成功. 重启设备,若成功进入系统,且KernelSU管理器显示"工作中",则刷入成功

如果KernelSU没有正常工作,使用如下指令刷入备份的boot镜像来恢复:

 fastboot flash boot 备份的原boot镜像路径
方法二:LKM(较为简便)

KernelSU现在对于GKI内核提供LKM安装方法,实现了与Magisk相似的修补功能

LKM的优点在于不需要刷入GKI内核,仅让KernelSU作为一个内核模块加入到内核,较为便捷

方法:

  1. 打开KernelSU管理器,点击"未安装"红色卡片
  2. 无特殊需求则选择"选择并修补一个文件"
  3. 选择设备当前的boot镜像
  4. 等待修补完成,然后刷入修补后的boot重启即可(刷入参见上文)

注意,KernelSU拒绝修补已经被Magisk修补后的boot镜像

方案二:使用柚坛工具箱实现KernelSU

在柚坛工具的基本刷入的修补Boot部分中,可以在选择文件中选择KernelSU github release提供的AnyKernel文件或KO文件*,随后在 选择Boot 中选择提取出的Boot文件,随后点击开始修补。

修补完成后工具箱会提示是否刷入至当前设备,选择 是 即可刷入至当前连接的设备(请确保设备处于Fastboot模式),选择否将自动打开修补后的boot所在的文件夹。

*3.0版本的柚坛工具箱暂不支持选择KO文件,该功能将于3.1版本支持。

---------- 3.使用APatch ----------

可以从这里了解APatch

使用方法:

  1. Github下载APatch管理器并打开
  2. 点击"安装",输入一个Root密钥(Root密钥是用APatch获取Root权限的必要数据,丢失会导致无法使用Root权限,请妥善保管)
  3. 选择当前的设备boot镜像,有需要可嵌入模块
  4. 修补,刷入(刷入见上文)
  5. 打开APatch,输入Root密钥,安装系统补丁

如果你的boot镜像修补失败,很大概率是因为内核未启用完整的kallsyms支持(CONFIG_KALLSYMS_ALL)