完全可以而且这也是 Linux 内核开发者最常用的方法。实际上很少有人在menuconfig里面一个一个找选项。常用的方法有下面四种我推荐第 2 或第 3 种。方法一直接修改.config最简单例如CONFIG_DEBUG_INFOyCONFIG_DEBUG_INFO_DWARF5yCONFIG_GDB_SCRIPTSyCONFIG_FTRACEyCONFIG_FUNCTION_TRACERyCONFIG_FUNCTION_GRAPH_TRACERyCONFIG_KPROBESyCONFIG_MODULESyCONFIG_BLK_DEV_INITRDy修改完成后执行makeolddefconfig内核会自动补齐依赖。缺点容易写错容易漏依赖不适合大量配置方法二官方scripts/config★★★★★ 推荐Linux 内核源码自带了一个配置工具scripts/config例如scripts/config--enableCONFIG_DEBUG_INFO scripts/config--enableCONFIG_DEBUG_INFO_DWARF5 scripts/config--enableCONFIG_GDB_SCRIPTS scripts/config--enableCONFIG_FTRACE scripts/config--enableCONFIG_FUNCTION_TRACER scripts/config--enableCONFIG_FUNCTION_GRAPH_TRACER scripts/config--enableCONFIG_KPROBES scripts/config--enableCONFIG_MODULES scripts/config--enableCONFIG_MODULE_UNLOAD scripts/config--enableCONFIG_BLK_DEV_INITRD如果需要关闭scripts/config--disableCONFIG_RANDOMIZE_BASE如果需要指定字符串scripts/config --set-str CONFIG_LOCALVERSION-lk-lab执行完成makeolddefconfig这是 Kernel CI 和很多自动化脚本都会使用的方法。方法三维护一个配置片段★★★★★ 我最推荐例如建立configs/debug.config内容CONFIG_DEBUG_KERNELy CONFIG_DEBUG_INFOy CONFIG_DEBUG_INFO_DWARF5y CONFIG_GDB_SCRIPTSy CONFIG_KALLSYMSy CONFIG_KALLSYMS_ALLy CONFIG_FRAME_POINTERy CONFIG_FTRACEy CONFIG_FUNCTION_TRACERy CONFIG_FUNCTION_GRAPH_TRACERy CONFIG_KPROBESy CONFIG_MODULESy CONFIG_MODULE_UNLOADy CONFIG_BLK_DEV_INITRDy CONFIG_DEBUG_FSy CONFIG_MAGIC_SYSRQy然后利用内核提供的脚本合并scripts/kconfig/merge_config.sh\arch/x86/configs/x86_64_defconfig\configs/debug.config最后makeolddefconfig优点配置可以放 Git 管理换任何 Linux 版本都能复用非常适合长期学习很多内核团队都是这样维护不同用途的配置debug、CI、release。方法四生成最小配置适合长期维护如果已经有一个配置makesavedefconfig会生成defconfig里面只保留和默认配置不同的部分通常几百行会压缩到几十行。以后恢复cpdefconfig arch/x86/configs/lklab_defconfigmakelklab_defconfig我的建议适合你的 Kernel Lab结合你的目标长期学习 Linux Kernel QEMU GDB Ftrace Module我建议建立下面的目录lk-lab/ ├── kernel/ ├── configs/ │ ├── debug.config -- 调试增强配置 │ ├── release.config │ └── lklab_defconfig ├── scripts/ │ ├── config.sh -- 一键开启配置 │ ├── build.sh │ └── run.sh其中scripts/config.sh#!/bin/bashset-ecdkernel scripts/config--enableCONFIG_DEBUG_KERNEL scripts/config--enableCONFIG_DEBUG_INFO scripts/config--enableCONFIG_DEBUG_INFO_DWARF5 scripts/config--enableCONFIG_GDB_SCRIPTS scripts/config--enableCONFIG_KALLSYMS scripts/config--enableCONFIG_KALLSYMS_ALL scripts/config--enableCONFIG_FRAME_POINTER scripts/config--enableCONFIG_FTRACE scripts/config--enableCONFIG_FUNCTION_TRACER scripts/config--enableCONFIG_FUNCTION_GRAPH_TRACER scripts/config--enableCONFIG_KPROBES scripts/config--enableCONFIG_MODULES scripts/config--enableCONFIG_MODULE_UNLOAD scripts/config--enableCONFIG_DEBUG_FS scripts/config--enableCONFIG_BLK_DEV_INITRDmakeolddefconfig以后只需要执行./scripts/config.sh整个调试环境就配置好了不需要再打开menuconfig。我建议我们下一步直接做既然你准备长期学习 Linux 内核我建议不要每次自己配置。我们可以制作一个Linux 6.6 Kernel Lab 配置包包含debug.config约 100200 个学习内核最常用的配置config.sh一键开启build.shrun.shgdbinitQEMU启动脚本这样以后无论重建环境还是升级到新的 6.6.x LTS都可以一键恢复整个内核实验环境。
通过配置文件配置kernel
发布时间:2026/6/27 2:40:28
完全可以而且这也是 Linux 内核开发者最常用的方法。实际上很少有人在menuconfig里面一个一个找选项。常用的方法有下面四种我推荐第 2 或第 3 种。方法一直接修改.config最简单例如CONFIG_DEBUG_INFOyCONFIG_DEBUG_INFO_DWARF5yCONFIG_GDB_SCRIPTSyCONFIG_FTRACEyCONFIG_FUNCTION_TRACERyCONFIG_FUNCTION_GRAPH_TRACERyCONFIG_KPROBESyCONFIG_MODULESyCONFIG_BLK_DEV_INITRDy修改完成后执行makeolddefconfig内核会自动补齐依赖。缺点容易写错容易漏依赖不适合大量配置方法二官方scripts/config★★★★★ 推荐Linux 内核源码自带了一个配置工具scripts/config例如scripts/config--enableCONFIG_DEBUG_INFO scripts/config--enableCONFIG_DEBUG_INFO_DWARF5 scripts/config--enableCONFIG_GDB_SCRIPTS scripts/config--enableCONFIG_FTRACE scripts/config--enableCONFIG_FUNCTION_TRACER scripts/config--enableCONFIG_FUNCTION_GRAPH_TRACER scripts/config--enableCONFIG_KPROBES scripts/config--enableCONFIG_MODULES scripts/config--enableCONFIG_MODULE_UNLOAD scripts/config--enableCONFIG_BLK_DEV_INITRD如果需要关闭scripts/config--disableCONFIG_RANDOMIZE_BASE如果需要指定字符串scripts/config --set-str CONFIG_LOCALVERSION-lk-lab执行完成makeolddefconfig这是 Kernel CI 和很多自动化脚本都会使用的方法。方法三维护一个配置片段★★★★★ 我最推荐例如建立configs/debug.config内容CONFIG_DEBUG_KERNELy CONFIG_DEBUG_INFOy CONFIG_DEBUG_INFO_DWARF5y CONFIG_GDB_SCRIPTSy CONFIG_KALLSYMSy CONFIG_KALLSYMS_ALLy CONFIG_FRAME_POINTERy CONFIG_FTRACEy CONFIG_FUNCTION_TRACERy CONFIG_FUNCTION_GRAPH_TRACERy CONFIG_KPROBESy CONFIG_MODULESy CONFIG_MODULE_UNLOADy CONFIG_BLK_DEV_INITRDy CONFIG_DEBUG_FSy CONFIG_MAGIC_SYSRQy然后利用内核提供的脚本合并scripts/kconfig/merge_config.sh\arch/x86/configs/x86_64_defconfig\configs/debug.config最后makeolddefconfig优点配置可以放 Git 管理换任何 Linux 版本都能复用非常适合长期学习很多内核团队都是这样维护不同用途的配置debug、CI、release。方法四生成最小配置适合长期维护如果已经有一个配置makesavedefconfig会生成defconfig里面只保留和默认配置不同的部分通常几百行会压缩到几十行。以后恢复cpdefconfig arch/x86/configs/lklab_defconfigmakelklab_defconfig我的建议适合你的 Kernel Lab结合你的目标长期学习 Linux Kernel QEMU GDB Ftrace Module我建议建立下面的目录lk-lab/ ├── kernel/ ├── configs/ │ ├── debug.config -- 调试增强配置 │ ├── release.config │ └── lklab_defconfig ├── scripts/ │ ├── config.sh -- 一键开启配置 │ ├── build.sh │ └── run.sh其中scripts/config.sh#!/bin/bashset-ecdkernel scripts/config--enableCONFIG_DEBUG_KERNEL scripts/config--enableCONFIG_DEBUG_INFO scripts/config--enableCONFIG_DEBUG_INFO_DWARF5 scripts/config--enableCONFIG_GDB_SCRIPTS scripts/config--enableCONFIG_KALLSYMS scripts/config--enableCONFIG_KALLSYMS_ALL scripts/config--enableCONFIG_FRAME_POINTER scripts/config--enableCONFIG_FTRACE scripts/config--enableCONFIG_FUNCTION_TRACER scripts/config--enableCONFIG_FUNCTION_GRAPH_TRACER scripts/config--enableCONFIG_KPROBES scripts/config--enableCONFIG_MODULES scripts/config--enableCONFIG_MODULE_UNLOAD scripts/config--enableCONFIG_DEBUG_FS scripts/config--enableCONFIG_BLK_DEV_INITRDmakeolddefconfig以后只需要执行./scripts/config.sh整个调试环境就配置好了不需要再打开menuconfig。我建议我们下一步直接做既然你准备长期学习 Linux 内核我建议不要每次自己配置。我们可以制作一个Linux 6.6 Kernel Lab 配置包包含debug.config约 100200 个学习内核最常用的配置config.sh一键开启build.shrun.shgdbinitQEMU启动脚本这样以后无论重建环境还是升级到新的 6.6.x LTS都可以一键恢复整个内核实验环境。