手机 Root 丢失恢复全攻略:提取 boot/init_boot 镜像并重刷 Magisk

摘要
Root 丢失恢复:分清 boot 与 init_boot,用 payload-dumper-go 提官方镜像、Magisk 同机修补、fastboot 刷回;A/B 机型另有不丢 Root 做法。
系统升级之后打开 Magisk App,首页的 Installed 变成了 N/A——这是 Root 丢了最常见的样子。原因也不复杂:Magisk 是靠修补 boot 分区(或 init_boot)拿到 root 的,而系统升级会把这两个分区覆盖回原厂内容,补丁自然一起没了。
恢复的路只有一条:拿当前系统版本对应的官方镜像,在同一台手机上重新打补丁,再刷回去。步骤不多,但每一步都踩在分区的要害上,版本、分区名、刷入目标任何一个错位,轻则无效重则开不了机。
一、先判断你属于哪种情况
打开 Magisk App,看首页那张 Magisk 卡片:

Ramdisk = Yes:你的机型在boot分区里带 ramdisk,走本文的标准流程。Ramdisk = No:这类机型的boot里没有 ramdisk,Magisk 只能去接管recovery分区。刷boot.img对它没有任何作用,必须改成修补recovery.img。代价是每次开机想启用 Magisk 都要按组合键进一次 recovery。Installed有版本号但功能异常:先别急着重刷,去(设置 → 应用)检查是不是残留了「隐藏 Magisk App」留下的存根应用,它会和完整版 App 冲突,导致 App 看不到 root。把隐藏的那份卸掉通常就好了,不需要动分区。
还有两个前提要先确认,不满足的话后面全是无用功:
Bootloader 已解锁。没有解锁的机型连
fastboot flash都会被拒绝。没有改过只读分区。这是官方 OTA 文档里用加粗强调的一条:只要你自己动过
/system、/vendor这类只读分区(哪怕只是挂载成可写),块校验就被破坏了,后续任何官方镜像的校验都过不去。
二、A/B 机型本可以不丢 Root
如果你的机型是 A/B 双槽位,这次不丢 Root 其实是可以避免的,动手重刷之前值得先确认一下自己还能不能走这条路——因为这才是官方推荐的做法。
前提是把「自动系统更新」关掉,否则系统会在你不知情的时候把升级装完:
打开「开发者选项」,关闭自动系统更新。
等系统提示有 OTA 可升级时,按这个顺序操作:
打开 Magisk App → 卸载 → 恢复原厂镜像(Restore Images)。

⚠️ 这一步做完千万不要重启,重启就等于把 Magisk 卸载掉了。这个动作会用安装 Magisk 时留下的备份,把被 Magisk 修改过的分区还原成原厂内容,目的是让升级前的分区校验能通过。
正常安装 OTA:设置 → 系统 → 系统更新。
等两个阶段都跑完——「正在安装更新」和「正在优化应用」——全程不要点「立即重启」。
回到 Magisk App → 安装 → 安装到未使用的槽位(Install to Inactive Slot),让 Magisk 把补丁装到升级后的那个槽位。
再回到系统更新的界面点「重启」,让设备切到新槽位。
这套流程走完,系统升级了、Root 也还在,全程不用电脑。
非 A/B 机型没有这个选项。 官方文档在这件事上的措辞很直接:非 A/B 机型没有真正好用的办法,升级会丢 Root,必须事后用电脑手动重刷——也就是本文剩下的部分。
三、工具与素材准备
1. payload-dumper-go:从固件包里提取单个分区
安卓的官方固件包(payload.bin)把所有分区打包成了一个流式格式,你没法简单解压出 boot.img。payload-dumper-go 就是干这个的:只挑你要的分区提出来,速度很快。
项目 | 内容 |
|---|---|
仓库 |
|
当前版本 | 2.1.0 |
许可 | Apache-2.0 |
唯一系统依赖 | xz |
Release 里提供的不是一个裸二进制,而是打包好的压缩包,命名规则是 payload-dumper-go_<版本>_<系统>_<架构>.tar.gz:
你的系统 | 下载哪个 |
|---|---|
Windows 64 位 |
|
Windows on ARM |
|
macOS(Intel) |
|
macOS(Apple 芯片) |
|
Linux 64 位 |
|
文件名里带 _avx2 的那几个是针对 AVX2 指令集编译的加速版,只有 CPU 支持 AVX2 时才能用。不确定就用不带 _avx2 的标准版,功能一样,只是慢一点。
下载页里还附了一份官方校验文件 payload-dumper-go_sha256checksums.txt,对不上就别用:
压缩包解出来就是单个可执行文件。Windows 10 及以后的系统自带 tar 命令,也可以直接解:
唯一需要额外装的依赖是 xz。这一点官方 README 写得很明确(它为了性能特意没有用纯 Go 的 xz 实现,纯 Go 版本实测慢 6 倍左右):
系统 | 装法 |
|---|---|
Windows | 从 |
macOS |
|
Linux |
|
2. 一份和你手机完全对得上的官方固件包
这是全文最容易出错的一步:固件包必须与设备型号和当前系统版本完全一致。
全量包(Full OTA)最稳;增量包(delta)需要额外用
-old指定旧版镜像才能还原,属于进阶用法。下载来源优先选厂商官方固件站或已知的官方镜像站;不要用来路不明的「集合包」。
顺便确认一下固件包里到底有没有
init_boot——这一步直接决定第四节你该提哪个分区。
3. 刷写工具:直接上官方 platform-tools
刷回镜像用的是 fastboot,它来自 Google 的 platform-tools,与 Android SDK 是同一套官方发布:
文档页:
https://developer.android.com/tools/releases/platform-toolsWindows 直链:
https://dl.google.com/android/repository/platform-tools-latest-windows.zip
整段流程其实只用到 fastboot devices 和 fastboot flash 两条命令,没必要为了它去装一个带界面的「一键刷机工具」——图形工具本身没法验证它把哪个镜像刷进了哪个分区,而这几步恰恰是分区写错就直接开不了机的操作。
4. Magisk App
从官方 Release 页取最新版:https://github.com/topjohnwu/Magisk/releases/latest。当前版本 v30.7,资产名是 Magisk-v30.7.apk。
⚠️ 一条必须记住的官方警告:永远不要刷别人给的修补镜像,也不要在别的设备上打补丁,哪怕型号完全一样。 补丁必须在你要 Root 的这台手机上生成。
四、判断该提取哪个分区
先把 payload.bin 放进一个路径全是英文的文件夹,然后先列分区,再决定提哪个。-l 是只列不提取:
输出里会看到形如 boot (67 MB), init_boot (8.4 MB), ... 的分区清单。对照下表决定目标:
固件里的情况 | 要提取的分区 | 刷入命令 |
|---|---|---|
固件里有 |
|
|
固件里没有 |
|
|
|
|
|
为什么第一行要单独拎出来? 因为 Android 13 之后不少新机型把 generic ramdisk 从 boot 里拆出来,单独放进了 init_boot 分区,boot 里只剩内核。这类机型上你就算把 boot.img 修补得完全正确,刷进去 Installed 依然是 N/A——补丁写在了没有 ramdisk 的分区上。
判断方法不是背系统版本号,而是看固件里到底有没有这个分区,-l 一眼就能看到。
五、提取镜像
只提需要的分区,速度快很多:
对照着改:
上表第一行 →
-p init_boot,vbmeta第二行 →
-p boot,vbmeta第三行 →
-p recovery,vbmeta
几个参数值得说明:
参数 | 作用 |
|---|---|
| 只提取指定分区,逗号分隔;不带就提取全部分区(动辄几个 GB) |
| 指定输出目录;不带的话默认建 |
| 只列出分区,不提取 |
| 并发线程数,默认等于 CPU 核数 |
| 增量包必需的旧版镜像目录 |
| 输出机器可读格式,适合写脚本 |
建议显式加 -o stock,原因有两个:一是默认目录名带时间戳,事后不好找;二是这份提取出来的原始镜像要留着当回滚保险——刷坏了用它能刷回原厂。
提取完成后,目录里会出现 <分区名>.img,比如 init_boot.img、vbmeta.img。
2.1.0 版本会对源镜像和输出镜像做 sha256 校验,对不上会直接报错并非 0 退出。看到红色报错不要忽略,那说明固件包下载不全或者被改过。
还有两个参数平时不要碰:
-no-verify:跳过 sha256 校验。校验正是你发现固件损坏的唯一手段。-no-fec:跳过 dm-verity 的 FEC 生成。官方明确说明跳过 FEC 的输出镜像与自己的 sha256 都对不上,绝对不许刷,只能用来看看内容。
六、在手机上打补丁
补丁必须在要 Root 的这台手机上打。
把刚提取出来的镜像传到手机(用数据线拷进「下载」目录即可),或者直接用 adb:
打开 Magisk App → Magisk 卡片上的 安装 → 方法选 选择并修补一个文件 → 选中刚传进去的镜像。
如果你修补的是
recovery.img,这里还要额外勾上 Recovery Mode,否则补丁打出来是错的。等它跑完,用官方给的那条命令把产物拉回电脑:
注意产物文件名是 magisk_patched_ 后面跟一串随机字符,不是你想象的固定 magisk_patched.img,adb pull 时记得换成实际名字。
七、进入 fastboot 并刷入
最省事的进入方式是用命令(前提是 USB 调试已开):
按键组合各机型不同,比如小米/Redmi 是关机后按住音量减 + 电源;其他机型请以官方文档为准。进不去时优先回到命令方式。
到了 fastboot 界面,先确认连上了:
能列出设备再往下走,然后按第四节那张表选命令:
三条命令只会用到一条,看的是第四节那张表,不是随便挑一条。把补丁刷进 recovery 之外的分区(比如 system、vendor)会让设备无法开机。
如果你的固件里有独立的 vbmeta 分区,可以顺手处理一下 AVB 校验(官方提示这条命令可能会清空数据,先想清楚):
最后重启:
首次开机因为 Magisk 要做初始化,可能比平时慢一些,耐心等,不要在这个阶段强制断电。
八、验证是否恢复
打开 Magisk App,首页
Installed一栏应当显示出版本号,而不是N/A。想直接看已安装的二进制版本,在终端模拟器里跑:
它会打印 Magisk 二进制自身的版本与版本号。App 里显示 Installed = N/A 但 magisk -c 有输出,说明二进制在跑、只是 App 读不到,这时按第一节的第 3 种情况去查隐藏 App 的残留。
九、排错手册
现象 | 原因 | 处理 |
|---|---|---|
| 系统没装 xz 或没进 PATH | 按第三节表格安装;Windows 装好后要重开终端 |
| 固件包与机型或版本不匹配 | 换成与当前系统版本完全一致的全量包 |
提 | 这个固件的 ramdisk 还在 | 按第四节改提 |
| 分区名写错,或 Bootloader 未解锁 | 用 |
| 分区名与镜像不匹配(比如把 init_boot 的补丁往 boot 里刷) | 回到第四节重新对表 |
刷完卡在开机 Logo / 无限重启 | 补丁与固件版本不符,或刷错了分区 | 长按进入 fastboot,用第五节留下的原厂镜像刷回对应分区 |
刷对了但 | 该机型实际要刷 | 按第四节重新判断 |
装完模块后开不了机 | 模块冲突 | 连电脑执行 |
| 路径含中文或空格 | 路径全用英文,含空格时加引号 |
| 手机没点「允许 USB 调试」 | 手机上重新确认授权 |
增量包提取报 | delta 操作不支持的格式 | 用 |
十、常见问题
只刷 boot/init_boot 会清数据吗?
不会。这两条 fastboot flash 只写内核相关分区,用户数据区不动。会清数据的是两件事:解锁 Bootloader(必清),以及上面那条可选的 vbmeta --disable-verity --disable-verification(官方提示可能清空数据)。
Root 之后还能正常收系统 OTA 吗?
A/B 机型可以,按第二节的流程走就能升级且不丢 Root。非 A/B 机型不行——官方文档的说法是这类机型没有好办法,每次升级完都得手动重刷一遍。
还能用 Magisk 隐藏 Root 绕过检测吗?
官方 FAQ 的答复是:Magisk 本身已经不再负责隐藏 root,这部分功能由各类 Zygisk 模块提供。所以「装了 Magisk 就能骗过银行 App」这个预期本身就不成立。
为什么不直接把 boot 和 vbmeta 都刷一遍?
因为没必要,而且有代价。Magisk 只改内核/ramdisk 分区,vbmeta 只在 AVB 校验确实拦住你的时候才需要动。多刷一个分区就多一次写错的机会,而 vbmeta 那条命令还可能清数据。
三星机型为什么流程不一样?
三星没有 fastboot,用的是 Download 模式 + Odin,而且解锁会永久熔断 Knox 保修位、首次安装 Magisk 还需要一次完整数据擦除。另外三星机型的官方文档里有一条硬规矩:绝对不要把 boot、init_boot、recovery、vbmeta 任何一个分区刷回原厂,那会直接变砖,只能靠 Odin 全量恢复 + 清数据救回来。三星请单独按官方文档走。
一加、小米这些品牌的解锁政策还有效吗?
各家政策调整都很频繁(等待时长、账号资格、是否关闭通道都变过),而且一旦关闭就不再开放。以厂商官方解锁页面当时公布的规则为准,不要照着几年前教程里的「绑定 7 天」直接照做。华为/荣耀自 2018 年起已停止提供解锁码,这部分机型基本没有可行路径。
十一、写在最后
整件事的难点不在命令,而在对齐:固件版本要和系统对齐,提取的分区要和机型对齐,补丁要和设备对齐。三条对齐里错一条,结果都是「刷成功了但没 Root」或者「刷完开不了机」。
所以动手前多做三件事:用 -l 看清分区清单;用 -o 把原厂镜像留一份;打补丁一定用同一台手机。这三步麻烦不到两分钟,但它们是出问题时你唯一的退路。
另外,如果你的机型是 A/B 双槽位,真正值得收藏的是第二节那套「升级前恢复原厂镜像 → 升级 → 安装到未激活槽位」的流程——它让你根本不需要用到这篇文章的后半段。
