☰
不改动系统分区获取 Root:Magisk 安装、OTA 保留与故障排查
2026/10/14 5:24:31 网站建设 项目流程

不改动系统分区获取 Root:Magisk 安装、OTA 保留与故障排查

【免费下载链接】MagiskThe Magic Mask for Android项目地址: https://gitcode.com/GitHub_Trending/ma/Magisk

给解锁后的设备装系统级模块,常见做法是刷 ROM 或修改 /system。Magisk 的 Magisk Root 方案只修补 boot 分区,root 与模块都落在 /data 目录,系统其余部分保持原厂状态,OTA 更新也能按步骤保留 root。

它解决什么问题

Magisk 是一套面向 Android 6.0 及以上设备的开源定制工具集(支持 MagiskSU、模块、boot 镜像处理与 Zygisk),核心思路是"绕过系统分区而不是改写它"。与直接覆盖 /system 或刷自定义 ROM 的传统方案相比:

  • 破坏面小:只有 boot(或 recovery)分区被改写,只读分区保持原厂内容,出问题时可以刷回原镜像恢复,不需要整包重刷。
  • 模块可独立移除:模块存放在/data/adb/modules,禁用或卸载模块不影响系统本身,重装也不残留。
  • 权限来源独立:root 由 Magisk 自带的magiskd守护进程统一签发,而不是依赖第三方超级用户应用,权限可以按应用粒度控制。

上手路径:从 boot 镜像修补到刷入

前置条件

  • 设备 bootloader 已解锁(解锁会清空数据,先备份)
  • 电脑上可用adb与fastboot
  • 手头有设备官方固件,能从中提取boot.img(存在init_boot.img时提取它)
  • 安装最新版 Magisk 应用

判断该修补哪个镜像

打开 Magisk 应用首页,查看 Magisk 卡片中的Ramdisk字段,它决定修补目标:

首页 Ramdisk 显示需要修补的镜像刷入分区
Yesboot.img(有init_boot.img则用它)boot / init_boot
Norecovery.imgrecovery,且每次开机需走 recovery 键组合激活

boot 镜像修补与刷入步骤

  1. 把镜像文件复制到手机存储。
  2. 在 Magisk 应用点Install → Select and Patch a File,选中该镜像开始修补。修补必须在目标设备本机上进行,不要使用他人共享的修补产物。
  3. 修补完成后把新镜像拉回电脑并刷入:
adb pull /sdcard/Download/magisk_patched_*.img fastboot flash boot magisk_patched_*.img fastboot reboot
  1. 开机后按应用提示完成环境修复并再次重启,首页 Installed 显示版本号即安装成功。后续升级 Magisk 直接在应用内用 Direct Install 完成,无需重走修补流程。

核心能力与典型用法

按应用管理 root 权限

权限管理解决"哪些应用能用 su、用了多久"的问题。Magisk 把每个应用的 su 请求记录在日志中,可以逐条批准、拒绝或设置自动允许。例如:给终端类应用设为自动允许以便日常使用,对陌生应用的请求逐次确认,并在应用内查看完整的授权历史。

用模块扩展只读分区

模块机制让脚本与文件在不改 /system 的情况下生效,适合"加功能"而不是"改系统"。一个模块通常包含module.prop(描述信息)和两个可选脚本:post-fs-data.sh(/data 挂载后执行)与service.sh(开机服务阶段执行)。例如:用一个模块在开机时向系统注入自定义脚本或二进制文件;另一个模块定期清理日志。模块以 zip 形式在应用内安装,禁用后重启即完全移除。

处理 root 检测

检测问题要分两层理解:Magisk 本身已不再内置隐藏功能,是否被检测到取决于设备与应用两端的实现。常见做法是开启首页的Zygisk选项,再安装提供隐藏能力的 Zygisk 类模块,把银行、支付等应用加入其排除列表。如果某应用仍报检测到 root,先确认 Zygisk 状态为 Yes,再核对该应用是否在排除列表中。

维护与排错

OTA 更新后保留 Root

先做一项前置设置:在开发者选项中关闭"自动系统更新",避免系统在未确认时直接安装更新。

A/B 分区设备(流程可保留 root):

  1. Magisk 应用 → Uninstall →Restore Images,把 Magisk 改过的分区还原为原厂状态,用于通过更新前的完整性校验。此步之后先不要重启。
  2. 正常安装 OTA,等"正在安装更新"和"正在优化设备"两个阶段都完成,不要点"立即重启"。
  3. Magisk 应用 → Install →Install to Inactive Slot,把 root 装进更新后的槽位。
  4. 回到系统更新页面点重启,进入新槽位,root 即恢复。

非 A/B 设备:没有可靠的保留方案。按官方机制安装 OTA 后设备回到未 root 状态,需要连电脑重新走一遍镜像修补流程。

模块导致无法开机的排查

  • 现象:装完新模块后设备卡在开机动画,反复重启。
  • 排查:连电脑执行adb devices确认设备是否还能被识别;能识别说明系统内核尚可响应。
  • 处理:可执行adb shell magisk --remove-modules一次性移除全部模块并自动重启,之后再逐个装回定位问题模块。若 USB 调试已关闭,在开机动画出现前数秒按住音量减键进入 Magisk 安全模式,模块会被禁用,进系统后在应用里卸载嫌疑模块。

更新后应用显示 Installed = N/A

  • 现象:Magisk 版本号显示 N/A,但su实际仍可用。
  • 排查:多发生在曾使用"隐藏 Magisk 应用"功能后,系统里残留了一个伪装成 Settings 的 stub 应用,与完整应用冲突。
  • 处理:在系统设置 → 应用中查找名为 Settings(或隐藏时自定义的名称)的残留应用并卸载;仍异常则卸载并重装与二进制版本一致的完整 Magisk 应用。

应用报告检测到 root

  • 现象:特定应用(常见为支付、游戏)启动时提示 root 或环境异常。
  • 排查:确认首页 Zygisk 是否为 Yes;未开启 Zygisk 时,大多数隐藏类模块不生效。
  • 处理:开启 Zygisk 并重启,安装提供 DenyList 能力的模块,将该应用加入排除列表后重新测试。

进阶方向与资源

模块开发方面,从最小模块(一个module.prop加一个脚本)起步即可跑通;需要 hook 应用进程时使用 Zygisk 模块形式,参考 Zygisk 模块示例 对应的 upstream 样例仓库。系统级定制(SELinux 策略、属性修改)可直接调用resetprop与magiskpolicy工具,细节见 docs/tools.md。

仓库内相关文档与源码:

  • 安装全流程:docs/install.md
  • OTA 指南:docs/ota.md
  • 高频问题:docs/faq.md
  • 内部机制(启动流程、目录结构、SELinux):docs/details.md
  • boot 镜像工具 magiskboot 源码:native/boot/
  • root 守护进程实现:native/core/su/
  • Zygisk 实现:native/core/zygisk/

下一步建议:先在模拟器或备用机上完整走一遍修补与刷入流程,验证magisk -v输出正常后再操作主力设备。安装完成后立刻按 A/B 流程演练一次 Restore Images,熟悉更新前操作。遇到问题优先对照 docs/faq.md 中对应条目收集日志再处理。

【免费下载链接】MagiskThe Magic Mask for Android项目地址: https://gitcode.com/GitHub_Trending/ma/Magisk

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询