Linux 系统应急维护与 root 密码重置

注:本文为 "Linux 系统应急维护" 相关合辑。

图片清晰度受引文原图所限。

略作重排,如有内容异常,请看原文。


1 概述

单用户模式、救援模式、紧急外壳等均为 Linux 系统的应急维护模式,主要应用于系统因错误配置无法正常启动root 管理员密码遗忘的场景。其中,CentOS 7/8 与 RedHat 8 系统的操作逻辑完全通用,无版本差异化适配要求。

各类应急模式的定位如下:

  • 单用户模式:系统本地引导的最小化运行环境,默认以 root 权限登录,无网络服务加载,操作效率高,为优先选择的应急方案。
  • 救援模式:通过系统安装介质(光盘/U盘)引导的独立环境,将本地系统盘作为挂载磁盘使用,适用于单用户模式无法进入的极端故障场景,也可用于系统故障时的文件备份。
  • 紧急外壳:仅挂载根文件系统为只读模式,不启动任何服务,适用于根文件系统损坏、init 进程故障等极端场景。
  • Live 系统:完全独立于本地系统的运行环境,运行在内存中,适用于本地系统无法引导、数据救援、系统修复等场景。

2 Linux 系统运行级别与 systemd 目标说明

2.1 传统运行级别(run-level)

Linux 系统定义了 7 个标准运行级别,各级别对应固定的系统运行状态:

复制代码
0 :关机状态
1 :单用户模式(无密码验证、root 权限、无网络,用于密码重置/系统修复)
2 :多用户模式,无网络服务
3 :完全多用户模式,加载全部网络服务,纯字符界面
4 :系统保留级别,无默认用途
5 :图形化界面模式,加载全部服务
6 :系统重启状态

进入单用户模式需要在实机上操作,且进入单用户模式需要重启服务器,重启后远程连接早已中断,因此无需担心他人远程随意篡改密码。

2.2 systemd 系统目标(target)

现代 Linux 系统采用 systemd 管理服务,运行级别对应 systemd 目标:

  • runlevel1.targetrescue.target:救援目标,挂载所有本地文件系统,启动基本服务
  • runlevel0.targetpoweroff.target:关机目标
  • runlevel6.targetreboot.target:重启目标
  • emergency.target:紧急外壳目标,仅挂载根分区为只读模式

3 单用户模式重置 root 密码(常用方案)

3.1 进入 GRUB 启动项编辑界面

系统开机启动时,停留在 GRUB 引导菜单页面,按下键盘按键 e,进入内核启动参数的临时编辑界面。

3.2 修改内核启动参数(区分 BIOS/UEFI 固件模式)

3.2.1 固件模式判断方法

执行以下命令可在系统正常运行时提前判断固件类型,应急场景可跳过此步骤,直接根据 GRUB 界面显示的指令选择对应修改方式:

bash 复制代码
# 存在此目录 → UEFI 启动;不存在 → BIOS 启动
ls /sys/firmware/efi
3.2.2 内核指令区分
  • BIOS(Legacy)固件环境:内核参数行以 linux16 开头;
  • UEFI 固件环境:内核参数行以 linuxefi 开头(CentOS 8/RHEL 8 等系统常见)。

两种环境的修改逻辑完全一致,仅指令名称不同,二选一配置即可,无需重复配置

3.2.3 配置方式一(Recommend,一步到位)
  1. 将参数行内的只读挂载标识 ro 修改为 读写挂载标识 rw
  2. 在该行的末尾位置 添加启动参数:init=/bin/sh
    • BIOS 示例:linux16 /vmlinuz-3.10.0 rw root=/dev/mapper/centos-root init=/bin/sh
    • UEFI 示例:linuxefi /vmlinuz-4.18.0 rw root=/dev/mapper/centos-root init=/bin/sh
3.2.4 配置方式二(传统兼容方式)
  1. 保留参数行内的 ro 无需修改;
  2. 在该行的末尾位置 添加启动参数:rd.break
    • BIOS 示例:linux16 /vmlinuz-3.10.0 ro root=/dev/mapper/centos-root rd.break
    • UEFI 示例:linuxefi /vmlinuz-4.18.0 ro root=/dev/mapper/centos-root rd.break

补充说明:
ro 代表 root 分区只读挂载,rw 代表 root 分区读写挂载;

修改为 rw 后,进入单用户模式可直接修改系统文件,无需执行二次挂载命令。

3.3 启动单用户模式

内核参数修改完成后,按下组合键 Ctrl + x,系统将基于修改后的参数启动,直接进入单用户模式的 Shell 交互界面。

3.4 单用户模式内的前置环境配置

3.4.1 若选择「配置方式一」(init=/bin/sh

进入界面后,当前 Shell 已默认拥有完整的 root 权限,执行命令 id 可验证权限身份,无需额外操作,直接跳转至 3.5 节修改密码。

3.4.2 若选择「配置方式二」(rd.break

进入界面后,系统默认将 /sysroot 挂载为只读模式,需执行以下命令完成权限与挂载配置,步骤如下:

bash 复制代码
# 重新以读写模式挂载 /sysroot 分区
mount -o remount,rw /sysroot

# 切换系统根环境至本地系统,获取 root 操作权限
chroot /sysroot

3.5 执行 root 密码重置操作

在完成上述前置配置的单用户 Shell 中,执行密码修改命令,按照提示输入新密码并二次确认即可:

bash 复制代码
# 直接修改 root 用户密码,CentOS 7/8 可省略 root 关键字,直接执行 passwd
passwd root

注意事项:

密码设置需符合系统复杂度要求(建议长度 ≥8 位,包含数字+字母),若提示密码过于简单,可执行 passwd --stdin root 强制设置简单密码。

3.6 解决中文乱码(可选优化)

若操作过程中出现中文乱码,影响命令输入与结果查看,回到 3.2 节的 linux16/linuxefi 参数行,将参数内的 zh_CN 字符集修改为 en_US 即可解决,不影响操作。

3.7 刷新 SELinux 上下文标记

CentOS/RedHat 系统默认启用 SELinux 安全机制,密码修改后必须执行以下命令,否则重启后新密码无法生效,且会出现「新旧密码均无法登录」的故障:

bash 复制代码
# 在根目录创建自动重标记触发文件,重启时系统将自动刷新 SELinux 上下文
touch /.autorelabel

原理说明:
/.autorelabel 文件会触发系统重启时的 SELinux 文件系统重标记,使密码文件的权限与安全上下文匹配,保证密码验证机制正常工作;该文件在重标记完成后会被系统自动删除。

3.8 重启系统并验证密码

完成所有配置后,执行以下任一命令均可重启系统,重启过程中会执行 SELinux 重标记,耗时约 1~3 分钟,请勿中断重启过程

bash 复制代码
# 方式1:标准系统初始化重启,推荐使用
exec /sbin/init

# 方式2:直接强制重启(部分环境下适用)
reboot -f

重启完成后,使用新设置的 root 密码即可正常登录系统。

3.9 补充场景:CentOS 7 内核参数 init=/sysroot/bin 适配

部分 CentOS 7 系统在编辑 linux16 行时,可将参数修改为 rw init=/sysroot/bin,操作后按 Ctrl + x 进入系统,后续执行以下命令完成密码修改:

bash 复制代码
# 切换系统根环境
chroot /sysroot
# 修改 root 密码
passwd root
# 刷新 SELinux 上下文
touch /.autorelabel
# 重启系统
reboot

对应操作界面参考:




4 单用户模式常见报错与解决方案

4.1 报错现象:开机提示 SMBus Host Controller not enabled!

该报错为内核硬件识别警告,无需执行任何操作,等待系统自动加载完成即可,强行操作会导致引导中断。

4.2 故障现象:无法进入单用户模式、新旧密码均失效

此为高频故障,多因修改内核参数时遗漏配置、未执行 touch /.autorelabel 或中途中断重启导致。

解决方案:
  1. 重新进入 GRUB 编辑界面(开机按 e),找到 linux16/linuxefi 行;
  2. 在该行的 rd.lvm.lv 字段前方 添加参数 rw
  3. 在该行的末尾 补充参数 init=/bin/sh
  4. Ctrl + x 进入单用户模式,重新执行密码修改与 SELinux 刷新操作。

4.3 补救命令:手动重挂载根分区

若进入单用户模式后,执行 passwd 提示「只读文件系统」,说明根分区仍为只读挂载,执行以下命令即可修复:

bash 复制代码
# 通用命令,适配所有单用户模式场景
mount -o remount,rw /

5 救援模式重置 root 密码(兜底方案)

当单用户模式因内核损坏、GRUB 引导故障、文件系统损坏等原因无法进入时,使用救援模式进行兜底修复,该模式需依赖 系统安装光盘/U盘 作为引导介质。

5.1 从安装介质引导系统

  1. 将系统安装光盘/U盘插入主机,在 BIOS/UEFI 引导项中,将光盘/U盘设置为第一启动项;
  2. 进入安装介质的引导菜单后,选择第 3 项 Troubleshooting(故障排除);
  3. 在故障排除子菜单中,选择 Rescue a Red Hat Enterprise Linux system(拯救系统)。

5.2 挂载本地系统分区

  1. 进入救援模式引导流程后,系统会自动检测本地磁盘的系统分区,最终弹出交互选项;
  2. 选择第 1 项 Continue(继续),输入数字 1 并回车,系统将本地的系统根分区自动挂载至 /mnt/sysroot 目录下。

说明:救援模式的运行环境为安装介质内的迷你系统,本地硬盘的系统文件仅作为「挂载磁盘」存在,所有对原系统的修改都需在 /mnt/sysroot 目录内执行。

5.3 重置 root 密码(两种有效方法,任选其一)

方法一:切换根环境修改密码(推荐,规范无风险)
bash 复制代码
# 切换当前 Shell 的根目录至本地系统分区,获取原系统的 root 权限
chroot /mnt/sysroot

# 修改原系统的 root 密码
passwd root

# 刷新 SELinux 上下文,必执行步骤
touch /.autorelabel

# 退出切换的根环境
exit
方法二:直接编辑密码配置文件(应急方案)

该方法通过修改系统用户配置文件,实现免密登录,适合密码复杂度限制无法突破的场景,操作如下:

bash 复制代码
# 编辑原系统的用户密码文件
vi /mnt/sysroot/etc/passwd

找到文件内的 root 用户行,原始内容为:

复制代码
root:x:0:0:root:/root:/bin/bash

将行内的 x 字符删除(x 代表该账户启用密码验证),修改后内容为:

复制代码
root::0:0:root:/root:/bin/bash

保存退出后,重启系统即可免密登录 root 账户,登录后执行 passwd root 重新设置密码即可。

5.4 重启系统完成修复

执行以下命令重启主机,移除安装介质,系统将从本地硬盘正常启动,密码重置生效:

bash 复制代码
reboot

6 其他应急维护模式详解

6.1 紧急外壳(Emergency Shell)

6.1.1 启动方法
  1. GRUB 菜单按 e 进入编辑界面;
  2. linux16/linuxefi 行末尾添加参数 systemd.unit=emergency.target
  3. Ctrl + x 启动,进入后需输入 root 密码。
6.1.2 特点与适用场景
  • 系统仅挂载根文件系统为只读模式,不启动任何服务、网络、LVM/RAID 或其他文件系统;

  • 适用于根文件系统损坏、init 进程故障、系统服务批量崩溃等极端场景;

  • 修复步骤:

    bash 复制代码
    # 重挂载根分区为读写
    mount -o remount,rw /
    # 执行修复操作(如 fsck 修复文件系统)
    fsck /dev/sda2
    # 退出紧急外壳,进入正常模式
    systemctl default

6.2 救援目标(Rescue Target,systemd 系统)

6.2.1 启动方法
  1. GRUB 菜单按 e 进入编辑界面;
  2. linux16/linuxefi 行末尾添加参数 systemd.unit=rescue.target
  3. Ctrl + x 启动,进入后需输入 root 密码。
6.2.2 特点与适用场景
  • 系统挂载本地所有文件系统,启动基本系统服务,但不启动网络、图形界面等非必要服务;
  • 介于单用户模式与正常系统之间,适用于系统服务配置错误、软件包损坏、用户权限问题等;
  • 退出执行 systemctl defaultreboot

6.3 Live 系统(Live CD/USB)

6.3.1 启动方法
  1. 制作 Linux Live 镜像(如 CentOS Live、Ubuntu Live、SystemRescueCD)到 U 盘/光盘;
  2. 设置 BIOS/UEFI 从 U 盘/光盘引导,选择「Live 系统」启动。
6.3.2 特点与适用场景
  • 完全独立于本地系统的运行环境,所有程序运行在内存中,不修改本地磁盘;
  • 适用于本地系统无法引导、文件系统严重损坏、数据救援、系统重装前备份等场景;
6.3.3 Live 系统数据救援与系统修复完整流程
  1. 准备工作

    • 下载合适的 Live 镜像(推荐 SystemRescueCD,集成磁盘与文件系统工具);
    • 使用 dd 或 Etcher 工具将镜像写入 U 盘(容量 ≥4GB);
    • 准备外接存储设备(用于备份数据)。
    bash 复制代码
    # dd 命令制作 Live U 盘(Linux 环境)
    dd if=systemrescuecd-x86-xxx.iso of=/dev/sdb bs=4M status=progress
  2. 启动 Live 系统

    • 插入 Live U 盘,设置 BIOS/UEFI 第一启动项为 U 盘;
    • 进入 Live 系统引导菜单,选择默认选项启动,进入命令行界面。
  3. 磁盘与分区识别

    bash 复制代码
    # 查看磁盘列表,确认本地系统磁盘(如 /dev/sda)
    fdisk -l
    # 查看文件系统状态
    blkid
  4. 数据救援操作

    • 挂载本地系统分区与外接存储

      bash 复制代码
      # 创建挂载点
      mkdir -p /mnt/local /mnt/external
      # 挂载本地系统分区(ext4 格式示例)
      mount -o ro /dev/sda2 /mnt/local
      # 挂载外接存储(NTFS 格式需安装 ntfs-3g)
      mount /dev/sdc1 /mnt/external
    • 执行数据备份

      bash 复制代码
      # 打包备份 /home 目录至外接存储
      tar -czvf /mnt/external/home_backup.tar.gz /mnt/local/home
      # 直接复制文件
      cp -r /mnt/local/etc /mnt/external/etc_backup
    • 修复文件系统(先卸载分区)

      bash 复制代码
      umount /mnt/local
      # 执行文件系统检查与修复(ext4 格式)
      fsck.ext4 -y /dev/sda2
  5. 系统修复操作

    • 挂载本地系统并切换根环境

      bash 复制代码
      mount /dev/sda2 /mnt/local
      # 挂载必要的系统伪文件系统
      mount -t proc proc /mnt/local/proc
      mount -t sysfs sys /mnt/local/sys
      mount -o bind /dev /mnt/local/dev
      # 切换根环境
      chroot /mnt/local
    • 执行修复任务(示例)

      bash 复制代码
      # 重置 root 密码
      passwd root
      # 修复 GRUB 引导
      grub2-install /dev/sda
      grub2-mkconfig -o /boot/grub2/grub.cfg
      # 修复 SELinux 上下文
      touch /.autorelabel
    • 退出并重启

      bash 复制代码
      exit
      umount -R /mnt/local
      reboot

6.4 调试模式(Debug Mode)

6.4.1 启动方法
  1. GRUB 菜单按 e 进入编辑界面;
  2. linux16/linuxefi 行末尾添加参数 init=/bin/bashsystemd.debug-shell
  3. Ctrl + x 启动,进入调试 Shell。
6.4.2 特点与适用场景
  • 用于内核启动过程调试、init 进程故障排查、系统引导脚本错误定位等;
  • systemd.debug-shell 会在 tty9 提供一个调试 Shell,可实时查看系统启动日志与进程状态;
  • 仅适用于开发或高级运维场景,普通用户需谨慎使用。

6.5 各类应急模式对比表

模式 根分区挂载 服务启动 网络支持 适用场景
单用户模式 读写 密码重置、简单配置修复
救援模式 读写(手动挂载) 迷你系统服务 可选 单用户模式无法进入时的兜底修复
紧急外壳 只读 根文件系统损坏、init 进程故障
救援目标 读写 基本服务 系统服务配置错误、软件包损坏
Live 系统 手动挂载 完整服务 本地系统无法引导、数据救援
调试模式 只读/读写 内核启动调试、引导脚本错误定位

6.6 不同 Linux 发行版应急维护模式差异

发行版 单用户模式启动 救援模式入口 特有维护模式 GRUB 配置路径 安全机制差异
CentOS/RHEL 7/8 GRUB 编辑添加 init=/bin/sh/rd.break 安装介质 → Troubleshooting → Rescue BIOS: /boot/grub2/grub.cfg UEFI: /boot/efi/EFI/centos/grub.cfg SELinux 默认启用,需 touch /.autorelabel
Ubuntu/Debian GRUB 编辑添加 init=/bin/bash 安装介质 → Rescue a broken system BIOS: /boot/grub/grub.cfg UEFI: /boot/efi/EFI/ubuntu/grub.cfg AppArmor 默认启用,无 SELinux 重标记步骤
SUSE Linux Enterprise GRUB 编辑添加 init=/bin/bash 安装介质 → Rescue System Maintenance Mode(集成内核回滚工具) BIOS: /boot/grub2/grub.cfg UEFI: /boot/efi/EFI/sles/grub.cfg SELinux 可选,默认禁用
Arch Linux GRUB 编辑添加 init=/bin/bash 安装介质 → Arch Linux Rescue BIOS: /boot/grub/grub.cfg UEFI: /boot/efi/EFI/arch/grub.cfg 无强制安全机制,需手动配置

差异说明:

  • 启动参数逻辑一致,仅配置文件路径与安全机制不同;
  • Debian/Ubuntu 系统无需执行 SELinux 重标记,SUSE 与 Arch 系统根据安全机制配置决定;
  • 商业发行版(如 SUSE)提供专属维护工具,适配企业级系统运维需求。

7 主流 Linux 发行版应急操作速查清单

7.1 CentOS/RHEL 7/8 应急速查

  • 单用户模式启动(BIOS)

    GRUB 编辑 linux16 行:ro → rw + 末尾添加 init=/bin/sh

    Ctrl + x 启动

    bash 复制代码
    mount -o remount,rw /  # 若未修改 ro→rw 时执行
    passwd root
    touch /.autorelabel
    exec /sbin/init
  • 救援模式重置密码

    安装介质引导 → Troubleshooting → Rescue

    bash 复制代码
    chroot /mnt/sysroot
    passwd root
    touch /.autorelabel
    exit && reboot
  • GRUB 配置持久化(UEFI)

    bash 复制代码
    vi /etc/default/grub
    grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

7.2 Ubuntu/Debian 应急速查

  • 单用户模式启动

    GRUB 编辑 linux 行,末尾添加 init=/bin/bash

    Ctrl + x 启动

    bash 复制代码
    mount -o remount,rw /
    passwd root  # Ubuntu 需先执行 passwd -u root 解锁账户
    reboot
  • 救援模式入口

    安装介质引导 → Rescue a broken system

    选择系统分区 → 挂载为可读写 → 进入 Shell

    bash 复制代码
    passwd root
    reboot
  • GRUB 配置持久化

    bash 复制代码
    vi /etc/default/grub
    update-grub  # 自动生成配置文件

7.3 SUSE Linux Enterprise 应急速查

  • 单用户模式启动

    GRUB 编辑 linux 行,末尾添加 init=/bin/bash

    Ctrl + x 启动

    bash 复制代码
    mount -o remount,rw /
    passwd root
    reboot
  • 特有 Maintenance Mode

    安装介质引导 → Maintenance Mode

    选择修复选项(内核回滚/软件包修复)

    完成后重启

  • GRUB 配置持久化

    bash 复制代码
    vi /etc/default/grub
    grub2-mkconfig -o /boot/grub2/grub.cfg

7.4 Arch Linux 应急速查

  • 单用户模式启动

    GRUB 编辑 linux 行,末尾添加 init=/bin/bash

    Ctrl + x 启动

    bash 复制代码
    mount -o remount,rw /
    passwd root
    reboot
  • 救援模式启动

    安装介质引导 → Arch Linux Rescue

    bash 复制代码
    mount /dev/sda2 /mnt
    arch-chroot /mnt  # Arch 专用切换根环境命令
    passwd root
    reboot
  • GRUB 配置持久化

    bash 复制代码
    vi /etc/default/grub
    grub-mkconfig -o /boot/grub/grub.cfg

7.5 发行版命令差异说明

  1. GRUB 配置生成命令
    • CentOS/RHEL/SUSE:grub2-mkconfig -o 配置路径
    • Ubuntu/Debian/Arch:update-grubgrub-mkconfig -o 配置路径
  2. 根环境切换命令
    • 通用:chroot /挂载点
    • Arch 专用:arch-chroot /挂载点(自动挂载伪文件系统)
  3. 安全机制操作
    • SELinux 系统(CentOS/RHEL):必须执行 touch /.autorelabel
    • AppArmor 系统(Ubuntu/Debian):无需额外操作,修改配置后直接重启
  4. 账户解锁差异
    • Ubuntu 默认锁定 root 账户,单用户模式需先执行 passwd -u root 解锁

8 UEFI/BIOS 固件模式切换与 GRUB 配置持久化

8.1 物理机与虚拟机固件模式切换差异

对比维度 物理机(x86/x86_64 架构服务器/PC) 虚拟机(以 VMware ESXi/Workstation 为例)
操作入口 重启设备,开机自检阶段按厂商指定按键(常见 Del/F2/F10/F12)进入 BIOS/UEFI 设置界面 关闭虚拟机电源,在虚拟机硬件设置中找到「固件类型」/「启动模式」选项,无需进入系统固件界面
切换步骤 1. 重启,按对应按键进入固件设置; 2. 找到 Boot Mode/UEFI Boot 选项,切换为 Legacy BIOSUEFI; 3. 保存设置(常见 F10 确认),系统自动重启生效 1. 关闭虚拟机,进入虚拟机设置; 2. 选择固件类型,切换为 BIOSUEFI; 3. 保存设置,启动虚拟机即可生效
生效条件 必须重启设备,设置仅在下次启动时生效;部分老主板不支持 UEFI 模式 必须关闭虚拟机电源,在线状态无法修改固件类型; 所有主流虚拟机均支持两种模式切换
分区表限制 - UEFI 模式必须搭配 GPT 分区表,且需创建 EFI 系统分区(ESP,通常 512 MiB,FAT32 格式); - BIOS 模式兼容 MBR 分区表,不支持 GPT 分区表的引导(部分主板可通过 CSM 兼容) 虚拟机磁盘分区表无强制限制,但为了和物理机环境一致,建议 UEFI 搭配 GPT,BIOS 搭配 MBR; 虚拟机无需手动创建 EFI 分区,系统安装时自动生成
CSM 兼容模块 部分 UEFI 主板提供 CSM(兼容性支持模块),开启后可兼容 BIOS 引导的系统;关闭后仅支持 UEFI 引导 虚拟机无需 CSM 模块,固件模式直接决定引导方式,无兼容层依赖
GRUB 配置路径差异 - UEFI 系统:/boot/efi/EFI/centos/grub.cfg; - BIOS 系统:/boot/grub2/grub.cfg 与物理机完全一致,固件模式决定 GRUB 配置文件路径,虚拟机环境无额外差异
操作风险 切换后若分区表不匹配(如 UEFI+MBR),系统将无法引导,需通过安装介质修复分区表或重装系统 切换后若系统安装时的固件模式与当前不一致,系统无法引导; 可通过切换回原模式或重新安装系统解决,风险低于物理机

8.2 GRUB 配置持久化方法

临时修改 GRUB 启动参数仅对单次启动有效,若需长期生效,需执行以下步骤:

  1. root 权限登录系统,编辑 GRUB 配置模板文件

    bash 复制代码
    vi /etc/default/grub
  2. 修改 GRUB_CMDLINE_LINUX 变量,添加需要持久化的参数,示例如下

    bash 复制代码
    GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
  3. 重新生成 GRUB 配置文件

    • BIOS 系统执行命令

      bash 复制代码
      grub2-mkconfig -o /boot/grub2/grub.cfg
    • UEFI 系统执行命令

      bash 复制代码
      grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
  4. 重启系统,配置即可永久生效

8.3 配置验证方法

重启系统后,执行以下命令查看内核启动参数,确认配置是否生效:

bash 复制代码
cat /proc/cmdline

9 全场景通用注意事项

  1. 单用户模式、紧急外壳等本地应急模式的操作必须在系统物理机 / 虚拟机本地执行,远程连接无法进入该模式;
  2. touch /.autorelabel 为必执行命令,只要系统启用 SELinux(CentOS 默认开启),遗漏该步骤必然导致密码失效;
  3. 重启时的 SELinux 重标记过程会消耗一定时间,请勿强制关机,否则会造成文件系统损坏;
  4. 救援模式与 Live 系统的价值是「兜底」与「备份」,可在 /mnt/sysroot 或手动挂载目录下将重要文件拷贝至外接存储,适合系统无法修复前的数据抢救;
  5. 操作过程中若中途退出虚拟机,会导致 root 新老密码均无法登录,且无法正常进入单用户模式,需按 4.2 节方案修复;
  6. 固件模式切换仅修改引导方式,不会影响系统中的数据,但会导致系统无法引导,需提前做好备份;
  7. 若需在 UEFI 模式下安装系统,需确保安装介质支持 UEFI 引导,且磁盘分区表为 GPT;
  8. 不同发行版的应急逻辑一致,差异集中在配置路径、安全机制与专属命令,操作前需确认发行版类型。

附录:高频应急命令

  • 读写重挂载根分区(单用户/紧急外壳模式必备)

    bash 复制代码
    mount -o remount,rw /
  • 读写重挂载 sysroot 分区(rd.break 模式必备)

    bash 复制代码
    mount -o remount,rw /sysroot
  • 切换救援模式的系统根环境

    bash 复制代码
    chroot /mnt/sysroot
  • 刷新 SELinux 上下文(密码重置必执行)

    bash 复制代码
    touch /.autorelabel
  • 标准重启命令

    bash 复制代码
    exec /sbin/init
  • 强制重启命令

    bash 复制代码
    reboot -f
  • 判断固件模式

    bash 复制代码
    ls /sys/firmware/efi
  • BIOS 系统生成 GRUB 配置(CentOS/RHEL/SUSE)

    bash 复制代码
    grub2-mkconfig -o /boot/grub2/grub.cfg
  • UEFI 系统生成 GRUB 配置(CentOS/RHEL/SUSE)

    bash 复制代码
    grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
  • Ubuntu/Debian 生成 GRUB 配置

    bash 复制代码
    update-grub
  • 修复文件系统(紧急外壳模式)

    bash 复制代码
    fsck /dev/sda2
  • 进入救援目标

    bash 复制代码
    systemctl isolate rescue.target
  • 进入紧急外壳

    bash 复制代码
    systemctl isolate emergency.target
  • Live 系统磁盘识别

    bash 复制代码
    fdisk -l
    bash 复制代码
    blkid
  • Live 系统数据备份

    bash 复制代码
    tar -czvf /mnt/external/backup.tar.gz /mnt/local/path
  • Arch 系统切换根环境

    bash 复制代码
    arch-chroot /mnt
  • Ubuntu 解锁 root 账户

    bash 复制代码
    passwd -u root


ref: