Android内核修改*_defconfig的方法

目的是为Android中的linux内核来配置CONFIG_DYNAMIC_FTRACE选项。
智能硬件Android版本:8.1
智能硬件Linux版本:4.4
智能硬件芯片平台:Arm32
实验PC环境:Ubuntu

1. 找到正确的内核配置文件

查看KERNEL_DEFCONFIG的定义,由于只支持arm32我们只更改arm文件夹下即可。
如果是arm64位芯片,需同时更该arm和arm64文件夹下的内容。

由此非eng编译环境下配置文件应为kernel-4.4/arch/arm/configs/*_defconfig
注:产品代号已经用 * 替代,该处请自行根据需要去替换编译产品名称

 ifeq ($(TARGET_BUILD_VARIANT), eng)
 KERNEL_DEFCONFIG ?= *_debug_defconfig
 else
 KERNEL_DEFCONFIG ?= *_defconfig
 endif

2. 在配置文件中新增配置项

kernel-4.4/arch/arm/configs/*_defconfig为上述所说的配置文件

CONFIG_DYNAMIC_FTRACE=y

3. 在kernel-4.4/kernel/trace/Kconfig中查看DYNAMIC_FTRACE配置项的定义

发现依赖如下两个depends的配置项

config DYNAMIC_FTRACE
        bool "enable/disable function tracing dynamically"
        depends on FUNCTION_TRACER
        depends on HAVE_DYNAMIC_FTRACE
        default y

由此在kernel-4.4/arch/arm/configs/*_defconfig文件中新增如下两个依赖的配置项

CONFIG_DYNAMIC_FTRACE=y
CONFIG_FUNCTION_TRACER=y
CONFIG_HAVE_DYNAMIC_FTRACE=y

4. 继续查看FUNCTION_TRACER 和HAVE_DYNAMIC_FTRACE的定义

由此发现FUNCTION_TRACER的一个配置项

config FUNCTION_TRACER
        bool "Kernel Function Tracer"
        depends on **HAVE_FUNCTION_TRACER**
        select KALLSYMS
        select GENERIC_TRACER
        select CONTEXT_SWITCH_TRACER

HAVE_DYNAMIC_FTRACE的配置项定义没有依赖项

config HAVE_DYNAMIC_FTRACE
        bool

最终把改配置项添加到kernel的配置文件kernel-4.4/arch/arm/configs/*_defconfig中

CONFIG_DYNAMIC_FTRACE=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_FUNCTION_TRACER=y
CONFIG_HAVE_FUNCTION_TRACER=y

5. 最终编译内核make bootimage, 烧录bootimage

6. 验证是否成功

提取出终端kernel配置文件

adb pull /proc/config.gz .
gunzip config.gz
ls config

查看config文件是否包含CONFIG_DYNAMIC_FTRACE=y,大功告成

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容