为什么学 Linux 内核要从文件系统切入?

很多初学者直接啃源码,遇到 `vfs`、`super_block` 就头晕。这门课反其道而行:不先讲进程调度或内存管理,而是从最贴近日常开发的**文件系统**入手。因为文件是所有用户态程序与内核交互的入口——`open`、`read`、`write` 背后是一整套完整的内核调用链。把这条链跑通,你就掌握了理解其他子系统的方法论。

课程共 13 课,前半部分(第 2–7 课)搭建**内核基础层**和**通用文件系统架构**,重点拆解 sysfs 这种虚拟文件系统,让你看清内核如何向用户态暴露接口;后半部分(第 9–13 课)进入真实场景:ext2 读写字节级流程、通用块层与 SCSI 层的联动、字符设备与 platform 总线的注册机制。你会发现,文件系统不只是"存数据",它是整个设备驱动模型的缩影。

适合谁?前置缺口补什么?

适合已经能熟练用 Linux 命令行、写过简单 C 程序,但**对内核内部运作一无所知**的学习者。转岗嵌入式开发、想从应用层往系统层突破的开发者尤为合适。

前置缺口主要集中在三点:
- **C 语言指针与结构体**:内核代码里大量使用函数指针、成员偏移(`container_of`),看不懂这些会被劝退。
- **基本术语**:inode、dentry、super_block、file 描述符的区别,建议先自己查一遍再上课,否则课堂节奏会跟不上。
- **编译环境**:不需要你从头编译内核,但需要能运行 `make menuconfig` 级别的操作,知道怎么交叉编译模块。

建议先看第 1 课绪论建立整体地图,再立刻跳转第 4 课"文件系统"和第 10 课"设备架构",这两块是贯穿后续所有内容的骨架。第 2–3 课基础层可以略读,遇到不懂的概念再回查。

学完能做什么?资料怎么配合?

学完后,你应该能独立回答这些问题:一个 `cat` 命令从用户态到磁盘数据是怎么走完完整链路的?platform 总线如何自动匹配驱动?字符设备和块设备在内核中的注册流程有何异同?能否看懂 ext2 的目录项解析逻辑?

资料包配合方式很关键:视频用于建立概念框架,课件用于课后复盘。建议每看完一节课,**先合上视频,自己在纸上画出对应的数据流图**,再对照课件检查遗漏。第 5 课"打开过程"和第 7 课"读写"是核心中的核心,务必动手在虚拟机里用 `strace` 跟踪一下真实命令,验证课件里的理论路径。不要追求看完所有课,把前 7 课吃透,后 6 课作为扩展阅读,效果远好于泛泛而过。

课程介绍

01.内核课程1-绪论 02.内核课程2-内核基础层1 03.内核课程3-内核基础层2 04.内核课程4-文件系统 05.内核课程5-文件系统的打开过程 06.内核课程6-sysfs文件系统 07.内核课程7-文件系统的读写 08.内核课程8-通用块层和scsi 09.内核课程9-真实的文件系统ext2 10.内核课程10-设备架构 11.内核课程11-字符设备和input设备 12.内核课程12-platform总线和总线嵌套 13.内核课程13-块设备

课程目录

01.内核课程1-绪论 02.内核课程2-内核基础层1 03.内核课程3-内核基础层2 04.内核课程4-文件系统 05.内核课程5-文件系统的打开过程 06.内核课程6-sysfs文件系统 07.内核课程7-文件系统的读写 08.内核课程8-通用块层和scsi 09.内核课程9-真实的文件系统ext2 10.内核课程10-设备架构 11.内核课程11-字符设备和input设备 12.内核课程12-platform总线和总线嵌套 13.内核课程13-块设备