内核启动流程深度追踪
📚 共计 30 章节
第01章
启动前的准备
BIOS/UEFI固件初始化、硬件自检(POST)、引导设备选择
固件
POST
引导顺序
第02章
引导加载程序(Bootloader)阶段
GRUB2的stage1、stage1.5、stage2加载过程详解
GRUB2
stage
MBR
第03章
内核解压与重定位
vmlinuz与zImage的区别、自解压代码(head.S)的执行流程
vmlinuz
zImage
head.S
第04章
进入保护模式
从实模式到保护模式的切换、GDT/LDT的初始化、A20地址线的开启
保护模式
GDT
A20
第05章
内核入口点(start_kernel)
架构相关初始化(setup_arch)、控制台初始化(console_init)
start_kernel
setup_arch
console
第06章
内存管理初始化(mm_init)
页表建立、伙伴系统初始化、slab分配器初始化
页表
伙伴系统
slab
第07章
中断与异常处理初始化(trap_init)
IDT表建立、系统调用入口(system_call)设置
IDT
system_call
中断
第08章
时间子系统初始化(time_init)
时钟源选择、jiffies与tick的建立、高精度定时器(hrtimer)初始化
jiffies
tick
hrtimer
第09章
进程调度器初始化(sched_init)
进程描述符(task_struct)管理、调度类(CFS/RT)初始化
task_struct
CFS
RT
第10章
内核线程与init进程
内核线程创建(kthreadd)、用户态init进程的启动(do_initcalls)
kthreadd
init
do_initcalls
第11章
设备驱动初始化(do_initcalls)
模块加载顺序、built-in驱动与模块化驱动的初始化
驱动
built-in
模块
第12章
文件系统初始化(VFS)
根文件系统挂载、sysfs与procfs的建立、devtmpfs设备节点创建
VFS
sysfs
procfs
第13章
网络协议栈初始化
socket层、TCP/IP协议栈、网络设备驱动的注册与初始化
TCP/IP
socket
网卡驱动
第14章
系统调用初始化
系统调用表(sys_call_table)的填充、vsyscall与vdso机制
sys_call_table
vsyscall
vdso
第15章
安全模块初始化
LSM(Linux Security Module)框架、SELinux/AppArmor的加载时机
LSM
SELinux
AppArmor
第16章
电源管理初始化
suspend/resume流程、cpuidle与cpufreq子系统的初始化
suspend
cpuidle
cpufreq
第17章
虚拟化支持初始化
KVM模块加载、Hypervisor检测、VMX/SVM的初始化
KVM
VMX
SVM
第18章
内核日志系统
printk与dmesg的实现、环形缓冲区(ring buffer)的初始化
printk
dmesg
ring buffer
第19章
内核调试接口
kgdb、kprobes、ftrace的初始化与使用
kgdb
kprobes
ftrace
第20章
内核模块加载机制
module_init与late_initcall的区别、模块依赖解析
module_init
late_initcall
依赖
第21章
内核启动参数解析
__setup()与early_param()的处理流程、内核命令行参数传递
__setup
early_param
cmdline
第22章
内存压缩与交换
zswap/zram的初始化、swap分区的激活时机
zswap
zram
swap
第23章
容器与命名空间初始化
cgroups、namespace的初始化、Docker底层支持
cgroups
namespace
Docker
第24章
内核同步机制初始化
spinlock、mutex、rwlock、RCU的初始化与自检
spinlock
mutex
RCU
第25章
内核性能分析工具初始化
perf_event、tracepoint、eBPF的初始化流程
perf
tracepoint
eBPF
第26章
内核错误处理
panic、oops、BUG_ON的处理流程、kdump与crash dump机制
panic
oops
kdump
第27章
多核启动(SMP)
AP(Application Processor)的唤醒、CPU hotplug的初始化
SMP
AP
CPU hotplug
第28章
内核启动时间优化
bootgraph分析、initcall_debug的使用、快速启动技巧
bootgraph
initcall_debug
优化
第29章
嵌入式系统启动差异
u-boot与内核启动、设备树(DTB)的解析与传递
u-boot
DTB
嵌入式
第30章
内核启动故障排查
常见启动失败原因分析、initramfs救援模式、内核panic调试
故障排查
initramfs
panic