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

122 lines
2.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 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 常由以下链接决定:
```shell
/etc/systemd/system/default.target
```
## 4、启动阶段可能涉及的内容
- 读取内核参数
- 挂载根文件系统
- 处理 `/etc/fstab`
- 启动 `rc.local`(如果系统启用)
- 拉起登录服务 `getty`
- 启动图形相关服务
## 5、分析启动耗时
### 5.1 `systemd-analyze`
```shell
systemd-analyze
```
查看启动耗时概览。
### 5.2 生成启动时序图
```shell
systemd-analyze plot > boot.html
```
生成 HTML 图,便于分析系统在启动阶段各服务耗时和依赖关系。
## 6、排障思路
### 6.1 系统卡在引导阶段
优先判断:
- 是 BIOS/UEFI 阶段问题
- 是 GRUB 问题
- 是内核启动问题
- 还是 `systemd` / 服务启动问题
### 6.2 系统启动慢
优先使用:
```shell
systemd-analyze
systemd-analyze blame
```
### 6.3 服务没有自动启动
重点检查:
- 默认 target 是否正确
- 服务是否已 `enable`
- 依赖关系是否满足
## 7、小结
- Linux 启动链路大致是BIOS/UEFI → 引导程序 → 内核/initramfs → 根文件系统 → systemd → target / 服务
- `multi-user.target``graphical.target` 是最常见的启动目标
- `systemd-analyze` 是分析启动耗时的高频工具
- 明确系统卡在哪个阶段,是启动排障的第一步