深入解析:红帽企业 Linux 9 启动过程详解:从按下电源到登录提示符

前言:

本文将用通俗易懂的方式解析 RHEL 9 的完整启动流程,帮你彻底理解每个环节的作用和配置方法。


一、启动过程核心阶段概览

红帽企业 Linux 9 的启动过程可以概括为以下五个关键阶段:

  1. 硬件初始化 → 2. 启动加载器 → 3. 内核加载 → 4. initramfs 阶段 → 5. systemd 接管

下面我们逐一拆解每个阶段。


二、详细启动流程解析

阶段 1:硬件初始化 (BIOS/UEFI)

核心概念:系统固件

  • 作用:电脑通电后运行的第一个程序,负责硬件自检和初始化

  • 类型

    • BIOS:传统模式,使用 MBR 分区表

    • UEFI:现代模式,使用 GPT 分区表,支持安全启动

  • 关键任务

    • 执行 POST(开机自检)

    • 初始化硬件设备

    • 搜索可启动设备

配置方法:启动时按 F2 或指定键进入配置界面


阶段 2:启动加载器 (GRUB2)

核心概念:GRUB2 (GRand Unified Bootloader version 2)

  • 作用:操作系统"引路人",负责加载内核和 initramfs

  • 配置文件路径

    • BIOS 系统:/boot/grub2/grub.cfg

    • UEFI 系统:/boot/efi/EFI/redhat/grub.cfg

  • 配置生成

    # 编辑配置后重新生成
    grub2-mkconfig -o /boot/grub2/grub.cfg

⚠️ 重要提醒:UEFI 系统不要直接使用 grub2-install,会破坏安全启动签名!


阶段 3:内核与 initramfs 加载

核心概念

  • 内核 (Kernel):操作系统核心,直接管理硬件资源

  • initramfs:临时内存文件系统,包含启动所需的所有驱动和工具

initramfs 关键作用

  • 提供根文件系统所需的硬件驱动

  • 包含 systemd 单元和初始化脚本

  • 挂载真正的根文件系统

管理命令

# 查看 initramfs 内容
lsinitrd /boot/initramfs-$(uname -r).img
# 重新生成 initramfs
dracut -f

阶段 4:systemd 接管与根切换

关键步骤

  1. 内核执行 /sbin/init → 指向 systemd (PID 1)

  2. initramfs 中的 systemd 执行 initrd.target

  3. 挂载真正的根文件系统到 /sysroot

  4. 根切换:从 initramfs 切换到硬盘上的根文件系统

  5. 重新执行 systemd(硬盘上的版本)

配置点

  • 根文件系统挂载:/etc/fstab

  • 内核参数:通过 GRUB2 配置传递


阶段 5:目标启动与系统就绪

核心概念:systemd 目标 (target)

  • 定义:一组系统服务的集合,定义系统应达到的状态

常用目标

目标用途适用场景
graphical.target图形界面模式桌面环境
multi-user.target多用户文本模式服务器
rescue.target救援模式系统修复
emergency.target紧急模式严重故障修复

目标管理命令

# 查看当前目标
systemctl get-default
# 设置默认目标
systemctl set-default multi-user.target
# 运行时切换目标
systemctl isolate graphical.target
# 查看目标依赖关系
systemctl list-dependencies graphical.target

三、启动时特殊操作

临时选择启动目标

  1. 启动时在 GRUB 菜单按 e 编辑

  2. 在 linux 行末尾添加:systemd.unit=rescue.target

  3. 按 Ctrl+x 启动

关机与重启命令

# 关机
systemctl poweroff
# 或简写
poweroff
# 重启
systemctl reboot
# 或简写
reboot
# 系统挂起(不断电)
systemctl halt

四、启动过程框图

text

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   硬件初始化      │    │   启动加载器     │    │   内核加载       │
│                 │    │                 │    │                 │
│ • BIOS/UEFI     │───▶│ • GRUB2         │───▶│ • 内核          │
│ • POST自检      │    │ • 菜单选择       │    │ • initramfs    │
│ • 硬件初始化     │    │ • 加载内核       │    │ • 驱动加载      │
└─────────────────┘    └─────────────────┘    └─────────────────┘
                                                            │
                                                            ▼
┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   systemd接管    │    │   目标启动       │    │   系统就绪       │
│                 │    │                 │    │                 │
│ • PID 1进程     │───▶│ • 默认目标       │───▶│ • 登录提示符     │
│ • 根文件系统切换 │    │ • 服务启动       │    │ • 用户环境       │
│ • 服务管理       │    │ • 依赖解析       │    │ • 应用程序       │
└─────────────────┘    └─────────────────┘    └─────────────────┘

五、故障排查要点

  1. GRUB 问题:检查 /boot/grub2/grub.cfg 配置

  2. 内核参数:通过 GRUB 编辑临时调试

  3. initramfs 问题:使用 dracut 重新生成

  4. 启动目标问题:使用救援模式或紧急模式修复

理解这个完整的启动链条,对于系统运维和故障排查至关重要。每个环节都有相应的配置文件和调试方法,掌握它们就能从容应对各种启动问题。

posted @ 2025-12-09 13:44  gccbuaa  阅读(4)  评论(0)    收藏  举报