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

发布时间:2026/7/20 20:16:24

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 自动更新不匹配远程服务器版本

2026/7/20 20:16:24

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

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

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

2026/7/20 20:16:24

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

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

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

2026/7/20 20:16:24

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

Windows和Office激活终极指南:KMS_VL_ALL_AIO智能激活工具完全教程

Windows和Office激活终极指南:KMS_VL_ALL_AIO智能激活工具完全教程

2026/7/21 11:47:22

Windows和Office激活终极指南:KMS_VL_ALL_AIO智能激活工具完全教程 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统弹窗提醒激活而烦恼吗?Office突然变…

Plane开源项目管理平台:5分钟掌握看板视图的终极指南

Plane开源项目管理平台:5分钟掌握看板视图的终极指南

2026/7/21 11:47:22

Plane开源项目管理平台:5分钟掌握看板视图的终极指南 【免费下载链接】plane 🔥🔥🔥 Open-source Jira, Linear, Monday, and ClickUp alternative. Plane is a modern project management platform to manage tasks, sprints, do…

Godot VR手部渲染:从控制器模型到骨骼动画的完整实现指南

Godot VR手部渲染:从控制器模型到骨骼动画的完整实现指南

2026/7/21 11:47:22

1. 项目概述:为什么要在Godot中做VR手部渲染? 如果你正在用Godot Engine捣鼓VR项目,并且已经搞定了基础的场景漫游和交互,那么下一个让你挠头的问题,十有八九就是:“我的控制器在哪?我的手呢&am…

终极USB安全监控指南:如何构建开源硬件USBvalve实时检测USB威胁

终极USB安全监控指南:如何构建开源硬件USBvalve实时检测USB威胁

2026/7/21 11:47:22

终极USB安全监控指南:如何构建开源硬件USBvalve实时检测USB威胁 【免费下载链接】USBvalve Expose USB activity on the fly 项目地址: https://gitcode.com/gh_mirrors/us/USBvalve 在数字安全日益重要的今天,USB接口已成为恶意软件传播和硬件攻…

TMS320F2802x ADC优先级控制:SOCPRICTL寄存器详解与电机控制应用

TMS320F2802x ADC优先级控制:SOCPRICTL寄存器详解与电机控制应用

2026/7/21 11:47:22

1. 项目概述与核心价值 在嵌入式实时控制领域,尤其是电机驱动、数字电源和工业自动化这些对时序和响应速度要求苛刻的应用中,模数转换器(ADC)的性能直接决定了整个系统的控制精度和稳定性。我们常常需要同时采集多路模拟信号&…

视频资源下载难题?res-downloader三分钟帮你搞定全网资源

视频资源下载难题?res-downloader三分钟帮你搞定全网资源

2026/7/21 11:37:22

视频资源下载难题?res-downloader三分钟帮你搞定全网资源 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 还在为无…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/21 5:45:57

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/21 9:56:14

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/21 3:09:32

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…

GraphRAG Local + Ollama:微软知识图谱本地化

GraphRAG Local + Ollama:微软知识图谱本地化

2026/7/21 0:06:35

普通 RAG 有个老毛病:你问它「这堆文档整体在讲什么」,它答不上来。因为它只会把问题切成向量,去几十个文本块里捞最相似的几段拼给模型看。可「整体讲什么」这种问题,答案根本不在任何单独一段里——它散在全篇的联系里。 微软的…

AI 数据产品化思考:让分析能力变成可售卖的数据服务

AI 数据产品化思考:让分析能力变成可售卖的数据服务

2026/7/21 0:06:35

AI 数据产品化思考:让分析能力变成可售卖的数据服务 大家好,我是朱大喜。这周一直在复盘具体的项目和技术,最后一篇聊点不一样的东西——数据产品化。做了这么多年数据分析,我发现一个规律:能卖出去的从来不是"分…

基于人机协作的 AI 研发新体系架构:从 Harness 工程到 Loop 工程实践

基于人机协作的 AI 研发新体系架构:从 Harness 工程到 Loop 工程实践

2026/7/21 0:06:35

本文完整呈现了企业级 AI Coding 落地的核心方法论:从 Harness 工程的微观/宏观定义,到 Loop 工程的六大构建模块,再到基于 SDD(规范驱动开发)的工程化落地路径。干货较多,建议收藏细读。 我从 22 年开始就…