Linux系统标准开机引导流程为BIOS/UEFI→GRUB2→Kernel→initramfs→systemd五阶串行控制权移交:BIOS/UEFI执行POST并移交控制权;GRUB2加载内核与initramfs;Kernel初始化硬件但依赖initramfs挂载真实根;systemd作为PID=1进程启动服务与登录界面。

Linux 系统的标准开机引导流程不是一串抽象概念,而是一条有明确控制权移交顺序的执行链。要真正剖析它,关键不是背阶段名称,而是理解每个环节“做什么、为什么必须做、出错时表现为何”。下面从四个核心维度展开,帮你建立可排查、可验证的认知框架。
看清五阶移交链:BIOS/UEFI → GRUB2 → Kernel → initramfs → systemd
这不是并列步骤,而是严格串行的控制权交接:
-
BIOS/UEFI 不是“加载”出来的系统,它是主板固件,上电即运行,只干三件事:加电自检(POST)、按启动顺序找设备、把控制权交给该设备开头的引导代码(如硬盘 MBR 或 EFI 分区里的
grubx64.efi) -
GRUB2 分两段加载:MBR(或 EFI 文件)里只有极小的 stage1,它靠内置文件系统驱动找到
/boot/grub2/下的 stage2(即完整 GRUB),再读取配置(grub.cfg),最终加载内核镜像(vmlinuz)和初始内存盘(initramfs.img)到内存 - Kernel 被 GRUB 启动后,先解压自身、初始化 CPU/内存/中断,但此时还无法访问硬盘上的根文件系统——因为 SATA/NVMe/LVM/加密模块都没加载
- initramfs 就是解决这个问题的临时根环境:它是一个压缩的 cpio 归档,解压后在内存中形成一个微型 Linux 系统,专门用来加载硬盘控制器、RAID、LVM、LUKS 解密等关键驱动,再挂载真正的根分区
-
systemd 是内核启动的第一个用户空间进程(PID 1),它接管后才开始并行启动服务、挂载其余文件系统、拉起登录管理器(
gdm、getty等)
盯住三个关键文件位置与作用
实操中,这些路径是你定位问题的第一现场:
-
/boot/grub2/grub.cfg(或/boot/efi/EFI/fedora/grub.cfg):GRUB 的实际菜单配置,由grub2-mkconfig生成。修改内核参数、默认启动项、超时时间都改这里或其模板(/etc/default/grub) -
/boot/vmlinuz-$(uname -r):压缩的内核镜像,GRUB 直接加载它;initramfs-$(uname -r).img必须与之版本严格匹配,否则内核找不到根设备 -
/etc/fstab和/etc/crypttab:systemd 挂载非根文件系统、解密 LUKS 分区的依据;若写错 UUID 或密码错误,systemd 会卡在 “A start job is running for /dev/mapper/xxx”
识别各阶段典型失败现象
启动卡住时,屏幕文字就是诊断线索:
- 黑屏/无任何输出 → BIOS/UEFI 阶段失败(硬件故障、启动项禁用、Secure Boot 冲突)
- 出现
grub>提示符 → GRUB stage2 找不到或损坏(/boot分区被误删、文件系统损坏) - 卡在
dracut:开头或反复提示 “Failed to mount root filesystem” → initramfs 阶段失败(驱动缺失、根设备 UUID 错、LUKS 密码输错) - 停在
Started Getty on tty1或无限循环重启 → systemd 启动服务失败(如dbus、systemd-logind崩溃,或/etc/fstab中某一行挂载失败)
掌握两个最小干预手段
无需重装系统,就能快速验证和修复:
-
GRUB 菜单临时编辑:启动时按
e进入编辑模式,在linux行末尾加rd.debug systemd.log_level=debug,可看到 initramfs 和 systemd 的详细日志;加init=/bin/bash可跳过 systemd 直接获得 root shell -
重建 initramfs:若升级内核后无法启动,很可能新内核的 initramfs 没生成。在能进入系统的环境下运行:
dracut -f -v(RHEL/CentOS/Fedora)或update-initramfs -u -k all(Debian/Ubuntu)


















