当前位置: 首页 > news >正文

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.10makeARCH=armCROSS_COMPILE=arm-linux-gnueabihf- xxx_defconfig

这里的ARCH=arm指定目标架构,CROSS_COMPILE指定交叉编译器前缀。然后启动图形化配置:

makeARCH=armCROSS_COMPILE=arm-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编译为模块选项变成<M>
N不编译选项变成[ ]< >
/搜索按配置名或关键字搜索
?查看帮助显示当前项的 help 信息
Esc Esc退出按两次 Esc 退出当前菜单

符号含义

符号含义
[*]/<*>编译进内核镜像(Y)
[ ]/< >不编译(N)
<M>编译为可加载模块(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 导出为精简的 defconfigmakeARCH=armCROSS_COMPILE=arm-linux-gnueabihf- savedefconfig# 生成的 defconfig 在源码根目录,可以拷贝到cpdefconfig arch/arm/configs/myboard_defconfig

savedefconfig 的好处:它只保存和默认值不同的配置项,文件比.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.makeARCH=armCROSS_COMPILE=arm-linux-gnueabihf- oldconfig

内核会逐个询问新增配置项的选择,老配置项保持不变。这比从头配置一版全新内核要快得多。


总结

make menuconfig是内核裁剪的"手术刀"。掌握了菜单导航、配置项搜索、驱动与文件系统的裁剪原则,你就能把臃肿的通用内核削成适配嵌入式板卡的"瘦身版"。记住裁剪优先级:驱动 > 文件系统 > 网络 > 其他,砍掉不需要的驱动收益最大。

http://www.jsqmd.com/news/1230277/

相关文章:

  • 计算机毕业设计之校园水果销售管理系统
  • AI文案风格割裂难题(企业级风格锚定系统首次公开)
  • 2026四川智能化弱电总包公司深度盘点:资质、施工、项目履历全维度解析 - 互联网科技品牌测评
  • 小程序毕设项目:高校报考专业解析咨询小程序的设计与实现 武设专业培养方案解读服务小程序设计 (源码+文档,讲解、调试运行,定制等)
  • 【单片机毕业设计推荐】基于 STM32 的老人智能跌倒防护与定位报警装置设计,基于 STM32 的户外人员防碰撞照明与紧急求救系统开发(024702)
  • 肇庆2026专业电缆回收资源汇总:粤友二手物资回收 - 广东再生资源回收
  • 肇庆机房拆除回收指南:2026精选:合规备案企业 - 广东再生资源回收
  • 杭州全案设计怎么选?户型适配+3步筛选+6问清单
  • 2026年月台登车桥选型测评:聚焦苏州德克莱的实战价值 - 信息热点
  • 【广东博士创新发展促进会主办 | 多位院士报告 | 稳定EI检索 | 年度重磅会议 | 连续6年EI检索稳定且超快速,见刊后均1个月检索】第七届先进材料与智能制造国际学术会议(ICAMIM 2026)
  • PATE —— 新的 “时序异常” 评估指标
  • 华为Ensp软件配置新AR设备IP和DNS应用
  • 南宁泰格豪雅官方客户服务中心2026年7月最新网点地址与售后热线公示 - 亨得利钟表维修中心
  • 2026 年更新:五指山可靠的抗风卷帘门制造厂家哪家权威,防风卷帘门,如何避免突如其来的狂风破坏? - 行业鉴选官
  • Kronos股票预测终极指南:8分钟完成千股分析的AI金融大模型
  • 2026年7月新出炉榜单 北京注册公司代办哪家靠谱?全平台实测数据 + 6大机构揭晓 - 互联网科技品牌测评
  • 高效办公:Python批量生成/修改Word文档
  • 2026十堰家装水电改造与维修科普指南:隐蔽工程如何选合规施工方 - 信息热点
  • 2026苏州新媒体运营公司第一排名|实体商家首选:拾方记品牌管理(苏州) - 速递信息
  • 外卖霸王餐API防SQL注入进阶:Java MyBatis中#{}与${}的正确使用边界及自定义TypeHandler拦截恶意参数
  • 05LS2K3000 Loongnix 20桌面版 可道云(KodBox)完整部署教程
  • 【YOLO26多模态涨点改进】TIP 2025 | 独家创新首发、特征融合改进篇| 引入DFAM双特征聚合模块,通过局部纹理先验强化边缘、轮廓信息,助力RGB-D目标检测、多模态融合目标检测有效涨点
  • 如何3步永久保存微信聊天记录:打造个人数字记忆档案馆的完整指南
  • 海外“可玩式内容”平台爆发,抖音、腾讯、小红书等国内巨头如何布局互动内容赛道?
  • 清远电缆回收处置指南:2026优选:资质齐全企业 - 广东再生资源回收
  • 浙江省台州市六层规划自建房电梯落地:精准预留尺寸定制香槟金观光梯,细致业主跨城考察工厂认可专业服务
  • 2026年7月百达翡丽南京官方热线电话与网点地址客户服务信息最新公示 - 百达翡丽服务中心
  • 劳力士中国官方售后服务中心|完整网点地址与热线权威信息公示(2026年7月最新) - 劳力士服务中心
  • 【官方星级认证排行榜TOP1】2026上海专业洗涤设备源头厂家权威评测:谁才是洗涤行业的品质之王? - 品牌鉴赏官2026
  • 鸿蒙 ArkTS 实战:Micro Shop Inventory 从微店库存到电商运营工具完整解析