提取 Boot 镜像
在修补 Magisk 之前,我们需要获取设备的原版 boot.img 文件。本页面将介绍多种提取 boot.img 的方法。
什么是 Boot 镜像?
Boot 镜像(boot.img)包含了 Android 系统的内核和 ramdisk,是系统启动的关键文件。Magisk 通过修补这个文件来获得 root 权限。
提取方法概览
根据您的情况选择合适的方法:
| 方法 | 适用情况 | 难度 | 推荐度 |
|---|---|---|---|
| 从官方固件包提取 | 有完整固件包 | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| 从 OTA 包提取 | 有 OTA 更新包 | ⭐⭐ | ⭐⭐⭐⭐ |
| 从设备直接提取 | 已 root 或有 TWRP | ⭐⭐⭐ | ⭐⭐⭐ |
| 在线下载 | 网上有现成文件 | ⭐ | ⭐⭐ |
方法一:从官方固件包提取
这是最推荐的方法,提取的文件最为可靠。
下载固件包
小米设备:
其他品牌:
使用 payload-dumper-go 提取
1. 下载工具
- 下载地址:payload-dumper-go
- 解压到任意目录
2. 准备固件文件
# 解压固件包,找到 payload.bin 文件
# 通常位于固件包的根目录或 images 文件夹中3. 提取 boot.img
# Windows 用户
payload-dumper-go.exe -o output payload.bin
# Linux/macOS 用户
./payload-dumper-go -o output payload.bin
# 只提取 boot.img(推荐)
payload-dumper-go.exe -p boot payload.bin4. 查找提取的文件
提取完成后,在输出目录中找到 boot.img 文件。
使用 payload_dumper 提取(Python 版本)
如果上述工具无法使用,可以尝试 Python 版本:
1. 安装 Python 环境
# 安装 Python 3.6+
# 安装依赖
pip install protobuf2. 下载 payload_dumper
git clone https://github.com/vm03/payload_dumper.git
cd payload_dumper3. 提取文件
python payload_dumper.py payload.bin方法二:从 OTA 包提取
如果您有 OTA 更新包,也可以从中提取 boot.img。
1. 获取 OTA 包
- 从设备的
/cache或/data目录获取 - 从官方或第三方网站下载
2. 解压 OTA 包
# OTA 包通常是 ZIP 格式
unzip ota_package.zip
# 查找 boot.img 或 payload.bin
ls -la | grep -E "boot|payload"3. 提取 boot.img
如果 OTA 包中有 payload.bin,使用上述 payload-dumper 方法提取。
方法三:从设备直接提取
注意
此方法需要设备已经 root 或安装了 TWRP Recovery。
使用 ADB 提取
1. 查找 boot 分区
# 连接设备并启用 USB 调试
adb shell
# 查找 boot 分区路径
ls -la /dev/block/by-name/ | grep boot
# 或
cat /proc/partitions | grep boot2. 提取 boot 分区
# 假设 boot 分区路径为 /dev/block/bootdevice/by-name/boot
adb shell "su -c 'dd if=/dev/block/bootdevice/by-name/boot of=/sdcard/boot.img'"
# 将文件复制到电脑
adb pull /sdcard/boot.img使用 TWRP 提取
如果设备已安装 TWRP:
- 进入 TWRP Recovery
- 选择 Advanced → Terminal
- 执行命令:
dd if=/dev/block/bootdevice/by-name/boot of=/sdcard/boot.img - 通过 MTP 或 ADB 复制文件
方法四:在线下载
风险警告
从网上下载的 boot.img 可能不匹配您的设备,使用前请仔细核对版本信息!
可靠的下载源
- XDA Developers:设备专版论坛
- 4PDA:俄语 Android 论坛
- 酷安:国内 Android 社区
- MIUI 历史版本:小米官方历史固件
验证文件完整性
下载后务必验证文件:
# 检查文件大小(通常 16-64MB)
ls -lh boot.img
# 检查文件头(应该是 ANDROID!)
hexdump -C boot.img | head -1特殊情况处理
A/B 分区设备
现代设备通常使用 A/B 分区系统:
# 查看当前活动分区
adb shell getprop ro.boot.slot_suffix
# 提取对应分区的 boot.img
# 如果当前是 _a 分区
adb shell "su -c 'dd if=/dev/block/bootdevice/by-name/boot_a of=/sdcard/boot.img'"动态分区设备
部分新设备使用动态分区,boot.img 可能位于 super 分区中:
# 查看分区布局
adb shell cat /proc/mounts | grep super
# 可能需要特殊工具提取小米 HyperOS/MIUI 特殊处理
某些小米设备可能需要提取 init_boot.img 而不是 boot.img:
# 检查是否存在 init_boot 分区
adb shell ls -la /dev/block/by-name/ | grep init_boot
# 如果存在,提取 init_boot.img
adb shell "su -c 'dd if=/dev/block/bootdevice/by-name/init_boot of=/sdcard/init_boot.img'"验证提取的文件
检查文件完整性
# 检查文件大小(不应该为 0)
ls -lh boot.img
# 检查文件头
file boot.img
# 应该显示:Android bootimg
# 使用 hexdump 检查
hexdump -C boot.img | head -2
# 第一行应该包含 "ANDROID!"获取镜像信息
# 使用 magiskboot 分析(如果可用)
./magiskboot unpack boot.img
# 或使用 abootimg
abootimg -i boot.img备份原版文件
重要提醒
请务必备份原版 boot.img 文件,这是恢复系统的重要文件!
# 建议重命名备份文件
cp boot.img boot_original_backup.img
# 记录文件信息
echo "Device: $(adb shell getprop ro.product.model)" > boot_info.txt
echo "Build: $(adb shell getprop ro.build.display.id)" >> boot_info.txt
echo "Date: $(date)" >> boot_info.txt常见问题解决
提取失败
问题:payload-dumper 报错
解决方案:
- 检查固件包完整性
- 尝试不同版本的提取工具
- 确认 payload.bin 文件路径正确
文件损坏
问题:提取的 boot.img 无法使用
解决方案:
- 重新下载固件包
- 尝试其他提取方法
- 检查存储设备是否有问题
找不到 boot 分区
问题:设备上找不到 boot 分区
解决方案:
- 检查设备是否已 root
- 尝试查找 init_boot 分区
- 查看设备特定的分区布局
下一步
成功提取 boot.img 后,您可以继续进行 Boot 镜像修补。
小贴士
- 不同版本的固件对应不同的 boot.img,请确保版本匹配
- 保留多个版本的 boot.img 备份,以备不时之需
- 如果不确定提取是否成功,可以先在论坛咨询
