从零搭建Linux内核开发环境

📚 共计 30 章节
01
Linux内核概述
什么是Linux内核 · 版本号命名规则 · 源码目录结构 · 开发特点与挑战
概念入门
02
开发环境总览
硬件要求 · 操作系统选择 · 工具链概览 · 工作流程简介
环境规划
03
虚拟机与双系统
VMware/VirtualBox · Ubuntu Server · 双系统引导 · 网络与共享文件夹
虚拟机安装
04
WSL2开发环境
WSL2安装配置 · Windows Terminal · 文件互访 · 限制与对策
WSLWindows
05
基础工具安装
Git · SSH · Vim/Neovim · Tmux · Curl/Wget · Build-essential · Man
工具必备
06
编译工具链
GCC · GNU Make · Binutils · LLVM/Clang · 交叉编译 · 版本选择
编译工具链
07
源码管理
Git clone · 历史提交 · 分支管理 · 打补丁 · Git配置最佳实践
Git版本控制
08
内核配置系统
Kconfig语法 · menuconfig · defconfig · localmodconfig · 配置项详解
配置Kconfig
09
内核编译
make命令详解 · 并行编译 · 模块编译 · 输出目录 · 常见错误
编译构建
10
QEMU虚拟机
QEMU安装 · 虚拟磁盘 · 运行最小内核 · 调试启动过程
QEMU模拟
11
BusyBox根文件系统
BusyBox编译 · initramfs · 挂载根文件系统 · 最小根文件系统
根文件系统BusyBox
12
内核模块开发
模块Hello World · Makefile · 加载/卸载 · 模块参数 · 依赖
模块驱动
13
字符设备驱动
设备号 · file_operations · 注册字符设备 · open/read/write · udev
驱动字符设备
14
调试技术入门
printk · dmesg · dynamic debug · procfs · sysfs
调试日志
15
GDB调试内核
QEMU+GDB联调 · 断点 · 查看变量 · 单步 · 分析内核崩溃
GDB调试
16
KGDB调试
KGDB配置 · 串口KGDB · 网络KGDB · 调试模块 · 实战案例
KGDB远程调试
17
内存调试
KASAN · KMSAN · KCSAN · SLUB调试 · 内存泄漏 · OOM分析
内存KASAN
18
性能分析工具
perf · ftrace · trace-cmd · 火焰图 · 性能瓶颈定位
性能perf
19
内核文档系统
内核文档目录 · make htmldocs · 阅读源码技巧 · LKML邮件列表
文档社区
20
内核编程规范
CodingStyle · checkpatch.pl · 提交补丁规范 · Signed-off-by
规范补丁
21
内核同步机制
自旋锁 · 互斥锁 · 读写锁 · RCU · 原子操作 · 死锁检测
同步并发
22
中断与下半部
中断注册 · 中断处理 · tasklet · workqueue · threaded IRQ
中断下半部
23
时间管理与定时器
jiffies · HZ · 定时器API · 高精度定时器 · 动态时钟
时间定时器
24
内存管理基础
页分配 · slab分配器 · vmalloc/kmalloc · 内存映射 · MMU基础
内存MMU
25
进程管理
task_struct · 进程创建 · 调度器CFS · 进程状态 · 命名空间
进程调度
26
文件系统
VFS层 · ext4结构 · procfs · sysfs · debugfs · 简单文件系统
文件系统VFS
27
网络协议栈
sk_buff · 网络设备驱动 · NAPI · Netfilter · 套接字编程
网络协议栈
28
设备树 (Device Tree)
DTS语法 · 编译DTC · 设备树绑定 · platform驱动 · OF API
设备树DTS
29
内核测试
KUnit · kselftest · LTP · Fuzz(syzkaller) · 回归测试
测试KUnit
30
贡献内核社区
克隆主线 · 创建分支 · 编写补丁 · 发送补丁 · 社区礼仪 · 维护者
社区贡献