Magisk Root怎么装、怎么用、怎么更新?一份覆盖刷写与模块维护的实操笔记
【免费下载链接】MagiskThe Magic Mask for Android项目地址: https://gitcode.com/GitHub_Trending/ma/Magisk
Magisk 解决的核心问题是让 Android 设备获得 root 权限并管理只读分区,同时不直接改写 system 分区——它把守护进程注入 boot 镜像来实现这一点。这个设计带来两个实际好处:随时可以还原回官方镜像,系统 OTA 更新也有机会保留 root。对只想装几个模块、又怕把系统刷坏的用户来说,这条路明显更稳。
Magisk 由哪几部分组成
- MagiskSU:向应用分配 root 权限,也就是
su的来源 - MagiskBoot:解包、修补、重打包 boot 镜像的底层工具,App 里的"修补文件"功能就是它
- Zygisk:让模块代码在每个应用进程启动前运行,检测绕过类模块多依赖它
- 模块系统:把模块文件虚拟合并进只读分区,不需要真的写 system
- 配套工具:自带 busybox(
/data/adb/magisk/busybox)、resetprop(改只读系统属性)、magiskpolicy(改 SELinux 规则)
仓库里的 docs/install.md、docs/ota.md、docs/tools.md 是本文命令和路径的依据。
安装前准备:先确认该动哪个镜像
动手前需要满足三件事:
- bootloader 已解锁
- 电脑上有 adb 和 fastboot
- 已从官方固件包或自定义 ROM 里取出对应镜像
具体取哪个文件,看两个信号:
- 安装 Magisk App 后,首页会直接显示Ramdisk是 Yes 还是 No,这决定 boot 分区有没有 ramdisk
- 较新的设备(Android 13 前后)会把 ramdisk 挪到独立的
init_boot分区
| 检测结果 | 应修补的文件 |
|---|---|
存在init_boot.img分区 | init_boot.img |
| Ramdisk 为 Yes | boot.img |
| Ramdisk 为 No | recovery.img |
一个已知的坑:个别小米机型虽然 boot 里没有 ramdisk,但 bootloader 会照单全收手动塞进去的 ramdisk。这种情况按"有 ramdisk"流程操作即可,提前无法检测,刷了才知道。
安装步骤:修补、刷写与 Samsung 差异
通用流程(有 boot ramdisk 的设备):
- 把
boot.img(或init_boot.img)拷入手机 - 点 Magisk 卡片的Install,方式选Select and Patch a File,选中该镜像开始修补
- 拉回电脑:
adb pull /sdcard/Download/magisk_patched_[随机字符串].img- 重启进 fastboot,刷入对应分区:
fastboot flash boot magisk_patched.img # 常规设备 fastboot flash init_boot magisk_patched.img # 有 init_boot 分区 # 无 ramdisk 设备:修补 recovery.img 时记得勾选 Recovery Mode fastboot flash recovery magisk_patched.img- 重启,App 提示环境修复时点击并等待自动重启,结束
三星设备流程不同:取固件里的APtar 文件(而非 boot.img)在 App 内修补,拉回后用 Odin 把修补后的 tar 作为AP刷入,同时搭配原包的BL、CP、CSC(注意是 CSC 不是 HOME_CSC,因为首次安装要清数据)。两个前提要认清:Knox 保修位会点亮且不可逆;首次安装必须完整清数据。
无 boot ramdisk 的设备装好后,开机逻辑变成三套:
- 关机后正常开机 → 系统无 Magisk
- 按 recovery 组合键,出现开机画面时松手 → 进入带 Magisk 的系统
- 按 recovery 组合键,出现开机画面后长按音量加→ 真正的 recovery
另外提醒一句:如果你刷过 Magisk,后续千万不要单独把vbmeta、boot等分区刷回官方版本,三星设备单独恢复 stock 分区可能直接变砖。
刷入后如何验证 Magisk 生效
两个检查点:
- App 首页 Magisk 卡片的 Installed 显示版本号(不再是 N/A),Zygisk 显示 Yes/No 取决于是否开启
- 终端里执行下面命令,能打印出版本说明二进制在位:
magisk -c # 打印当前 magisk 版本如果 Installed 一直显示 N/A 但su还能用,多半是 App 侧的隐藏残留冲突,见后文常见问题部分。
日常使用:授权管理与模块
root 授权在 App 的 Superuser 页统一管理,每条授权可以设允许、拒绝、静默拒绝或每次询问。
模块则装在/data/adb/modules/下:
- 安装:在 App 的 Modules 页直接刷模块 zip,或用终端
magisk --install-module 模块.zip - 启用/禁用:App 里切换,本质是在模块目录创建或删除
disable标记文件 - 模块的
system/目录会被虚拟合并进真实 system;post-fs-data.sh、service.sh分别在不同开机阶段执行
对普通用户来说"装 zip、开关、重启"三步就够了。想自己写模块的人可以看 docs/guides.md:一个模块就是一个带module.prop的文件夹,zygisk/目录放 Zygisk 原生库,sepolicy.rule声明额外的 SELinux 规则。
系统 OTA 更新时如何保住 root
前提两条:开发者选项里关闭自动系统更新,以及你自己没有动过/system、/vendor等只读分区(哪怕只是 remount 成读写,都会破坏块校验导致 OTA 失败)。
A/B 设备(绝大多数近几年的机型)可以保住 root,顺序很重要:
- 发现更新后,先进 App 的 Uninstall →Restore Images,把 Magisk 改过的分区从安装时的备份还原成官方状态。注意这一步做完不要重启,重启等于直接卸载了 Magisk
- 正常安装 OTA,等"安装更新"和"优化设备"两步都完成,别点立即重启
- 进 App 选Install to Inactive Slot (OTA),把 Magisk 打进更新后的非活动槽
- 回到系统更新页点重启,切换槽位
非 A/B 设备没有好办法:官方 OTA 走完之后是干净的无 root 系统,需要重新走一遍修补流程。所以这类设备的用户可以优先考虑不碰 recovery 分区的安装方式(比如fastboot boot临时启动 recovery),为以后升级留余地。
模块失效与常见异常排查
装完模块卡开机动画:开了 USB 调试的话,连上电脑直接执行,会移除全部模块并重启:
adb shell magisk --remove-modules没开 USB 调试就用安全模式:注意 Magisk 对按键的检测比系统早,正确时机是开机动画出现前按住音量减,动画出现时松手——这样只会触发 Magisk 安全模式(禁用所有模块),不会连带触发系统安全模式。
某应用检测到 root:Magisk 本体不再负责隐藏,需要装专门的检测绕过模块(多为 Zygisk 模块)。
Installed 显示 N/A 但 root 正常:用过"隐藏 App"选项后,残留的 stub 应用(在系统应用列表里通常显示为"设置")会和完整版冲突。到 设置 → 应用 里把这些隐藏应用全部卸载,必要时重装 Magisk App。
彻底卸载:App 的 Uninstall 页有两个选项——Restore Images还原官方镜像、保留 root;Complete Uninstall完整移除 root。也可以把 Magisk APK 改名成uninstall.zip用 recovery 刷入。
写在最后
几条容易踩的边界,值得贴在备忘录里:
- 镜像必须在自己的设备上修补,同型号别人发的 patched 镜像也刷不得
- OTA 前 Restore Images 后别重启,重启即卸载
- 三星设备永远不要单独恢复 stock 的 boot/recovery/vbmeta 分区
- 模块导致问题时优先
magisk --remove-modules,比进安全模式省事
想继续深入,仓库里的 docs/ 目录涵盖了安装、OTA、工具用法和内部实现(如magiskinit的 pre-init 流程、SELinux 补丁规则),native/ 目录则是 MagiskBoot 和 su 等核心组件的源码。
【免费下载链接】MagiskThe Magic Mask for Android项目地址: https://gitcode.com/GitHub_Trending/ma/Magisk
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考