Magiskboot

来自Uotan Wiki · 刷机百科

什么是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,里面记录了cmdlineandroid版本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分割开为kernelkernel_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 <文件路径> [输出文件路径]

进行解压缩操作

文件路径与输出文件路径均可为-以接收标准输入/标准输出

若不指定输出文件路径,则为当前目录下文件路径去掉该压缩格式的扩展名

注:如果要解压缩的文件无扩展名,则可能报错

支持格式同压缩