一、Linux系统启动流程
| 阶段 | 关键动作 | 说明 |
|---|
| 1. 开机自检 | BIOS/UEFI 初始化硬件 | 检测CPU、内存、磁盘等基础硬件。 |
| 2. MBR引导 | 从硬盘MBR读取引导程序(GRUB2) | MBR(主引导记录)位于磁盘第一个扇区,存储GRUB2引导程序。 |
| 3. GRUB菜单 | 加载 /boot/grub2/grub.cfg 显示引导菜单 | 用户可选择不同内核或进入救援模式。 |
| 4. 加载内核 | 载入Linux内核文件(如 vmlinuz-x.x.x) | 内核文件位于 /boot 目录。 |
| 5. 内核初始化 | 内核解压、初始化任务调度/内存管理/驱动加载等 | 建立内核运行环境,控制权从GRUB移交内核。 |
| 6. 启动systemd | 执行首个进程 systemd(PID=1) | 取代传统init进程,负责管理系统服务。 |
| 7. 设置运行级别 | 读取 /etc/systemd/system/default.target | 根据链接文件确定系统启动目标(等价于运行级别)。 |
| 8. 启动登录界面 | 加载对应目标的服务,启动登录管理器(如GDM) | 用户通过图形或命令行登录系统。 |
简化流程:开机自检 → MBR引导 → GRUB菜单 → 加载内核 → 运行systemd。
二、系统运行级别(启动目标)
| 级别 | systemd目标 | 用途 | 操作 |
|---|
0 | poweroff.target | 关机 | systemctl poweroff |
1 | rescue.target | 单用户模式(紧急修复) | systemctl rescue |
2 | multi-user.target | 多用户无网络(极少使用) | |
3 | multi-user.target | 多用户命令行模式 | systemctl isolate multi-user.target |
4 | (保留) | 未定义 | |
5 | graphical.target | 图形化界面 | systemctl isolate graphical.target |
6 | reboot.target | 重启 | systemctl reboot |
常用命令
# 查看默认启动目标
systemctl get-default
# 设置默认启动目标(永久生效)
systemctl set-default multi-user.target # 命令行模式
systemctl set-default graphical.target # 图形模式
# 临时切换目标(重启后失效)
systemctl isolate graphical.target # 临时切换到图形界面
三、故障修复与安全配置
1. 破解root密码
1. 重启后按 `e` 进入GRUB编辑模式
2. 在内核行末尾添加 `rd.break` → 按 `Ctrl+X` 启动
3. 重新挂载根目录并修改密码:
mount -o remount,rw /sysroot
chroot /sysroot
echo "linux123" | passwd --stdin root
4. 重建SELinux标签并退出:
touch /.autorelabel
exit
exit
2. GRUB2加密
# 方法1:明文加密(不安全)
vim /etc/grub.d/00_header
-----------------------------------------
cat << EOF
set superusers="admin"
password admin 123456
EOF
-----------------------------------------
grub2-mkconfig -o /boot/grub2/grub.cfg
# 方法2:密文加密(推荐)
grub2-mkpasswd-pbkdf2 # 生成加密密码(复制输出)
vim /etc/grub.d/00_header
-----------------------------------------
cat << EOF
set superusers="admin"
password_pbkdf2 admin grub.pbkdf2.sha512... # 粘贴密文
EOF
-----------------------------------------
grub2-mkconfig -o /boot/grub2/grub.cfg
注意:加密后需输入用户名/密码才能编辑GRUB菜单。
3. 修复GRUB2引导
# 情况1:GRUB目录被删除(不需救援模式)
grub2-install /dev/sda # 在硬盘上重装引导程序
grub2-mkconfig -o /boot/grub2/grub.cfg # 重新生成配置文件
# 使用安装介质进入救援模式(GRUB损坏或无法启动时)
1. 从安装U盘/光盘启动,选择"Troubleshooting"
2. 选择"Rescue a CentOS system"
3. 按提示选择"1"继续,系统挂载到/mnt/sysroot
4. 执行 chroot /mnt/sysroot 切换至原系统
# 情况2:/boot目录丢失(需救援模式)
chroot /mnt/sysroot # 挂载原系统
mount /dev/cdrom /mnt # 挂载安装镜像
rpm -ivh /mnt/Packages/kernel-*.rpm --force # 强制重装内核
grub2-install /dev/sda # 重装GRUB
grub2-mkconfig > /boot/grub2/grub.cfg # 生成配置
关键命令速查
| 功能 | 命令 |
|---|
| 生成GRUB配置 | grub2-mkconfig -o /boot/grub2/grub.cfg |
| 安装GRUB到磁盘 | grub2-install /dev/sda |
| 强制重置root密码 | `echo “newpass” |
| 修复SELinux标签 | touch /.autorelabel |