记录下Android手机通过fastboot用Magisk解锁root和安装LSPosed(xposed)
设备有两台,一台主力机和一台备用机都刷成功了。
一加 OnePlus 7 Pro 系统是欧洲版OxygenOS GM1910_11_H.30 Android12
红米 Redmi K50 Ultra / 小米 Xiaomi 12T Pro (DITING) 系统是MIUI.EU V13.0.7.0.SLFCNXM Android12
和以往的刷机的区别
Google 在 Android 7.0 引入新的OTA升级机制 A/B System Updates 。把Boot
和System
分区变为了两套,分别是Slot A
和Slot B
即A/B分区。同时没有了独立的 Recovery
分区而是把Recovery
和 boot
分区做在了一起。
后来这套机制在Android 12进行了升级有了 Virtual A/B System Updates,也就是VAB分区或是又叫虚拟AB分区。现在2022年出厂安卓11及以上的手机基本都是VAB分区机制了。
也可以在GooglePlay上下载 Treble Check
软件来检查自己的手机是否存在A/B系统分区。
关于分区感兴趣可以看看极客湾这期视频 https://www.bilibili.com/video/BV1BY4y1H7Mc/
安装 ADB 工具包
如果你的电脑上还没有 ADB / Fastboot 工具包(Google SDK Platform),那么需要前往 Google Developer 下载
fastboot刷机
因为Recovery
分区的合并,如果只是想要用TWRP来刷机而用不到TWRP的其他功能,那单从刷机来讲更方便的选择其实是用fastboot直接来操作。TWRP还有的备份功能我个人用的也不是很多。
-
用手机上的 Magisk Manager app 给当前版本的系统包里提取出来的 boot.img 手动打补丁(
Install -> Select and Patch a File
)adb shell #打开adb shell 并进入到根目录 ls #查看当前位置下所有目录 cd /sdcard/Download #找到想要存放的位置 exit #退出adb shell adb push D:\boot.img /sdcard/Download/ #把boot.img传给手机 传输过程没有进度条反馈需要等待 adb pull /sdcard/Download/magisk_patched-25200_gOYbu.img D:\ #传回打完补丁的boot镜像
-
使用命令进入 fastboot 模式
adb reboot bootloader
-
在 Bootloader 中输入命令
fastboot boot magisk_patched.img
- 注意!这里请最好不要使用命令直接刷入(
fastboot flash boot magisk_patched.img
)Magisk,避免造成 Magisk 无法备份原版boot.img
,在日后的更新中出问题。fastboot boot
指令提供了临时从某个镜像文件启动的方式,大大降低了 debug 的难度。
- 注意!这里请最好不要使用命令直接刷入(
-
刷完后会自动开机会进入Magisk临时拥有权限的系统。
此时 Magisk Manager 暂时有了 Root 权限,即可以在 Magisk Manager 中正式安装 Magisk(
Install -> Direct Install
)安装好Magisk后重启即可拥有root
传统Recovery刷机方式:
还是记录下用TWRP在Rec下刷机的方式吧。TWRP刷机的方式依旧可以用,只不过会有些麻烦。
-
在官网找到设备支持列表
下载对应适配的.img镜像文件,和.zip安装文件
TWRP官网: https://terp.me/
-
然后进入fastboot模式下输入
fastboot boot twrp.img
依旧不推荐直接使用flash刷入
fastboot flash recovery twrp.img
-
刷好后正常情况手机会临时进入一次 TWRP。(或是通过组合按键开机进入Recovery模式进入TWRP,另外在开机时使用
adb reboot recovery
也可)-
是否持久化(固化)TWRP是可选的。首先说使用固化 TWRP 的方法
- 在TWRP中刷入 twrp-installer.zip 使TWRP持久化。这个安装包会在 AB 两个分区中都安装一次 TWRP,这样无论手机从哪个分区启动都可以进入 TWRP。
- 直接刷入Magisk.zip
-
使用临时 TWRP 的方法
-
TWRP 中输入正确密码解密分区(如果设置了密码),并选择
Advanced -> ADB Sideload
,确认进入 Sideload 模式。 -
执行
adb sideload Magisk-vX.X.zip
-
关闭并重新启动手机,若 TWRP 提示安装其官方应用,无需安装。开机后安装 Magisk Manager 的 apk,确认 Magisk 已成功激活。
-
-
OTA时的操作
这里只写到了Magisk没有TWRP
系统更新时,默认会用全量包刷回未 Root 的状态。如果此时想保留 Magisk,建议先备份下数据,然后按以下流程操作:
-
等待系统更新进度条走到 100%,即更新完成,此时不要重启。
-
打开 Magisk (怕翻车那就停用所有使用中的模块。
-
打开 Magisk,将 Magisk 安装到第二分区 (
Install -> Install to Inactive Slot(After OTA)
)。 -
自动重启进入新系统。然后去确认下系统版本号是否更新、Magisk 是否正常激活。
-
如果之前怕翻车手动停用了模块,那就打开 Magisk,在 Downloads 页面下载、覆盖安装所有 Magisk 模块后再重新启用模块,再次重启,检查自己用的模块是否正常工作。
-
步骤2、步骤5可忽略,但有无法进入系统的风险。
如果忽略这两个步骤后无法进入新系统,可以回到原系统重新执行以上步骤。 手动切回原系统方式:进入 Bootloader,使用
fastboot getvar current-slot
获取当前分区,并使用fastboot --set-active=a
或fastboot --set-active=b
切换回原来的分区。
-
fastboot升级系统时的操作
MIUI.EU 对于有些手机只提供了fastboot线刷包。升级也只能用电脑链接进入fastboot模式下的手机来线刷。
这个情况其实我也不是很清楚正规一些的操作要怎么做,要怎么才既能升级又能保留root,如果有人知道的话可以邮箱告诉我一下麻烦惹。
不过我也测试出来了一种方法。
- 在升级前先把最新版系统线刷包里的boot.img传到手机里
- 在手机上用magisk修补最新版系统的boot.img,并将修补后的镜像传给手机
- 备份并替换掉线刷包内的boot.img
- 手机进入fastboot然后在电脑上执行
windows_fastboot_update_rom.bat
- 升级完成重启后进入magisk,在安装中选择直接安装。再次重启完成后即可完成升级。
Magisk模块
-
救砖模块
https://www.coolapk.com/feed/33911784?shareKey=ZGY1YTc2Mjk4NTM1NjI0ZTc0YzQ~
在开机失败后救砖模块会依次尝试禁用单个模块->全部模块。防止magisk自带的开机失败禁用模块抽风。此外magisk在手机系统进入安全模式后会禁用所有模块。
-
LSPosed
-
Shamiko
https://github.com/LSPosed/LSPosed.github.io/releases
隐藏Root避免一些应用的root检测,由LSPosed Group开发。
- 在magisk设置中开启
Zygisk
、安装模块、重启后关闭magisk设置里的遵守排除列表
、进入配置排除列表
勾选想要隐藏root的应用 - 隐藏还需要LSPosed寄生,即将LSPosed自身寄生到系统应用下。新版本已经会自动寄生。拨号盘输入
*#*#57776733#*#*
也可以进入LSPosed。 - 随机包名隐藏Magisk。在
设置-隐藏Magisk应用
,输入名称,添加完成后会被包名替代。 - Momo环境检测。用来检测是否root和安装magisk。https://t.me/s/magiskalpha/517
- 在magisk设置中开启
-
JamesDSP Manager
https://github.com/Zackptg5/JamesDSPManager
音效自定义修改类模块。替代曾经的蝰蛇音效,也继承了其核心功能Viper-DDC。
-
UPerf
https://github.com/yc9559/uperf
yc9559大佬的调度。
-
MIU.EU 本地化模块
LSPosed模块
哔哩漫游
Duolingo时区修复
锤锤
钉钉反撤回神器
格言锁屏 X
杜比大喇叭β
非残!
微X模块
QNotified
Pixelify GPhotos
知了
强制截图
MiuiMediaEditor
WooBox For MIUI
MaxFreeForm
MiuiHome
需要Root的应用
App Ops
冰箱 / 小黑屋
Scene
黑阈
MT文件管理器
参考链接
一加 OnePlus 7 刷入氧 OS、TWRP、Magisk (Root)