如何在 CentOS/RHEL 7 和 8 中通过 Systemd 启动到救援模式或者紧急模式

本文介绍了如何将 CentOS/RHEL 7 和 8 系统启动到救援模式或者紧急模式。
在 CentOS/RHEL 7 和 8 中,救援模式和紧急模式都是 systemd 目标,它们取代了先前 CentOS/RHEL 版本中运行级别的概念。

救援模式相当于单用户模式,需要root密码。
救援模式允许我们在系统无法完成常规启动过程的情况下修复系统。
救援模式会尝试挂载所有本地文件系统并启动一些重要的系统服务,但它不会激活网络接口,也不会允许多个用户登录。

紧急模式提供尽可能最小的环境,即使在系统无法进入救援模式的情况下,我们也可以修复系统。
在紧急模式下,系统将根文件系统挂载为只读,不尝试挂载任何其他本地文件系统,不激活网络接口。

启动进入紧急模式(目标)

  1. 开机时,当GRUB2菜单出现时,按e键进行编辑。

  2. 在 x86-64 系统上的 linux16 行或者 UEFI 系统上的 linuxefi 行末尾添加以下参数:

systemd.unit=emergency.target

按 Ctrl+a(或者 Home)和 Ctrl+e(或者 End)可跳转到行的开头和结尾。

  1. 按Ctrl+x 以参数引导系统。

启动进入救援模式(目标)

  1. 开机时,当GRUB2菜单出现时,按e键进行编辑。

  2. 在 x86-64 系统上的 linux16 行或者 UEFI 系统上的 linuxefi 行末尾添加以下参数:

systemd.unit=rescue.target

按 Ctrl+a(或者 Home)和 Ctrl+e(或者 End)可跳转到行的开头和结尾。

  1. 按Ctrl+x 以参数引导系统。

切换到救援模式(目标)

要切换到救援目标,只需以 root 身份运行以下命令:

# systemctl rescue
Broadcast message from root@dhcp-cn-10-182-71-190.cn.oracle.com on pts/0 (Mon 2016-06-27 00:22:44 EDT):
The system is going down to rescue mode NOW!

要防止 systemd 发送信息性消息:

# systemctl --no-wall rescue
# systemctl isolate rescue.target
更多: zhilu jiaocheng

启动到调试 Shell

systemd 调试 shell 在启动过程中提供了一个 shell,可用于诊断 systemd 相关的启动问题。
进入调试 shell 后,可以使用 systemctl 命令(例如 systemctl list-jobs 和 systemctl list-units)来诊断引导问题。

在启动过程中,当 GRUB2 菜单出现时,按 e 键进行编辑。
在基于 x86-64 BIOS 的系统上的 linux16 行或者 UEFI 系统上的 linuxefi 行的末尾添加以下参数:

systemd.debug-shell

systemd 将在 TTY9 上配置调试 shell。
按 Ctrl+Alt+F9 连接到调试 shell(不需要凭据)。

切换到紧急模式(目标)

要切换到紧急目标,只需以 root 身份运行以下命令:

# systemctl emergency
Broadcast message from root@dhcp-cn-10-182-71-190.cn.oracle.com on pts/1 (Mon 2016-06-27 00:44:58 EDT):
The system is going down to emergency mode NOW!

要防止 systemd 发送信息性消息:

# systemctl --no-wall emergency
# systemctl isolate emergency.target
日期:2020-09-17 00:13:09 来源:oir作者:oir