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

[Linux笔记]内核裁剪

文章目录

  • 1、Linux内核裁剪
    • 1.1、使用make menuconfig情况下的工作流
      • 1.1.1、加载开发板默认配置
      • 1.1.2、添加自己的模块选项到make menuconfig菜单
      • 1.1.3、在make menuconfig勾选刚添加的选项
      • 1.1.4、把修改后的.config保存成新的xxx_defconfig
      • 1.1.5、编译
    • 1.2、不使用make menuconfig情况下的工作流
  • 2、总结

1、Linux内核裁剪

目标:

  1. 不使用make menuconfig,增加/减少Linux内核编译输出的模块
  2. 搞清楚Kconfig.configxxx_defconfigMakefile之间的关系

1.1、使用make menuconfig情况下的工作流

1.1.1、加载开发板默认配置

将 arch/arm/configs/100ask_imx6ull_defconfig复制到 Linux项目的根目录下,并重命名为为.config

$make100ask_imx6ull_defconfig

1.1.2、添加自己的模块选项到make menuconfig菜单

  1. 如果要在100ask_imx6ull_defconfig的配置基础上添加自己的配置可以👇
  2. 在相应的目录下编写驱动程序,例如在drivers/input/misc/下编写100ask_adxl345-spi.c
  3. drivers/input/misc/下找到Kconfig文件并修改
... config INPUT_ADXL34X tristate"Analog Devices ADXL34x Three-Axis Digital Accelerometer"default nhelpSay Y hereifyou have a Accelerometer interface using the ADXL345/6 controller, and your board-specific initialization code includes thatinits table of devices. This driver can use either I2C or SPI communication to the ADXL345/6 controller. Select the appropriate methodforyour system. If unsure, say N(but it's safe to say"Y"). To compile this driver as a module, choose M here: the module will be called adxl34x.... config INPUT_ADXL34x_MOD tristate"100ask SPI bus connection"depends on INPUT_ADXL34X&&SPI default mhelpSay Y hereifyou have ADXL345/6 hooked to a SPI bus. To compile this driver as a module, choose M here: the module will be called 100ask_adxl34x-spi....

1.1.3、在make menuconfig勾选刚添加的选项

make menuconfig的GUI界面勾选编译选项后,会修改.config的编译配置

$makemenuconfig

被make menuconfig修改后的.config文件如下

...CONFIG_INPUT_ADXL34X=y...CONFIG_INPUT_ADXL34x_MOD=m...

👆这些变量名都会在编译时被读取到Kconfig同级目录的Makefile中,例如drivers/input/misc/的Makefile如下所示

... obj-$(CONFIG_INPUT_ADXL34X)+=adxl34x.o... obj-$(CONFIG_INPUT_ADXL34x_MOD)+=100ask_adxl345-spi.o...

1.1.4、把修改后的.config保存成新的xxx_defconfig

这里的xxx_defconfig == 100ask_imx6ull_defconfig

$makesavedefconfig $mvdefconfig arch/arm/configs/my_name_defconfig

1.1.5、编译

# 如果obj-m, 则👇即可makemodules# 如果obj-y, 则👇即可makezImage

1.2、不使用make menuconfig情况下的工作流

1.1.3章节中,直接手工修改.config文件即可

2、总结

  1. xxx_defconfig:文件用于记录配置好的编译配置
  2. .config:内核当前的编译配置,存在于内核的顶层目录,在make xxx_defconfig后出现,从 arch/…/configs/xxx_defconfig 生成 .config
  3. make menuconfig:修改.config,手动编辑 .config 可替代 menuconfig
  4. Kconfig:定义make menuconfig的菜单项
  5. Kconfig同级目录的Makefile:读取.config中的CONFIG_XXX变量来决定编译行为,通过 obj- $ (CONFIG_XXX) 响应配置
http://www.jsqmd.com/news/315761/

相关文章:

  • ccmusic-database/music_genre部署教程:PyTorch+Gradio+Librosa环境配置与常见报错解决
  • 一分钟了解GLM-4.6V-Flash-WEB能做什么
  • Local Moondream2部署经验:解决transformers兼容性问题的方法
  • 批量生成数字人视频?这个镜像让效率翻倍提升
  • GTE+SeqGPT生成质量对比:SeqGPT-560m vs Llama3-8B在短文本任务中的实测差异
  • 2026年比较好的干燥剂厂家推荐清单
  • 如何用PyTorch-2.x-Universal-Dev-v1.0镜像快速实现文本翻译功能
  • 记忆棉床垫厂家/海绵床垫厂家哪家好?2026年高性价比床垫源头工厂推荐合集
  • 软床床垫源头厂家/乳胶床垫厂家哪家好?2026年实力床垫定做厂家名单全公开
  • YOLO X Layout部署教程:YOLOX L0.05模型207MB加载耗时与内存占用实测报告
  • AUTOSAR OS在Infineon TC3xx上的启动流程深度剖析
  • 零配置运行fft npainting lama,开箱即用超省心
  • Qwen2.5-7B-Instruct基础教程:7B模型对《论语》不同译本风格迁移生成能力分析
  • Chandra OCR部署安全加固:非root运行+只读文件系统+网络策略限制
  • 语音情感识别太神奇!Emotion2Vec+ Web界面操作全记录
  • HY-Motion 1.0游戏开发实战:NPC基础动作库批量生成方案
  • SDXL-Turbo入门必看:如何实现1步推理与实时交互生成
  • Pi0部署教程:Prometheus+Grafana监控GPU利用率/延迟/吞吐量指标
  • MedGemma 1.5实操手册:支持中英文混输的临床问答调试技巧与避坑指南
  • LCD12864字符生成原理通俗解释:CGROM与CGRAM区别
  • 手把手教你用GPT-OSS-20B搭建本地对话系统,零基础避坑指南
  • 说话人验证vs特征提取,两大功能使用场景对比
  • 模型更新:定期拉取最新权重保持识别准确率
  • BusyBox日志管理工具:syslogd与klogd配置指南
  • 面向电子信息类专业的Multisim仿真课程建设:全面讲解
  • ollama部署本地大模型|embeddinggemma-300m在游戏剧情生成中的语义引导应用
  • Chainlit调用ERNIE-4.5-0.3B-PT保姆级教程:含前端访问、提问测试与结果截图
  • 从零到一:Jetson Nano与YOLOv8的嵌入式AI开发实战
  • 从0开始学AI视频合成,HeyGem让数字人制作变简单
  • SGLang优化CPU使用率,低成本也能跑大模型