CentOS 7 系统启动流程与常见故障排查全解析
前言
Linux 系统的引导过程是操作系统运行的基础,只有清晰掌握这一流程,才能在系统启动出现故障时快速定位问题、高效解决。本文将详细拆解 CentOS 7 的完整启动流程,深入解析系统初始化核心组件,并针对常见的启动类故障提供 step-by-step 排查方案,适用于运维人员日常维护与故障应急处理。
一、CentOS 7 完整启动流程
CentOS 7 的启动过程遵循固定的逻辑顺序,从硬件自检到用户登录,每一步都承担着关键的初始化任务,具体流程如下:
1. 开机自检:初始化硬件
按下电源后,主板上的 BIOS 或 UEFI 程序首先启动,对 CPU、内存、显卡等核心硬件进行检测。若硬件存在故障,系统会直接中断启动;检测通过后,按照 BIOS/UEFI 中预设的启动顺序移交系统控制权。
2. 查找启动介质
根据 BIOS/UEFI 设定的第一启动项,选择引导介质(硬盘、光盘、U 盘或网络启动),系统将从该介质中读取引导相关文件。
3. 引导加载器:grub2 启动引导阶段
确定引导介质后,系统装载 Bootloader(CentOS 7 默认使用 grub2)。MBR 引导记录的前 446 字节即为 grub2 的核心部分,其主要功能是引导用户选择系统或内核版本,并将选定的内核加载到内存中解压,随后移交系统控制权给内核。
grub2 包含两部分关键组件:
- MBR 中的 446 字节:负责引导启动介质中的 grub 主体文件
- 主体文件目录:/boot/grub2,核心配置文件包括 /etc/grub.d/、/etc/default/grub、/boot/grub2/grub.cfg
4. 加载内核和硬件驱动
用户选择内核版本(或超时后自动选择)后,grub2 将内核与 initramfs(虚拟磁盘,本质是 GZIP 压缩的 cpio 归档文件)加载至内存。initramfs 包含动态内核模块、初始化脚本及大量硬件驱动,CentOS 7 中其本身就是一个完整的迷你可用系统。
5. 内核加载第一个程序
内核初始化硬件后,通过 initramfs 找到对应的硬件驱动,执行 PID 为 1 的 /sbin/init 命令(系统最高进程)。在 CentOS 7 中,init 是 /lib/systemd/systemd 的软连接,同时启动 udev 进程自动创建硬件设备文件。
systemd(即 init 进程)会执行 initramfs 中的 initrd.target 系统初始化服务,完成实际根分区(/)的挂载,并切换至该根分区,将 systemd 重新安装到真实根分区中。
6. systemd 执行默认 target 配置
CentOS 7 的 "运行级别" 本质是兼容旧系统的概念,每个运行级别对应特定的 target 软连接,默认启动级别由 /etc/systemd/system/default.target 指定,对应关系如下:
- 0:runlevel0.target → poweroff.target(关机)
- 1:runlevel1.target → rescue.target(单用户字符界面,不可联网)
- 2:r


322

被折叠的 条评论
为什么被折叠?



