Linux系统的启动过程是一个多阶段的复杂流程,涉及硬件初始化、引导加载、内核启动和用户空间初始化等关键步骤。以下是详细的阶段划分及说明:
GRUB Legacy
等引导程序。GRUB2
或systemd-boot
等UEFI应用。/boot/grub2/grub.cfg
)。initramfs
(临时根文件系统)加载必要的驱动(如磁盘、LVM、加密模块),最终挂载真正的根文件系统(如/dev/sda1
)。/sbin/init
(传统SysVinit)或systemd
(现代发行版默认)。multi-user.target
或graphical.target
)。systemd
管理。/etc/fstab
)。/etc/inittab
定义的运行级别(如runlevel 3
或5
)。/etc/rc.d/
中的启动脚本(符号链接到S*
和K*
)。getty
或agetty
,显示登录提示(tty1-tty6)。阶段 | 关键文件/工具 | 说明 |
---|---|---|
BIOS/UEFI | /boot/efi/ (ESP分区) |
UEFI固件读取的引导文件 |
GRUB2 | /boot/grub2/grub.cfg |
引导菜单配置 |
Kernel | /boot/vmlinuz-* , initramfs-* |
内核与临时根文件系统 |
Systemd | /etc/systemd/system/default.target |
默认启动目标 |
SysVinit | /etc/inittab , /etc/rc.d/ |
运行级别和启动脚本 |
grub-install
。dmesg
或journalctl -k
。init=/bin/bash
进入救援模式。通过理解这些阶段,可以高效诊断启动问题(如服务依赖失败、文件系统挂载错误)或优化启动速度(如禁用冗余服务)。不同发行版(RHEL、Ubuntu、Arch)细节可能略有差异,但核心流程一致。