摘要:本文深入解析现代 Linux 发行版(基于 GRUB2 + systemd)从按下电源键到登录界面的完整启动流程,涵盖 BIOS/UEFI、引导加载程序、内核初始化及 systemd 启动四个核心阶段。
一、启动流程总览
现代 Linux 系统的启动过程可分为四个连贯阶段,各阶段环环相扣,任何一环出错都会导致启动失败。

二、第一阶段:BIOS/UEFI 初始化与 POST 自检
2.1 触发条件
启动流程由以下两种操作触发:
- 冷启动:用户按下机箱电源按钮(系统处于关机状态)
- 热启动 :通过 GUI 界面或
reboot命令重新启动系统
2.2 POST(Power-On Self Test)硬件自检
系统通电后,BIOS(Basic Input/Output System)或 UEFI(Unified Extensible Firmware Interface)固件首先接管控制权,执行全面的硬件完整性检查。
POST 检测的核心硬件包括:
| 检测项目 | 说明 |
|---|---|
| CPU | 处理器状态及基本功能验证 |
| RAM | 内存模块存在性与读写测试 |
| HDD/SSD | 硬盘/固态硬盘连接状态与可访问性 |
| 键盘/USB 控制器 | 输入设备响应检测 |
| 显卡 | 显示输出能力验证 |
自检结果处理:
- 硬件故障:屏幕显示错误信息(如 "Hard Disk Error"),或在严重故障(如内存缺失)时通过蜂鸣器发出告警音
- 硬件正常 :自检通过,BIOS/UEFI 根据预设的 Boot Sequence(启动顺序) 查找可引导设备
2.3 定位引导程序
BIOS/UEFI 发现可引导设备后,读取该设备的启动扇区:
- 传统 BIOS :读取磁盘第一个扇区的 MBR(Master Boot Record,主引导记录,512 字节)
- UEFI 模式 :读取 GPT(GUID Partition Table) 分区表中的 EFI 系统分区
随后从中定位并加载 Bootloader(引导加载程序,如 GRUB2)。
三、第二阶段:GRUB2 引导加载程序
3.1 引导程序演进
Linux 生态中主要出现过三代引导程序:
| 引导程序 | 状态 | 说明 |
|---|---|---|
| LILO | 已淘汰 | Linux Loader,早期简单引导程序 |
| GRUB (Legacy) | 已淘汰 | Grand Unified Bootloader 第一代 |
| GRUB2 | 当前主流 | 现代发行版标准配置,功能完善 |
3.2 GRUB2 核心功能
GRUB2 被加载到主内存(RAM)后,提供两大核心能力:
1. 操作系统/内核选择菜单
- 列出系统中已安装的多个操作系统(双系统场景)
- 展示不同版本的 Linux 内核(系统升级后会保留历史内核)
- 支持通过键盘快捷键(如
e键)临时编辑内核启动参数
2. 加载内核与临时文件系统
选择内核版本

用户选定启动项后,GRUB2 执行以下操作:
- 将压缩的 Linux 内核镜像加载到内存并解压
- 加载 initrd(Initial RAM Disk) 或 initramfs(Initial RAM Filesystem)
- 两者均为临时的内存文件系统
- initramfs 是 initrd 的现代化继任者,效率更高
- 包含启动必需的驱动模块和工具(如磁盘控制器驱动、文件系统驱动)
- 执行 linuxrc 脚本,探测硬盘及大容量存储设备,加载相应内核模块
配置文件路径 :
/boot/grub2/grub.cfg(由grub2-mkconfig工具自动生成,不建议手动编辑)
四、第三阶段:内核初始化
内核初始化过程

4.1 内核解压与接管
内核是 Linux 系统的核心枢纽,负责硬件资源管理与进程调度。GRUB2 加载内核后:
- 内核从压缩状态(通常为
bzImage格式)自解压 - 初始化内存管理、进程调度等核心子系统
4.2 挂载根文件系统与启动 init
内核阶段的关键任务链条如下:
┌─────────────────┐ ┌─────────────────────┐ ┌──────────────────┐
│ 基于 initrd/ │ --> │ 挂载真实根文件系统 │ --> │ 启动 init 进程 │
│ initramfs 中的 │ │ (挂载点 "/" ) │ │ (PID = 1) │
│ linuxrc 探测结果│ │ │ │ │
└─────────────────┘ └─────────────────────┘ └──────────────────┘
关键概念说明:
- 根文件系统(/):用户可见的所有目录与文件的顶层挂载点,是系统运行的基础
- init 进程 :内核启动的第一个用户空间进程,进程标识符固定为 PID 1
- 派生关系:系统中所有其他守护进程均由 init 进程直接或间接派生
4.3 补充:/etc/fstab 与分区挂载
init 进程启动后,会根据 /etc/fstab 文件配置,自动挂载系统中定义的其他磁盘分区(如 /home、/var 等)。
五、第四阶段:systemd 系统初始化
5.1 systemd 的定位
systemd 是现代 Linux 发行版中 SysVinit 的替代方案,作为 所有 Linux 进程的父进程(PID 1),承担以下职责:
- 管理系统服务的启动、停止与依赖关系
- 控制文件系统挂载点
- 设置系统运行目标(Target)
5.2 运行目标(Target)详解
systemd 使用 target 概念替代传统 SysVinit 的 runlevel(运行级别) ,通过 /etc/systemd/system/default.target 文件定义系统默认启动状态。
| systemd Target | 对应旧 Runlevel | 功能描述 |
|---|---|---|
poweroff.target |
0 | 关闭系统电源 |
rescue.target |
1 | 救援模式(单用户 Shell,最小化系统) |
multi-user.target |
2, 3, 4 | 多用户文本模式(无图形界面,服务器默认) |
graphical.target |
5 | 图形化多用户模式(桌面工作站默认,含网络服务) |
reboot.target |
6 | 重新启动系统 |
5.3 常用管理命令
bash
# 查看当前系统目标
systemctl get-default
# 切换运行目标(示例:切换到多用户文本模式)
sudo systemctl isolate multi-user.target
# 设置默认启动目标(永久生效)
sudo systemctl set-default graphical.target
# 传统 init 命令兼容(仍需 sudo 权限)
sudo init 3 # 切换到文本模式
sudo init 6 # 重启系统
sudo init 0 # 关机
5.4 启动完成
systemd 完成以下工作后,启动流程结束:
- 按依赖关系启动所有必要的守护进程(网络服务、日志服务、显示管理器等)
- 达到预设的 target 状态
- 系统呈现登录界面(图形化桌面或命令行提示符),等待用户认证
六、全流程回顾
用户操作 固件/软件层 核心动作
┌──────────┐ ┌─────────────┐ ┌────────────────────┐
│ 按下电源 │ ----> │ BIOS/UEFI │ ----> │ POST 硬件自检 │
└──────────┘ └─────────────┘ │ 定位启动设备 │
└─────────┬──────────┘
│
┌─────────▼──────────┐
│ 读取 MBR/GPT │
│ 加载 GRUB2 │
└─────────┬──────────┘
│
┌─────────▼──────────┐
│ GRUB2 菜单 │
│ 加载内核 + initramfs │
└─────────┬──────────┘
│
┌─────────▼──────────┐
│ 内核自解压 │
│ 挂载真实根文件系统 │
│ 启动 init (PID 1) │
└─────────┬──────────┘
│
┌─────────▼──────────┐
│ systemd 接管 │
│ 启动守护进程 │
│ 进入 target 目标 │
└─────────┬──────────┘
│
┌─────────▼──────────┐
│ 登录界面/Shell 提示符 │
│ 系统就绪 │
└────────────────────┘
七、常见问题排查速查
| 故障现象 | 可能原因 | 排查阶段 |
|---|---|---|
| 开机黑屏无反应,风扇不转 | 电源故障或主板短路 | 第一阶段前 |
| 开机蜂鸣报警 | 内存条松动或损坏 | POST 阶段 |
| 提示 "No bootable device" | 硬盘故障或启动顺序错误 | BIOS/UEFI 阶段 |
| 进入 GRUB Rescue 命令行 | MBR 损坏或分区表错误 | GRUB2 阶段 |
| 内核 Panic(内核恐慌) | 根文件系统损坏或内核缺失 | 内核初始化阶段 |
| 启动卡在某一服务 | systemd 服务依赖死锁 | systemd 阶段 |
参考资料
-
GRUB2 官方文档 - GNU GRUB Manual 2.12 - GNU 项目官方维护的 GRUB2 完整手册,涵盖安装配置与故障排查
-
UEFI 规范 - Unified Extensible Firmware Interface Specification - UEFI 论坛发布的固件接口标准规范(当前版本 2.10)
-
《鸟哥的 Linux 私房菜》基础学习篇 - 台湾资深 Linux 教育者鸟哥编写的经典中文教程,第 19 章详细讲解开机流程与引导加载程序
版本说明:本文基于 GRUB2 + systemd 架构编写,适用于 RHEL/CentOS 7+、Ubuntu 15.04+、Debian 8+、Fedora 等现代发行版。传统 SysVinit 或 GRUB Legacy 系统的启动流程略有差异。