本文用于提取Android内核配置文件,在 CONFIG_IKCONFG is not set 的情况下。
受Github的一个代码库的启发android 提取内核指南,现在应该是提取出了kernel config。
这里选取小米的ROM压缩包。
解压此压缩包到./temp
这是我下载的版本小米2


我们可以看到boot.img文件。接下来要使用工具拆分该.img文件。
使用imgtool工具分离boot.img文件,一般有kernel、kernelimage、 ramdisk等相关文件。分离工具从此处获得。
按照Readme编译安装好之后使用如下语句拆分boot.img
imjtool.ELF64 /PATH/boot.img extract
完成操作之后他将会在 imjtool.ELF64同级目录下生成一个extracted文件夹,其中就包含了我们需要的信息。

使用如下语句判别,有效的kernel是哪个文件。有效的文件会有一个输出
strings kernel | grep "Linux version "
strings kernelimage | grep "Linux version "

现在可以确定有效的kernel文件是kernelimage。
python ./vmlinux.py /path/kernelimage -j > res.json
查看json文件:文件的结构如下图所示

type分为 T,t,r,d应该是对于了下面“name”的状态



我们现在来测试一下该方法能不能获取新版款小米系统的配置文件
这次选择了小米 11 青春活力版线刷版本
下载解压可以找到boot.img。
使用imgtool提取内核:

对于这种形式的内核,就不需要使用上面vmlinux.py去提取配置文件了。
看到.gz文件,根据以为的学习我们需要rename该文件为Image然后使用linux内核脚本即可抽取config文件



成功获取到了内核配置文件。