内核压缩格式
一般地,在打包内核的时候,需要确定原机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.img2.使用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.