从零构建Linux内核开发环境

📚 共计 30 章节
01
Linux内核概述
什么是Linux内核 · 版本号命名规则 · 源码目录结构 · 开发特点与挑战
基础概念
02
开发环境搭建
虚拟机安装 · Ubuntu系统配置 · gcc/make/git/vim 等工具
环境工具链
03
内核源码获取
kernel.org下载 · git克隆主线仓库 · GPG签名校验 · 稳定版本选择
源码版本控制
04
内核配置系统
Kconfig语法 · make menuconfig · 配置选项详解 · 保存/加载配置
配置Kconfig
05
内核编译与安装
make -j / V=1 · 编译内核与模块 · install & modules_install · 更新grub
编译部署
06
内核模块基础
模块概念 · 与应用程序区别 · init/exit生命周期 · MODULE_LICENSE
模块基础
07
编写第一个内核模块
Hello World · Makefile · insmod/lsmod/modinfo · rmmod
实践入门
08
模块参数与导出符号
module_param · 参数类型/权限 · EXPORT_SYMBOL · 跨模块调用
参数符号
09
内核编程基础
内核空间与用户空间 · API规范 · kmalloc/kfree · printk/pr_info
编程内存
10
字符设备驱动 (上)
设备号概念 · alloc_chrdev_region · cdev结构体 · file_operations
驱动字符设备
11
字符设备驱动 (下)
open/release/read/write · copy_to/from_user · 设备节点 · 测试
驱动实现
12
并发与同步
内核抢占 · spinlock · mutex · 读写锁 (rwlock)
并发同步
13
内核定时器
jiffies/HZ · timer_list · setup/mod/del_timer · hrtimer
定时器时间
14
工作队列与tasklet
中断上下文 · tasklet · workqueue · 选择策略
底半部异步
15
中断处理 (上)
中断概念/号 · request_irq · 处理函数规范 · 顶/底半部
中断硬中断
16
中断处理 (下)
中断共享 · 线程化中断 · 上下文注意事项 · /proc/interrupts
中断调试
17
内存管理基础
页与区 · alloc_pages · slab/kmem_cache · vmalloc/ioremap
内存分配
18
进程管理
task_struct · fork/clone · 进程状态与切换 · CFS调度器
进程调度
19
文件系统基础
VFS架构 · super_block · inode · dentry · file对象
VFS文件系统
20
proc文件系统
procfs概念 · proc_create · 读写实现 · seq_file接口
proc虚拟文件
21
sysfs与设备模型
kobject/kset · sysfs · bus/device/driver · uevent热插拔
设备模型sysfs
22
平台设备驱动
platform总线 · platform_device · platform_driver · 设备树匹配
平台驱动
23
设备树 (Device Tree)
dts/dtsi语法 · 节点属性 · reg/interrupts · dtc编译 · 匹配过程
设备树DTS
24
I2C子系统
I2C协议 · 核心层与适配器 · i2c_driver · client与数据传输
I2C总线
25
SPI子系统
SPI协议 · 核心层与控制器 · spi_driver · spi_message传输
SPI总线
26
USB子系统
USB架构 · usb_device/interface · 驱动框架 · URB传输
USB驱动
27
网络设备驱动
网络协议栈 · net_device · 注册/注销 · 数据包收发
网络驱动
28
内核调试技术 (上)
printk日志 · 动态调试 · Oops/panic · gdb调试内核
调试printk
29
内核调试技术 (下)
ftrace · perf · kgdb双机 · KASAN/SLUB debug
调试性能
30
内核补丁与社区
编码风格 · git format-patch · 提交补丁 · LKML礼仪
社区补丁