当Linux kernel编译安装时,.config
配置文件没有设置CONFIG_IKCONFIG=y,此时无法通过Linux给出的脚本./scripts/extract-ikconfig
去获取Linux内核配置文件。如果你尝试使用该脚本去获取Linux内核配置文件不出意外一定会报错:
extract-ikconfig: Cannot find kernel config.
我的目的就是想要在这种情况下,获取Linux内核配置文件。
在Stack Overflow中,有一条类似的post,询问了同样的问题
5年间,只有一条回复如下图。
根据这条回答,我们来看一下相应的位置有没有configs.ko
文件。
选取小米Pad3的内核,小米Mi 10S内核进行查看,在这两种内核版本的lib文件夹中不存在这条回答中的内容。看来这条回答只针对于完全开源的Linux系统。
对于怎么获取Android内核配置文件,现在没有什么头绪。
在CSDN也有一篇关于Android内核提取的博客大家可以先看看.
小米ROM文件
在上面提到的博客中说,可以通过解析boot.img来获取kernel文件。
我们先下载一个小米线刷版本的ROM压缩包
我下载的是小米5的线刷包,
解压后可以在其目录下找到boot.img
有个名叫abootimg
的软件可以分析.img
软件
我在YouTube看了一个视频关于extract config from Android kernel。
重命名boot.img.kernel.gz 为 Image,然后使用Linux内核脚本文件提供的extract_ikconfig处理Image就提取到了config文件。
我下载了小米ROM先刷版压缩文件,其中并不存在boot.img.kernel.gz
。
对比Linux-5.0.5 内核配置文件
首先我们要弄清楚一个事情,Linux内核提供的脚本extract-ikconfig
是从哪里抽取了信息,形成了配置文件。
答案是 Linux内核目录下的.config
。通过对比可以发现,抽取出来的配置文件与。config
文件一致。
在之前的博客中也有提到在 Android Kernel Configs
安卓系统必须具备的内核配置设置位于基础配置片段android-base.config中。以某种方式增强安卓功能的配置设置,但不是安卓运行的必要条件,则位于推荐配置片段android-recommended.config中.
我现在想知道,.config
是否全部包含了android-base.config
首先找到android-base.config
diff过后发现不同的地方太多,好像无法下手。