make menuconfig是Linux 内核(及部分嵌入式项目)的交互式可视化配置工具,核心作用是在编译内核 / 项目前,通过图形化菜单选择功能、裁剪模块,适配目标硬件(比如正点原子 RK3568 开发板)。

它的核心用途(结合你的开发板场景):

        定制内核功能通过菜单勾选 / 取消选项,决定内核是否包含某类功能:

        硬件驱动:比如开启 / 关闭 RK3568 的 I2C、SPI、HDMI 等硬件对应的内核驱动;

        系统特性:比如是否启用网络协议、文件系统(如 EXT4、FAT);

        模块类型:选择功能是编译进内核(直接运行),还是编译为独立模块(后续加载)。

        裁剪内核体积取消不需要的功能(比如冗余的硬件驱动、无用的文件系统),缩小编译后的内核镜像大小,适配嵌入式设备的存储 / 内存资源(比如你的开发板)。

        适配目标硬件针对正点原子 RK3568 开发板,可通过该工具配置与板子硬件匹配的内核选项(比如板载外设的驱动开关),确保编译后的内核能正常驱动硬件。

使用前提:

        必须在内核源码目录下执行(比如你之前找的kernel目录);

        需要安装ncurses依赖库(否则会提示缺少界面支持);

        需先加载对应项目的编译环境(比如正点原子 SDK 的envsetup.sh脚本)。

意义:

        在正点原子开发板的内核开发中,make menuconfig是编译适配板子的自定义内核的必经步骤—— 通过它配置好硬件驱动、功能选项后,才能编译出能正常运行在你板子上的内核镜像。在kernel目录下打开Kconfig

        这是正点原子 RK3568 开发板 Linux SDK 内核源码根目录下的Kconfig文件内容(当前路径:~/rk3568_linux_sdk/kernel),它是 Linux 内核配置系统的核心定义文件,直接支撑make menuconfig等可视化配置工具的菜单结构。

        文件中mainmenu行定义了make menuconfig界面的顶部标题(会动态显示当前内核的架构、版本信息);而多条source "xxx/Kconfig"指令,则是将内核各子系统(初始化、驱动、文件系统、网络等)的配置选项文件引入,把分散在不同目录的配置逻辑整合为统一的分层菜单 —— 比如source "drivers/Kconfig"会加载驱动子系统的配置选项,这也是我们在make menuconfig中能找到开发板硬件驱动开关的根源。

        对正点原子 RK3568 开发而言,这个文件是定制内核的 “导航框架”:通过它组织的配置选项,我们可以针对性开启 / 关闭板载外设(如 I2C、HDMI)的驱动、裁剪冗余功能,最终编译出适配该开发板的自定义内核镜像。

到net里面看Kconfig

找到Networking support 

 搜索Networking support 

grep -rn "Networking support"

现在我要把菜单改掉,我的后厨也要同步改掉

找到第7行

加了gzl love

加了以后 后厨跟着改

所以make menuconfig读的就是后厨

.config 点菜的清单 

一般调驱动改Deconfig比较多

        

只要知道这四个的关系

用 “食堂” 的类比来理解 Linux 内核配置的这 4 个核心组件,其实是把复杂的内核配置流程具象化了,新手很容易 get 到它们的关系:

1. Kconfig:后厨的 “原材料”

Kconfig 是内核各子系统(驱动、文件系统等)的配置选项定义文件—— 就像后厨里的各种食材(蔬菜、肉类),它决定了 “菜单” 里能出现哪些可选的配置项(比如是否支持某款驱动、某类文件系统)。内核源码各目录下的 Kconfig 文件,共同组成了配置系统的 “原材料库”。

2. menuconfig:餐厅的 “菜单”

make menuconfig交互式配置工具—— 对应餐厅的纸质菜单,它把 Kconfig 里的 “原材料”(配置选项)组织成分层的可视化菜单,让你能直观地勾选 / 取消选项(比如选 “要这个驱动”“不要那个功能”),是用户和内核配置系统交互的入口。

3 .config:最终端上桌的 “菜”

当你通过 menuconfig 选好所有配置项后,系统会生成.config文件 —— 这是最终的 “成品菜”,也是内核编译时实际参考的配置文件,里面记录了所有选中的选项(比如 “启用网络支持”“编译某驱动进内核”)。

4. Defconfig:给熟客准备的 “预制菜”

Defconfig 是厂商 / 社区预设好的配置文件(比如正点原子 RK3568 的rk3568_atk_defconfig)—— 对应餐厅给熟客准备的预制菜,不用从头选菜单,直接用这个预设配置就能快速得到适配硬件的基础.config,适合快速搭建环境(熟客不用挨个选菜,直接用现成的再微调)。

总结流程

Kconfig(原材料)→ menuconfig(菜单)→ 用户选菜 → 生成.config(成品菜);而 Defconfig 是 “预制好的基础菜”,可以直接导入 menuconfig 修改,省去从头选菜的麻烦 —— 这就是内核配置里这 4 个组件的核心关系。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐