尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

make menuconfig 图形化配置:内核功能裁剪入门

make menuconfig 图形化配置:内核功能裁剪入门
📅 发布时间:2026/7/20 20:39:22

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

相关新闻

  • 计算机毕业设计之校园水果销售管理系统
  • 华为Ensp软件配置新AR设备IP和DNS应用
  • 2026 年更新:五指山可靠的抗风卷帘门制造厂家哪家权威,防风卷帘门,如何避免突如其来的狂风破坏? - 行业鉴选官

最新新闻

  • 如何将现实世界精确映射到《我的世界》?Arnis空间转换技术深度解析
  • 终极指南:Brigadier如何彻底改变Mac双系统驱动管理
  • ComfyUI-Impact-Pack V8:如何解决AI图像处理中的三大核心难题
  • 完整桌面宠物框架开发指南:从零构建个性化数字伙伴
  • 惠州企业选财税怎么挑?全国连锁财税VS惠州本土财税公司深度对比测评 - GrowUME
  • Godogen完整指南:如何用AI自动生成游戏资产和3D模型

日新闻

  • Python开发内部工具:7大核心库实战解析
  • 合肥雷达官方2026年7月最新信息:客户服务网点地址与售后热线权威公示 - 亨得利官方服务中心
  • PCA实战指南:从变量纠缠诊断到主成分业务解读

周新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号