wiki/运维/Linux/笔记/28.系统引导顺序.md
2026-04-08 19:40:00 +08:00

2.7 KiB
Raw Permalink Blame History

1、系统引导顺序概览

Linux 系统从开机到进入可登录状态,大致会经历一条固定链路。

理解这条链路后,排查“为什么机器起不来”“为什么服务没有自动启动”“为什么卡在某个阶段”会更有方向。

2、典型启动流程

2.1 固件初始化

  • BIOS 或 UEFI 上电初始化
  • 执行 POST开机自检

2.2 选择启动设备

固件根据启动顺序选择硬盘、U 盘、网络等启动介质。

2.3 引导装载程序

常见是 GRUB负责加载内核和引导参数。

2.4 加载内核与 initramfs

  • 加载 Linux 内核
  • 加载 initramfs 中的临时驱动和初始化环境

2.5 内核初始化

内核初始化硬件、内存、驱动、调度器等基础能力。

2.6 切换到真实根文件系统

系统从 initramfs 的临时根切换到磁盘上的真实根目录。

2.7 启动 systemd

内核启动完成后,交给 PID 1也就是 systemd 继续完成用户空间初始化。

2.8 加载默认 target

systemd 根据默认 target 启动系统服务、登录服务以及图形服务(如果有)。

3、常见 target 理解

3.1 multi-user.target

类似传统的多用户文本模式,适合服务器环境。

3.2 graphical.target

multi-user.target 基础上增加图形界面相关服务。

3.3 默认 target

系统默认 target 常由以下链接决定:

/etc/systemd/system/default.target

4、启动阶段可能涉及的内容

  • 读取内核参数
  • 挂载根文件系统
  • 处理 /etc/fstab
  • 启动 rc.local(如果系统启用)
  • 拉起登录服务 getty
  • 启动图形相关服务

5、分析启动耗时

5.1 systemd-analyze

systemd-analyze

查看启动耗时概览。

5.2 生成启动时序图

systemd-analyze plot > boot.html

生成 HTML 图,便于分析系统在启动阶段各服务耗时和依赖关系。

6、排障思路

6.1 系统卡在引导阶段

优先判断:

  • 是 BIOS/UEFI 阶段问题
  • 是 GRUB 问题
  • 是内核启动问题
  • 还是 systemd / 服务启动问题

6.2 系统启动慢

优先使用:

systemd-analyze
systemd-analyze blame

6.3 服务没有自动启动

重点检查:

  • 默认 target 是否正确
  • 服务是否已 enable
  • 依赖关系是否满足

7、小结

  • Linux 启动链路大致是BIOS/UEFI → 引导程序 → 内核/initramfs → 根文件系统 → systemd → target / 服务
  • multi-user.targetgraphical.target 是最常见的启动目标
  • systemd-analyze 是分析启动耗时的高频工具
  • 明确系统卡在哪个阶段,是启动排障的第一步