# 内核压缩格式 一般地,在打包内核的时候,需要确定原机boot.img中的kernel压缩格式来打包内核。 常见的内核格式为Image,Image.gz,Image.gz-dtb等。 dtb是device tree binary的简称。 binary,顾名思义,就是可以被bootloader直接读取执行的内容。它们在开机启动在早期阶段由bootloader解码,传递给内核,从而帮助内核完成启动过程。 dt是kernel device tree的简称。 dt就是一堆设备特有的配置文件,它们的出现是为了使内核代码树变得干净一些。 编译后的dtb文件将会被与内核的编译产物Image.xx连接,最终生成Image.xx-dtb,常见的有Image-dtb Image.gz-dtb Image.lz4-dtb等。 一般情况下,可以通过以下两种方法确定内核的压缩格式。 ### 查看本机配置确定 注:此方法需要root权限。 - 1.使用root权限复制/proc/config.gz到本机目录 - 2.解压config.gz - 3.使用文本管理器打开config文件 - 4.查找以下字段。 例如以下选项会链接dtb到image: ``` CONFIG_BUILD_ARM64_APPENDED_DTB_IMAGE=y ``` 在这个选项被关闭后,编译也会生成dtb文件,但不会主动连接至内核镜像。 以下选项会确定压缩格式为.gz-dtb: ``` CONFIG_IMG_GZ_DTB=y #需要配合上述选项使用。 ``` 其他压缩格式,如lz4等,以此类推。 ### 使用magiskboot - 1.提取本机boot.img或提取本机`完整升级包`中的boot.img - 2.使用mgaiskboot unpack指令 会得到类似以下的信息: ``` ~/root $ magiskboot unpack boot.img Parsing boot image: [boot.img] HEADER_VER [2] KERNEL_SZ [18077279] RAMDISK_SZ [2360622] SECOND_SZ [0] RECOV_DTBO_SZ [0] DTB_SZ [174303] OS_VERSION [12.0.0] OS_PATCH_LEVEL [2023-06] PAGESIZE [2048] NAME [] CMDLINE [bootopt=64S3,32N2,64N2 buildvariant=user] CHECKSUM [94b890e37c126c1641b7baf359f15a8ec62f0882000000000000000000000000] KERNEL_FMT [gzip] RAMDISK_FMT [gzip] VBMETA ``` 找到KERNEL_FMT字段。这里显示的是gzip。则说明内核的压缩格式为.gz或.gz-dtb.