Linux内核源码结构精讲:核心目录功能与嵌入式适配逻辑
Linux内核源码结构精讲核心目录功能与嵌入式适配逻辑作者黒漂技术佬 | 系列Linux内核配置与移植引言很多嵌入式新手拿到Linux内核源码包比如linux-5.10.xxx.tar.xz后解压一看密密麻麻几千个文件瞬间心跳加速、头皮发麻。别慌内核源码虽然庞大但它的目录结构是有规律可循的。本文带你逐个劈开内核源码的核心目录搞清楚每个目录是干什么的以及做嵌入式开发时需要重点关注哪几个。一、内核源码顶层目录总览解压一份标准的Linux内核源码以5.10版本为例你会看到以下顶层目录linux-5.10/ ├── arch/ # 架构相关代码ARM、x86、RISC-V等 ├── block/ # 块设备I/O层 ├── certs/ # 证书相关 ├── crypto/ # 加密算法 ├── Documentation/ # 内核文档 ├── drivers/ # 设备驱动最大的目录 ├── fs/ # 文件系统VFS、ext4、FAT等 ├── include/ # 头文件 ├── init/ # 内核初始化 ├── ipc/ # 进程间通信 ├── kernel/ # 内核核心调度、信号等 ├── lib/ # 通用库函数 ├── mm/ # 内存管理 ├── net/ # 网络协议栈 ├── scripts/ # 编译辅助脚本 ├── security/ # 安全模块SELinux等 ├── sound/ # 音频子系统 ├── tools/ # 用户态工具 ├── usr/ # initramfs相关 ├── virt/ # 虚拟化 ├── Kconfig # 顶层配置入口 ├── Makefile # 顶层编译入口 └── COPYING # 许可证嵌入式开发者必盯的目录arch/、drivers/、include/、scripts/、Documentation/devicetree/。二、核心目录逐一剖析2.1arch/—— 芯片架构的户口本这是嵌入式工程师打交道最频繁的目录。内核需要知道它在什么CPU上跑arch/下面按架构分子目录arch/ ├── arm/ # ARM 32位 │ ├── boot/dts/ # ★ 设备树文件存放处 │ ├── mach-xxx/ # 各SoC厂商的板级支持 │ ├── configs/ # 默认配置文件 │ └── kernel/ # ARM特有的内核代码 ├── arm64/ # ARM 64位 ├── x86/ # PC平台 ├── riscv/ # RISC-V架构 └── mips/ # MIPS架构如果你是做ARM嵌入式开发arch/arm/boot/dts/是修改设备树Device Tree的主战场arch/arm/configs/里放着xxx_defconfig默认配置文件编译前需要从这里拷贝一份。2.2drivers/—— 驱动的百货商场这是内核中体积最庞大的目录几乎所有的设备驱动都在这里一级子目录按设备类型分类子目录功能说明嵌入式常用度drivers/gpio/GPIO控制器与引脚驱动⭐⭐⭐⭐⭐drivers/i2c/I2C总线与设备驱动⭐⭐⭐⭐⭐drivers/spi/SPI总线与设备驱动⭐⭐⭐⭐drivers/net/网络设备驱动含ethernet、wifi⭐⭐⭐⭐drivers/usb/USB主机/设备驱动⭐⭐⭐drivers/mtd/存储技术设备NAND/NOR Flash⭐⭐⭐⭐drivers/tty/serial/串口驱动⭐⭐⭐⭐⭐drivers/video/显示驱动framebuffer等⭐⭐⭐drivers/input/输入设备按键、触控⭐⭐⭐drivers/pwm/PWM驱动⭐⭐⭐drivers/clk/时钟驱动框架⭐⭐⭐⭐⭐嵌入式适配的核心原则你不需要修改所有驱动只关注和你板子外设对应的那几个。2.3include/—— 头文件的图书馆include/存放了内核中几乎所有模块的头文件。嵌入式开发中需要重点关注include/linux/—— 内核通用宏和框架接口include/uapi/—— 用户空间API头文件导出给应用程序用include/dt-bindings/—— 设备树绑定头文件DTS中引用的宏定义在此当你写设备树时类似dt-bindings/gpio/gpio.h的引用它的物理位置就在include/dt-bindings/gpio/gpio.h。2.4scripts/—— 编译的工具箱这个目录不运行在内核里而是用来编译内核的工具集scripts/kconfig/—— 负责解析 Kconfig 文件生成.configscripts/Makefile.build—— 编译的核心Makefile规则scripts/dtc/—— 设备树编译器DTC源码scripts/extract-ikconfig—— 从内核镜像中提取配置三、嵌入式适配的关键目录做嵌入式Linux移植你的日常工作几乎就在这几个目录里打转arch/arm/boot/dts/ → 编写/修改设备树 arch/arm/configs/ → 查找/生成默认配置 drivers/xxx/ → 添加或修改驱动 include/dt-bindings/ → 引用设备树宏定义 Makefile / Kconfig → 配置编译选项典型工作流从arch/arm/configs/找一个接近的defconfig做基础配置在arch/arm/boot/dts/下创建自己板子的.dts设备树文件如果外设驱动不在内核主线里在drivers/下添加驱动代码修改对应目录的Kconfig和Makefile让新驱动参与编译四、新手常见困惑解答问内核源码为什么这么大我需要全部看懂吗答Linux内核5.10大约有近3000万行代码没有人能全部看懂——Linus本人也不行。嵌入式工程师只需要理解架构层arch/、驱动层drivers/以及与硬件相关的头文件就够了。其他如内存管理mm/、进程调度kernel/、文件系统fs/理解原理即可不需要逐行读懂。问我该下载哪个版本的内核答建议选择LTS长期支持版本比如 5.4、5.10、5.15、6.1、6.6 等。芯片原厂如NXP、ST、Rockchip通常基于LTS版本提供BSP。总结Linux内核源码虽然庞大但掌握了顶层目录的功能划分后它就不再是迷宫了。嵌入式开发者的核心工作区就是设备树DTS、驱动代码、配置文件三个板块分别对应arch/arm/boot/dts/、drivers/、arch/arm/configs/。后续文章将带你逐一攻克这些环节。

相关新闻

DAY27装饰器@XXX

DAY27装饰器@XXX

浙大疏锦行 今日内容核心:装饰器(Decorator) 1. 装饰器是什么? 本质:一个函数,它接收另一个函数作为参数,返回一个新函数(通常叫 wrapper),在不修改原函数…

2026/10/25 8:06:41 阅读更多 →
UnrealSharp终极指南:用C开发Unreal Engine 5的完整教程

UnrealSharp终极指南:用C开发Unreal Engine 5的完整教程

UnrealSharp终极指南:用C#开发Unreal Engine 5的完整教程 【免费下载链接】UnrealSharp UnrealSharp is a plugin to Unreal Engine 5, which enables developers to create games using C# (.NET10) with Hot Reload 项目地址: https://gitcode.com/gh_mirrors/u…

2026/10/25 18:39:43 阅读更多 →
颠覆性无线传输革命:3DS FBI Link让你的Mac变身3DS游戏智能管家

颠覆性无线传输革命:3DS FBI Link让你的Mac变身3DS游戏智能管家

颠覆性无线传输革命:3DS FBI Link让你的Mac变身3DS游戏智能管家 【免费下载链接】3DS-FBI-Link Mac app to graphically push CIAs to FBI. Extra features over servefiles and Boop. 项目地址: https://gitcode.com/gh_mirrors/3d/3DS-FBI-Link 还在为3DS游…

2026/10/26 0:01:10 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/27 17:33:32 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/28 7:28:00 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/28 9:02:11 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/27 18:20:50 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/28 9:00:54 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/28 7:29:02 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 13:55:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/28 9:01:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 19:19:37 阅读更多 →