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

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

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

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

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

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

2026/7/20 20:16:04 阅读更多 →

最新新闻

零样本时间序列预测:特殊事件人群流量概率预测技术解析

零样本时间序列预测:特殊事件人群流量概率预测技术解析

这次我们来看一个关于时间序列预测的前沿研究——零样本人群流量预测。这个项目来自学术论文《Towards Reliable Zero-Shot Crowd Forecasting: Evaluating Time Series Foundation Models for Special Event Pedestrian Forecasting》,重点探讨如何利用时间序列基础…

2026/7/24 14:54:11 阅读更多 →
2026年语音输入转文字怎么选:每月花3元,性价比高年省20小时

2026年语音输入转文字怎么选:每月花3元,性价比高年省20小时

先给可执行答案 作为长期测试各类AI效率工具的运营博主,给2026年选语音输入转文字的朋友一个明确结论:如果你是预算有限的职场新人,需要日常转写录音整理岗位知识,选对每月3元左右的基础套餐完全够用,按我近一年的实测…

2026/7/24 14:54:11 阅读更多 →
GRNN与RBFNN结合的迭代学习控制在非线性系统中的应用

GRNN与RBFNN结合的迭代学习控制在非线性系统中的应用

1. 项目概述 在工业控制和自动化领域,轨迹跟踪一直是个经典难题。特别是当面对那些数学模型不明确、非线性特性明显的系统时,传统控制方法往往力不从心。我最近在实际项目中遇到一个典型的SISO(单输入单输出)非线性系统控制问题&a…

2026/7/24 14:54:11 阅读更多 →
C++实战:从零构建命令行个人财务管理系统

C++实战:从零构建命令行个人财务管理系统

1. 项目概述与核心价值最近在整理自己的年度账单,发现用Excel记账虽然灵活,但每次想分析月度收支趋势、统计各类别消费占比,都得手动拉公式、做透视表,费时费力。作为一个有十多年C开发经验的程序员,我萌生了一个想法&…

2026/7/24 14:54:11 阅读更多 →
深度学习在青光眼早期诊断中的应用与实践

深度学习在青光眼早期诊断中的应用与实践

1. 项目背景与临床需求 青光眼作为全球第二大致盲性眼病,其早期诊断一直是眼科临床的难点。传统诊断主要依赖眼底图像判读和视野检查,但存在两个核心痛点:一是早期病变特征细微,经验不足的医师容易漏诊;二是医疗资源分…

2026/7/24 14:54:11 阅读更多 →
AM570x异构处理器架构解析与工业应用实战指南

AM570x异构处理器架构解析与工业应用实战指南

1. AM570x Sitara处理器:异构计算如何重塑嵌入式高性能应用在工业自动化、智能机器视觉和高端人机交互设备的设计中,开发者常常面临一个核心矛盾:系统需要强大的通用计算能力来运行复杂的操作系统和应用逻辑,同时又必须满足实时信…

2026/7/24 14:53:10 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/7/23 17:49:47 阅读更多 →

月新闻