2025年12月05日/ 浏览 19
标题:Linux启动流程深度剖析
关键词:Linux启动、BIOS/UEFI、GRUB、内核初始化、systemd
描述:本文详细解析从按下电源键到系统登录的完整Linux启动流程,涵盖硬件初始化、引导加载程序、内核启动及用户空间初始化等关键环节,并附流程示意图。
正文:
当我们按下电源键启动Linux系统时,背后隐藏着一系列精密的启动流程。下面让我们深入探索这个过程的每个关键阶段:
BIOS/UEFI阶段
通电瞬间,主板固件(BIOS或UEFI)率先接管:
引导设备选择
固件读取存储设备的MBR/GPT分区表,定位到包含引导程序的磁盘分区:bash
sudo fdisk -l
Disk /dev/sda: 500GB, 500107862016 bytes
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 1050623 1048576 512M ef EFI System
GRUB引导加载器
现代Linux发行版主要使用GRUB2作为引导程序:
menuentry ‘Ubuntu’ {
linux /boot/vmlinuz-5.15.0-76-generic root=/dev/sda2
initrd /boot/initrd.img-5.15.0-76-generic
}
内核加载
GRUB将以下组件加载到内存:
内核解压与初始化
内核接管控制权后:
initramfs的作用
这个临时文件系统包含关键组件:
init进程启动
内核启动第一个用户空间进程(PID 1):
systemd启动流程
mermaid
graph TD
A[systemd] --> B[default.target]
B --> C[local-fs.target]
B --> D[swap.target]
B --> E[network.target]
E --> F[sshd.service]
E --> G[nginx.service]
systemd按依赖关系并行启动服务:
登录管理器启动
图形环境通过显示管理器提供登录界面:
用户会话初始化
登录成功后启动完整用户环境:
整个启动流程通常在数秒内完成,但其间经历了从硬件初始化到用户空间构建的复杂过程。理解这些机制对于系统故障排查、性能优化及深度定制至关重要。