编译Linux内核6.9.0-rc4时,如何禁用CONFIG_KRETPROBE_ON_RETHOOK?手动修改为何失效?
问题解答
为什么手动修改.config后配置自动恢复为y?
CONFIG_KRETPROBE_ON_RETHOOK的Kconfig定义里用了def_bool y,这意味着当依赖条件满足时,它的默认值是开启状态。内核的配置系统在执行make时会自动验证所有配置项的依赖关系和默认值:
- 只要
HAVE_RETHOOK和KRETPROBES这两个依赖项处于开启(y)状态,且没有其他配置项强制关闭它,配置系统就会将其恢复为默认的y。 - 手动直接修改
.config属于“硬改”,没有通过内核配置工具更新配置依赖的元数据,所以make时会被配置系统的自动校验逻辑覆盖。
如何禁用CONFIG_KRETPROBE_ON_RETHOOK?
有两种可行的方式,根据你的需求选择:
方式1:通过内核配置工具修改(推荐)
使用官方提供的配置工具修改,能正确处理依赖关系,避免被自动覆盖:
- 字符界面:执行
make menuconfig,找到对应配置项(通常在Kernel hacking > Instrumentation support路径下),将其设置为n后保存退出。 - 图形界面:执行
make xconfig或make gconfig,搜索KRETPROBE_ON_RETHOOK,取消勾选后保存。
方式2:脚本化修改
如果需要批量或自动化操作,用内核自带的配置脚本修改:
scripts/config --disable KRETPROBE_ON_RETHOOK
执行后再运行make,配置就不会被自动恢复。
特殊情况:如果需要保留KRETPROBES
如果你的场景必须开启KRETPROBES,只能通过上述配置工具或脚本命令强制将CONFIG_KRETPROBE_ON_RETHOOK设为n——因为依赖满足时只有主动通过配置工具标记为关闭,才能覆盖def_bool y的默认值。
内容的提问来源于stack exchange,提问作者hdthky
相关产品推荐
相关产品推荐

