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/7/22 7:17:33阅读更多 →
3分钟完成foobar2000美化:个性化界面定制终极指南

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

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

2026/7/22 11:04:20阅读更多 →
鸿蒙 ArkTS 实战:Review Collector 从评价收集器到电商运营工具完整解析

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

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

2026/7/21 20:35:40阅读更多 →
TM4C129 GPIO寄存器级操作:从位寻址到中断控制实战

TM4C129 GPIO寄存器级操作:从位寻址到中断控制实战

1. 从芯片手册到实战:TM4C129LNCZAD GPIO模块深度解析搞嵌入式开发,尤其是基于ARM Cortex-M内核的MCU,GPIO配置可以说是最基础、最频繁的操作。但很多朋友,包括一些有经验的工程师,往往停留在调用厂商库函数&#xff0…

2026/7/22 17:35:05阅读更多 →
解决Groestlcoin Core常见问题:区块链同步、钱包恢复与交易加速

解决Groestlcoin Core常见问题:区块链同步、钱包恢复与交易加速

解决Groestlcoin Core常见问题:区块链同步、钱包恢复与交易加速 【免费下载链接】groestlcoin Groestlcoin Core integration/staging tree 项目地址: https://gitcode.com/gh_mirrors/gr/groestlcoin Groestlcoin Core是Groestlcoin区块链的官方节点软件&am…

2026/7/22 17:35:05阅读更多 →
TMS320F2837xD USB与uPP外设中断与DMA配置实战解析

TMS320F2837xD USB与uPP外设中断与DMA配置实战解析

1. 项目概述与核心价值在嵌入式系统,尤其是像TI TMS320F2837xD这样的高性能实时微控制器开发中,如何高效、可靠地管理外设通信,是决定系统整体性能与稳定性的关键。我们常常面临一个核心矛盾:CPU需要处理复杂的控制算法和实时任务…

2026/7/22 17:35:05阅读更多 →
Jellium Desktop网络带宽限制设置:控制最大下载速度的完整指南

Jellium Desktop网络带宽限制设置:控制最大下载速度的完整指南

Jellium Desktop网络带宽限制设置:控制最大下载速度的完整指南 【免费下载链接】jellium-desktop An unofficial desktop client for Jellyfin 项目地址: https://gitcode.com/GitHub_Trending/je/jellium-desktop Jellium Desktop是一款功能强大的Jellyfin非…

2026/7/22 17:35:05阅读更多 →
X-StereoLab与PyTorch深度集成:分布式训练的实现原理与代码示例

X-StereoLab与PyTorch深度集成:分布式训练的实现原理与代码示例

X-StereoLab与PyTorch深度集成:分布式训练的实现原理与代码示例 【免费下载链接】X-StereoLab SOS IROS 2018 GOOGLE; StereoNet ECCV2018 GOOGLE; ActiveStereoNet ECCV2018 Oral GOOGLE; HITNET CVPR2021 GOOGLE;PLUME Uber ATG 项目地址: https://g…

2026/7/22 17:35:05阅读更多 →
McBSP时钟停止模式配置SPI通信:原理、配置与实战指南

McBSP时钟停止模式配置SPI通信:原理、配置与实战指南

1. 项目概述:当McBSP遇上SPI,时钟停止模式如何化繁为简? 在嵌入式系统开发中,SPI(Serial Peripheral Interface)协议因其简单、高速和全双工的特性,成为了连接微控制器与各类外设(如…

2026/7/22 17:33:04阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 0:53:59阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 0:53:59阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 0:53:59阅读更多 →
中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业做小程序,最常见的矛盾是预算有限,但又不希望功能太单薄;没有技术团队,但又希望后续能自己运营;想快速上线,又担心隐性收费和售后失联。选型时如果只看“低价套餐”或“案例数量”,很容…

2026/7/22 0:01:17阅读更多 →
GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

企业做营销,最怕钱花完了,资产没有留下。 效果广告能带来一段时间的曝光,但预算停止后,流量往往也随之停止。短视频内容可能在几天内冲高,也可能很快沉下去。AI搜索时代,企业需要重新思考一个问题&#xff…

2026/7/22 0:01:17阅读更多 →
Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复 一、你的 Agent 在"再想想"的循环里绕了 12 轮,用户已经关窗口了 Agent 与人最大的区别是:人知道什么时候该停下来给答案,Agent 会一直"想"下去。你给 Agent 接…

2026/7/22 0:01:17阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/21 22:53:50阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/21 18:53:30阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/21 18:53:30阅读更多 →