学习路径建议
在开始看视频之前,建议你有一个清晰的学习路径:

- 基础准备:扎实的C语言、数据结构与算法、操作系统基础(进程、内存、文件系统、中断等)。
- 环境搭建:学会使用Linux命令行、GCC/GDB、Make等基本工具。
- 内核入门:了解内核是什么,内核模块的基本概念和编程。
- 子系统深入:选择一个你感兴趣的子系统(如进程调度、内存管理、设备驱动、网络栈)进行深入学习。
- 阅读源码:视频是引导,最终要回归到阅读和分析内核源码本身。
推荐视频教程列表
以下推荐的教程涵盖了不同层次和不同来源,你可以根据自己的情况选择。
入门与环境搭建
这个阶段的目标是让你对内核编程有个感性认识,并搭建好学习和实验的环境。
-
B站 - [Linux内核编程入门] by 刘明
- 简介:这是国内非常经典和受欢迎的Linux内核入门视频,讲师讲解清晰,循序渐进,从最基础的内核模块“Hello, World”开始,逐步带你了解字符设备驱动、并发控制、中断处理等核心概念。
- 适合人群:零基础或基础薄弱的初学者。
- 优点:中文讲解,无语言障碍;理论与实践结合,每节课都有代码示例。
- 链接:直接在B站搜索“刘明 Linux内核编程”即可找到。
-
极客时间 - [Linux内核技术实战课] by 关勇
(图片来源网络,侵删)- 简介:这是一套付费的、系统化的视频课程,内容非常全面,从内核基础、编译、调试到核心子系统(进程、内存、文件系统、I/O、网络)都有深入浅出的讲解,结合了大量实例和源码分析。
- 适合人群:希望系统、全面学习,并且有一定付费意愿的学习者。
- 优点:体系完整,质量高;结合了实战和源码分析;社区讨论氛围好。
- 链接:极客时间官网
深入与专项突破
当你掌握了基础知识后,需要深入到内核的某个具体领域。
-
B站 - [Linux设备驱动开发] by 韦东山
- 简介:韦东山的视频在嵌入式和驱动开发领域口碑极佳,他的课程从最简单的GPIO操作开始,逐步深入到I2C, SPI, LCD, 触摸屏等复杂设备的驱动开发,讲解非常注重实践,手把手带你写代码。
- 适合人群:希望从事嵌入式Linux开发或设备驱动开发的学习者。
- 优点:实战性极强,覆盖面广;配套资料和开发板教程非常丰富;讲解通俗易懂。
- 链接:在B站搜索“韦东山 Linux设备驱动”。
-
B站 - [操作系统真相还原] by 刘渝
- 简介:这套视频配套一本同名的经典书籍,它的独特之处在于,它不是去分析一个已经存在的Linux内核,而是从零开始,手把手教你写一个简易的操作系统内核,这能让你深刻理解操作系统的本质。
- 适合人群:希望从根本上理解操作系统工作原理,不畏惧底层和汇编语言的学习者。
- 优点:从无到有,体验完整;能让你真正“看穿”内核的运行机制。
- 链接:在B站搜索“操作系统真相还原”。
-
B站 - [Linux内核设计与实现] by 孟宁
(图片来源网络,侵删)- 简介:这套视频是孟宁老师开设的“Linux内核分析”MOOC课程的录像,它基于经典书籍《Linux内核设计与实现》,系统地讲解了内核的各个核心子系统。
- 适合人群:希望对内核理论有系统性了解的学习者。
- 优点:理论性强,体系化;能帮助你建立宏观的内核知识框架。
- 链接:在B站搜索“孟宁 Linux内核”。
顶级专家讲座与前沿
当你达到一定水平后,可以看看世界顶级内核开发者是如何思考和解决问题的。
-
YouTube - LWN.net talks / Linux Plumbers Conference
- 简介:LWN.net 是Linux内核领域的权威新闻和技术网站,经常会发布一些内核开发者的演讲视频,Linux Plumbers Conference (LPC) 是内核开发者的高端技术会议,其议题非常深入和前沿。
- 适合人群:有一定内核开发经验,希望了解最新技术动态和设计思想的学习者。
- 优点权威、前沿,能接触到内核社区的“第一手”信息。
- 链接:在YouTube搜索“LWN.net talks”或“Linux Plumbers Conference”。
-
YouTube - CppCon / Google I/O / etc.
- 简介:虽然这些不是专门的Linux内核会议,但内核中大量使用了C++(尤其是在一些新的子系统和BPF中),这些会议中关于C++性能、并发、内存管理的讲座,对于理解内核中类似的设计思想非常有帮助。
- 适合人群:希望从语言和编程范式层面深化理解内核设计的学习者。
- 优点:视角独特,能启发思考。
学习建议与补充资源
光看视频是不够的,以下建议能让你的学习效率事半功倍。
-
必须动手实践:
- 搭建实验环境:推荐使用 QEMU 搭建一个虚拟的Linux开发环境,这样你可以在一个干净、可重复的环境中调试内核,不用担心搞坏你的主机系统。
- 跟着视频敲代码:不要只看不练!每一个示例,每一个实验,都亲手敲一遍,改一改,调试一下。
-
学会使用工具:
- GCC/GDB:必备的编译和调试工具,学会使用GDB来调试内核模块(需要
kgdb或QEMU+GDB组合)。 - Make/Makefile:内核使用Kbuild系统,理解Makefile的编写规则至关重要。
- objdump/readelf:用于分析二进制文件,理解代码和数据的布局。
printk/ftrace/perf:内核的“瑞士军刀”,用于打印日志、跟踪函数调用和性能分析,这是调试内核问题的核心工具。
- GCC/GDB:必备的编译和调试工具,学会使用GDB来调试内核模块(需要
-
阅读官方文档:
- The Linux Kernel Documentation:内核源码目录下的
Documentation/文件夹是最权威的资料,在你学习任何子系统之前,都应该先阅读这里的文档,它包含了设计理念、API说明、使用方法等。
- The Linux Kernel Documentation:内核源码目录下的
-
阅读经典书籍:
- 《Linux内核设计与实现》:入门必读,建立宏观框架。
- 《深入理解Linux内核》:比较经典,但部分内容可能稍显陈旧。
- 《Linux Device Drivers》:经典的驱动开发指南,虽然版本较老,但思想永不过时。
- 《ULK (Understanding the Linux Kernel)》:深入浅出,分析细致,是进阶的好书。
-
利用社区和源码:
- Linux Kernel Mailing List (LKML):内核开发的邮件列表,虽然阅读起来很困难,但这里是了解内核设计决策和最新进展的最佳地方。
- GitHub Kernel:内核源码的托管平台,学会使用
git来浏览、搜索和提交代码。 - Elixir (https://elixir.bootlin.com/):一个极其强大的内核源码在线浏览器,可以轻松跳转定义、查看版本差异,是阅读源码的神器。
- 新手入门:从 刘明 或 关勇 的视频开始,快速建立基本概念。
- 驱动方向:深入学习 韦东山 的设备驱动课程。
- 原理探究:挑战 刘渝 的《操作系统真相还原》,彻底搞懂底层。
- 理论提升:观看 孟宁 的课程,构建系统知识体系。
- 高手进阶:直接阅读 Documentation,研究 LKML,使用 Elixir 深入源码。
学习Linux内核是一个漫长但回报丰厚的过程,保持耐心,持续动手,祝你学习顺利!
