什么是Magiskboot
magiskboot是magisk提供的一个解包boot/recovery的工具,magisk通过magiskboot来解包boot
相对于其他解包工具(如AIK)而言,magiskboot的拆分较为简单
你可以从来自KernelSU中文网的链接下载magiskboot
用法
输入magiskboot可直接查看用法
注意,下文用法中,带<尖括号>的为必需参数,带[中括号]的为可选参数,传入参数时不要带上括号
解包
magiskboot unpack [-n] [-h] 镜像路径
解包镜像
这将会把镜像解包成以下几个部分(如果有的话):kernel
, kernel_dtb
, ramdisk.cpio
, second
, dtb
, extra
, recovery_dtbo
若指定-n
参数,则每个部分都不会解压缩,保留原数据(如kernel会变成原有的压缩格式而不解压)
若指定-h
参数,则镜像头会被单独dump出来成为一个文件header,里面记录了cmdline
,android版本
和android补丁
级别等数据
可以查看程序输出以获得镜像的相关信息,如内核压缩方式等
注意,即使指定了-h参数,打包时仍然需要传入原boot镜像路径
程序返回值: 0:成功 1:错误 2:镜像来源为chromeos
打包
magiskboot repack [-n] <原镜像路径> [输出镜像路径]
将解包出的数据重新打包成镜像
magiskboot将会从传入的boot路径读取相关信息(如cmdline)并打包
若不指定输出boot路径,则输出到当前目录下的new-boot.img
若指定-n
参数,则数据将不经过压缩操作就直接打包
若unpack时未指定-n参数,则repack时也不应指定,反之亦然
若在环境变量中设置PATCHVBMETAFLAG
为true,则打包时会自动修补镜像中的vbmeta,添加禁用验证标识
验证
magiskboot verify <镜像路径> [x509.pem式的证书路径]
验证镜像是否被AVB1.0签名
若传入证书路径,则会用证书验证镜像签名
签名
magiskboot sign <镜像路径> [name] [x509.pem/pk8私钥文件]
签名boot镜像
若不传入私钥文件,则使用magiskboot内部的AOSP私钥签名
TODO: name
作用未知,默认为/boot
此操作将会直接覆写镜像
解包payload.bin
magiskboot extract <payload.bin路径> [分区名] [输出路径]
解包payload.bin中的指定分区
如果不指定分区,则解包init_boot.img(存在则解包这个)或boot.img
默认输出路径为当前目录下分区名.img
可以通过将payload.bin路径传入-
以接收标准输入,如在linux下可以
cat payload.bin | magiskboot extract -
十六进制修补
magiskboot hexpatch <文件路径> <hexpattern1> <hexpattern2>
这将在文件中寻找hexpattern1
,并替换为hexpattern2
示例: magiskboot hexpatch boot.img FE8067E4 A2586F7A
这将直接覆写文件
DTB相关
magiskboot dtb <文件> <动作> [参数]
magiskboot dtb相关功能
动作:
print
以树的形式输出dtb内容,添加-f参数以仅输出fstab
节点patch
修补dtb,移除verity/avb验证,可通过环境变量KEEPVERITY
控制test
检测dtb中fstab的合法性,若程序返回值为0则合法,1则不合法
分割附加dtb的kernel
magiskboot split [-n] <文件路径>
将Image.*-dtb分割开为kernel和kernel_dtb
若指定-n
参数,则Image不会解压缩
输出文件sha1
magiskboot sha1 <文件路径>
输出文件的sha1值
清理工作目录
magiskboot cleanup
清除magiskboot解包等操作的产物
压缩
magiskboot compress[=格式] <文件路径> [输出文件路径]
进行压缩操作
文件路径与输出文件路径均可为-
以接收标准输入/标准输出
如果不指定格式,默认为gzip
如果不指定输出文件路径,则为当前目录下文件路径加上该压缩格式的扩展名
支持格式: gzip zopfli xz lzma bzip2 lz4 lz4_legacy lz4_lg
解压缩
magiskboot decompress <文件路径> [输出文件路径]
进行解压缩操作
文件路径与输出文件路径均可为-
以接收标准输入/标准输出
若不指定输出文件路径,则为当前目录下文件路径去掉该压缩格式的扩展名
注:如果要解压缩的文件无扩展名,则可能报错
支持格式同压缩