好,这次我们从“从零到能看懂并改内核源码 + 做实验”的角度,重新给你做一套系统化 Linux 内核学习路线(带书 + 视频 + 实践)。
我会按“阶段 + 目标 + 资料 + 实验”来组织,这样你可以直接照着做。
🧭 Linux 内核学习总路线(推荐 6.6 LTS)
建议主线内核:
👉Linux 6.6 LTS(现代机制完整 + 资料相对成熟)
🪜 第一阶段:Linux 内核整体框架(2~3 周)
🎯 目标
- 明白内核在干什么
- 建立“模块地图”(进程 / 内存 / IO / 文件系统 / 网络)
📘 书籍
⭐《Linux Kernel Development》
Linux Kernel Development
非常适合入门
讲清楚:
- 进程调度
- 内存管理
- 系统调用
适合建立“全局观”
⭐《Understanding the Linux Kernel》
Understanding the Linux Kernel
- 更底层、更细节
- 偏源码级解释
- 建议“第二本再读”
🎥 视频
Linux 内核基础(推荐 B 站关键词)
- “Linux 内核入门 李志军 / 冯誉杰 / 清华 OS”
MIT 6.828 / 6.S081(OS 思想非常重要)
- 虚拟内存 / 页表 / syscall
🧪 实验
用 QEMU 启动 Linux 6.6
打印:
init/main.c启动流程
跟踪:
start_kernel()→rest_init()
🪜 第二阶段:进程 & 调度器(3~4 周)
🎯 目标
- 看懂 task_struct
- 明白 CFS 调度器
- 能改 scheduler 行为
📘 资料
Linux Kernel Documentation
/Documentation/scheduler/
LWN(非常重要)
- https://lwn.net
🎥 视频
B站搜索:
- “CFS 调度器 原理”
- “Linux 进程调度完全讲解”
🧪 实验
在 6.6 内核中:
- 打印
task_struct - 修改
nice影响调度
- 打印
写一个 kernel module:
- 输出当前 pid / cpu
🪜 第三阶段:内存管理(最核心,4~6 周)
🎯 目标
- 理解页表
- buddy / slab / folio
- VM 体系
📘 书籍
继续用:
- Understanding the Linux Kernel(内存章节重点)
补充:
- LWN Memory Management 系列文章(强烈推荐)
🎥 视频
- “Linux 内存管理 buddy / slab / page cache”
- MIT 6.S081(虚拟内存部分必须看)
🧪 实验
printk 页分配:
alloc_pages
查看:
/proc/meminfo
写 module:
- 测试 slab 分配
🪜 第四阶段:文件系统 & IO(3~4 周)
🎯 目标
- VFS 结构
- inode / dentry
- ext4 / page cache
📘 资料
Linux kernel documentation:
/Documentation/filesystems/vfs.rst
LWN filesystem 系列
🧪 实验
- hook open/read syscall
- 自己写一个简单 pseudo fs(debugfs/procfs)
🪜 第五阶段:系统调用 & 内核机制(2~3 周)
🎯 目标
- syscall entry
- context switch
- interrupt
🎥 视频
- “Linux 系统调用全过程”
- “x86_64 中断机制”
🧪 实验
- 自定义 syscall(6.6)
- trace syscall(strace + ftrace)
🪜 第六阶段:高级(BPF / Trace / 性能分析)
🎯 目标
- eBPF
- perf / ftrace
- 内核观测能力
📘 资料
- BPF 相关文档(kernel docs)
- Brendan Gregg 性能分析资料
🎥 视频
- “eBPF 入门”
- “Linux perf 使用”
🧪 实验
- trace open syscall
- 用 perf 分析 CPU 热点
🧭 推荐学习节奏(很关键)
如果你每天 2~3 小时:
| 阶段 | 时间 |
|---|---|
| 内核整体 | 2~3 周 |
| 进程调度 | 3 周 |
| 内存管理 | 5 周 |
| IO 文件系统 | 3 周 |
| syscall / interrupt | 2 周 |
| BPF / perf | 2 周 |
👉 总计:3~4个月可以形成系统能力
🔥 给你的关键建议(很重要)
你有一个优势(你之前做过 2.6.34):
👉 你可以做“跨版本对比学习”,比如:
- 2.6.34:经典 slab / old scheduler
- 6.6:folio / CFS / BPF
这样你理解会比普通人快很多。
🚀 如果你想继续升级
我可以帮你做下一步更实战的:
✔ QEMU + 6.6 内核调试环境一键脚本
✔ 每一阶段配套“实验代码”
✔ scheduler / vm / fs 三大源码阅读路线图(带函数级路径)
✔ 甚至做一个“内核学习项目体系(像课程一样)”
只要你说一句:
👉“做内核实战路线”
我可以把这套直接升级成“可执行工程级学习系统”。