Android内核修改xxx_defconfig的方法

950 阅读1分钟

目的是为Android中的linux内核来配置CONFIG_DYNAMIC_FTRACE选项。

  • 实验配置Android版本:8.1
  • Linux版本:4.4
  • 芯片平台:Arm32

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 烧录就OK了