MagiskBoot 实操:如何用 3 步完成 boot 镜像的解包、修改与重打包
【免费下载链接】MagiskThe Magic Mask for Android项目地址: https://gitcode.com/GitHub_Trending/ma/Magisk
MagiskBoot 是 Magisk 项目自带的命令行工具,用来对 Android 设备的 boot 镜像(boot.img)做解包、修改和重打包。你想注入 ramdisk 获取 root、替换内核或改启动参数,都要靠它。本文以"完成一次 boot.img 定制"为任务,把整个流程走一遍。
先看 boot 镜像里有什么
boot 镜像是一种容器格式,主要由这几部分组成:
| 组件 | 作用 |
|---|---|
| kernel | Linux 内核,负责硬件抽象与系统调度 |
| ramdisk.cpio | 初始内存文件系统,含 init 进程与启动脚本 |
| dtb | 设备树,描述硬件结构,部分机型才有 |
解包后每个部分都会落成当前目录下的独立文件。绝大多数 root 相关的定制都发生在 ramdisk 上,kernel 和 dtb 通常原样保留。
📥 动手前:获取并备份原始 boot.img
来源有两条路:从官方固件包或自定义 ROM zip 里提取;如果你手上只有 OTA 包的payload.bin,MagiskBoot 可以直接抽分区:
./magiskboot extract payload.bin多数设备要取boot.img;如果设备有独立的init_boot分区(如 Pixel),应改用init_boot.img。Magisk 应用主页的 "Ramdisk" 状态可以帮你确认 boot 分区里到底有没有 ramdisk:
动手前定两条规矩:第一,保留一份未改动的原始镜像,单独命名、单独存放;第二,bootloader 必须已解锁。改坏后的镜像刷不进分区时设备无法启动,只能进 fastboot 重刷,没有别的路。
🔨 主线:完成一次 boot.img 定制
解包 boot.img 并查看内容
./magiskboot unpack -h boot.img-h会同时把镜像头信息写进header文件,重打包时可用来改头部配置。解包完成后,目录里出现 kernel、ramdisk.cpio、dtb 等文件。想确认 ramdisk 里有什么,用 cpio 子命令列目录:
./magiskboot cpio ramdisk.cpio lsramdisk 修改命令
不必手动解压 cpio,cpio子命令原地增删改,每条命令单独加引号:
./magiskboot cpio ramdisk.cpio "add 0755 magisk magisk" ./magiskboot cpio ramdisk.cpio "rm init.custom.rc" ./magiskboot cpio ramdisk.cpio "exists init"上面分别演示了添加文件、删除条目、判断路径是否存在。若要改内核命令行参数(cmdline),编辑解包时生成的header文件即可,无需碰二进制。
重打包镜像并校验签名
./magiskboot repack boot.img my_boot.imgrepack 以原始镜像为模板,保留原 header,各组件按原格式压缩回写,所以第一个参数必须传你当初解包用的那个镜像。设备启用 AVB 校验的,打包后要补签名再刷入:
./magiskboot verify my_boot.img ./magiskboot sign-avb1 my_boot.img⚠️ 容易翻车的三个点
解包报格式错误、或解出来没有 ramdisk。原因多半是拿错了镜像:这个设备的关键组件在vendor_boot或init_boot里。处理:确认分区名再取对应镜像;unpack 对 vendor_boot 格式会返回 3,别当成失败。
重打包后设备无法启动。原因通常是工作目录混入了别的解包残留——repack 会把当前目录里所有匹配文件打进去。处理:清理目录后从原始镜像重新解包、重新修改。
设备拒绝启动修改后的镜像。症状是 verified boot 直接拦下。原因:镜像需要 AVB 1.0 签名,而 repack 之后没签。处理:先verify确认签名状态,再用sign-avb1重签。
🔄 回退方案:恢复原始镜像
刷回保留的原始镜像即可,这是最可靠的回退方式:
fastboot flash boot boot_stock.img两个注意点。A/B 分区设备上 boot 分成 boot_a 与 boot_b,确认你刷的分区和当前使用的 slot 对应,别只改了一半。OTA 升级会用官方新镜像覆盖你的修改,升级后需要对新镜像重做一遍定制,相关流程可参考仓库的 docs/ota.md。另外 Magisk 应用的卸载对话框里也有 "Restore Images" 选项,只移除 Magisk 的修改、保留系统其余部分:
🔎 延伸
- 源码:工具主体在仓库的 native/src/boot/ 目录,格式解析、压缩、cpio 与 dtb 处理都能在那里找到。
- 参数大全:docs/tools.md 记录了每个子命令的完整用法与返回值,遇到不认识的参数先查这里。
- 社区:项目仓库的 issue 区和 XDA 论坛里有大量机型相关的定制记录,遇到厂商私有格式时值得检索。
【免费下载链接】MagiskThe Magic Mask for Android项目地址: https://gitcode.com/GitHub_Trending/ma/Magisk
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考