make menuconfig 图形化配置:内核功能裁剪入门
make menuconfig 图形化配置内核功能裁剪入门作者黒漂技术佬 | 系列Linux内核配置与移植引言上篇文章讲了 Kconfig 和 Makefile 的原理这篇文章我们正式进入「点菜环节」。make menuconfig是内核开发中使用频率最高的配置工具之一。它提供了一个基于文本的图形化界面让你像逛超市一样挑选内核功能。对于嵌入式开发者来说功能裁剪是核心技能——Flash 空间有限不需要的功能必须删得干干净净。一、环境准备make menuconfig需要ncurses库支持。不同发行版先装好依赖# Ubuntu/Debiansudoaptinstallbuild-essential libncurses5-dev flex bison# CentOS/RHELsudoyuminstallncurses-devel flex bison# Arch Linuxsudopacman-Sncursesmakegcc flex bison进入内核源码目录后先加载默认配置cdlinux-5.10makeARCHarmCROSS_COMPILEarm-linux-gnueabihf- xxx_defconfig这里的ARCHarm指定目标架构CROSS_COMPILE指定交叉编译器前缀。然后启动图形化配置makeARCHarmCROSS_COMPILEarm-linux-gnueabihf- menuconfig二、menuconfig 界面操作指南进入后的界面长这样典型布局┌──────────────────────── Linux/arm 5.10.0 Kernel Configuration ──────────────────────────┐ │ Arrow keys navigate the menu. Enter selects submenus --- │ │ Y includes, N excludes, M modularizes features. │ │ Press Esc to exit, ? for Help, / for Search. │ │ ┌─────────────────────────────────────────────────────────────────────────────────────┐ │ │ │ General setup --- │ │ │ │ [*] Enable loadable module support --- │ │ │ │ -*- Enable the block layer --- │ │ │ │ System Type --- │ │ │ │ Kernel Features --- │ │ │ │ Boot options --- │ │ │ │ CPU Power Management --- │ │ │ │ Networking support --- │ │ │ │ Device Drivers --- │ │ │ │ File systems --- │ │ │ │ Security options --- │ │ │ └─────────────────────────────────────────────────────────────────────────────────────┘ │ │ Select Exit Help Save Load │ └─────────────────────────────────────────────────────────────────────────────────────────┘操作快捷键速查快捷键功能说明↑ ↓ ← →导航移动光标、进入/退出子菜单Enter进入子菜单---表示有子菜单Space切换状态Y → M → N 循环或勾选/取消Y编入内核选项变成[*]或*M编译为模块选项变成MN不编译选项变成[ ]或 /搜索按配置名或关键字搜索?查看帮助显示当前项的 help 信息Esc Esc退出按两次 Esc 退出当前菜单符号含义符号含义[*]/*编译进内核镜像Y[ ]/ 不编译NM编译为可加载模块M-*-当前项被其他项 select 强制选中的---该项有子菜单三、嵌入式功能裁剪实战对于嵌入式开发以下模块是裁剪的高频区域3.1 文件系统裁剪路径File systems ---File systems --- * The Extended 4 (ext4) filesystem # 根文件系统必须 DOS/FAT/EXFAT/NT Filesystems # 嵌入式一般不用 * Second extended fs support # ext2/3 有时需要 [ ] Quota support # 配额管理——砍掉 NFS client support # 网络文件系统——看需求 NFS server support裁剪原则根文件系统用的那个必须留通常是 ext4其他的看项目需求。嵌入式设备基本不需要 FAT/NTFS、NFS、XFS。3.2 网络协议栈裁剪路径Networking support ---Networking support --- [*] TCP/IP networking # 这个必须留 [ ] Amateur Radio support # 业余无线电——砍掉 Bluetooth subsystem support # 不需要就砍 CAN bus subsystem support # 需要CAN通信再开 [ ] Wireless # WiFi需要才开 NFC subsystem support嵌入式设备如果只走以太网可以把蓝牙、WiFi、NFC、CAN 等全部关掉。内核镜像能缩小不少。3.3 驱动裁剪路径Device Drivers ---这是内核体积的大头占比60%以上也是裁剪收益最大的区域Device Drivers --- ATA/ATAPI/MFM/RLL support # IDE硬盘——嵌入式不接 Fusion MPT device support # 服务器RAID——砍掉 IEEE 1394 (FireWire) support # 火线接口——砍掉 ISDN support # 上古拨号——砍掉 Macintosh device drivers # 苹果设备——砍掉 [*] MTD support --- # Flash存储——必须留 Sound card support --- # 声卡——看需求 [*] SPI support --- # SPI总线——常用 [*] I2C support --- # I2C总线——常用 [*] GPIO Support --- # GPIO——必须留一个窍门Device Drivers下凡是带厂商名字的Apple/Macintosh/Dell/IBM嵌入式场景基本都能关。3.4 调试选项裁剪路径Kernel hacking ---Kernel hacking --- [ ] Kernel debugging [ ] Compile-time checks and compiler options [ ] printk and dmesg options调试阶段开启量产阶段关闭。关闭调试选项可以显著减小内核体积并提升运行效率。四、配置的保存与复用4.1 保存配置在 menuconfig 界面选择 Save 默认保存为.config。4.2 导出为 defconfig# 将当前 .config 导出为精简的 defconfigmakeARCHarmCROSS_COMPILEarm-linux-gnueabihf- savedefconfig# 生成的 defconfig 在源码根目录可以拷贝到cpdefconfig arch/arm/configs/myboard_defconfigsavedefconfig 的好处它只保存和默认值不同的配置项文件比.config小得多更容易版本管理。4.3 对比配置差异# 比较两个配置文件的差异scripts/diffconfig .config arch/arm/configs/other_defconfig五、高级技巧用 search 定位配置项menuconfig 的搜索功能非常实用按/键输入关键词即可Enter CONFIG_ (sub)string to search for: GPIO搜索结果的示例输出Symbol: GPIO_SYSFS [y] Type : bool Prompt: /sys/class/gpio/... (sysfs interface) Location: - Device Drivers - GPIO Support (GPIOLIB [y])搜索结果告诉你这个配置项的类型、当前值、在哪个菜单路径下并且会给出对应的Location路径你可以顺着路径去找到它。六、内核配置重构make oldconfig当你从老版本升级到新版本内核时用make oldconfig可以帮助你仅回答新增的配置项# 把老版本的 .config 拷贝过来cp../linux-5.4/.config.makeARCHarmCROSS_COMPILEarm-linux-gnueabihf- oldconfig内核会逐个询问新增配置项的选择老配置项保持不变。这比从头配置一版全新内核要快得多。总结make menuconfig是内核裁剪的手术刀。掌握了菜单导航、配置项搜索、驱动与文件系统的裁剪原则你就能把臃肿的通用内核削成适配嵌入式板卡的瘦身版。记住裁剪优先级驱动 文件系统 网络 其他砍掉不需要的驱动收益最大。

相关新闻

解决问题:Vscode 自动更新不匹配远程服务器版本

解决问题:Vscode 自动更新不匹配远程服务器版本

如有侵权或其他问题,欢迎留言联系更正或删除。 避免自动更新: 1. 打开:文件 - 首选项 - 设置 - 应用程序 - 更新; 2. 设置下列选项: 如果已自动更新,如何回退至原有的历史版本 : 去官网下载…

2026/10/28 1:29:41 阅读更多 →
3分钟完成foobar2000美化:个性化界面定制终极指南

3分钟完成foobar2000美化:个性化界面定制终极指南

3分钟完成foobar2000美化:个性化界面定制终极指南 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn 你是否厌倦了foobar2000那单调乏味的默认界面?是否渴望拥有一个既美观又实用…

2026/10/24 5:51:25 阅读更多 →
鸿蒙 ArkTS 实战:Review Collector 从评价收集器到电商运营工具完整解析

鸿蒙 ArkTS 实战:Review Collector 从评价收集器到电商运营工具完整解析

鸿蒙 ArkTS 实战:Review Collector 从评价收集器到电商运营工具完整解析 前言 Review Collector 是一个基于鸿蒙 ArkTS 编写的电商运营类单页应用,核心场景是 订单评价与素材沉淀。 它把 维护关联订单、评价内容、问题或好评标签、素材数量和收集备注…

2026/10/25 16:49:43 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/27 17:33:32 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/27 4:06:49 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/27 7:21:53 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/27 18:20:50 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/27 6:20:47 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/27 4:06:50 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 13:55:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 7:21:50 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 19:19:37 阅读更多 →