本文介绍了如何将 CentOS/RHEL 7 和 8 系统启动到救援模式或者紧急模式。
在 CentOS/RHEL 7 和 8 中,救援模式和紧急模式都是 systemd 目标,它们取代了先前 CentOS/RHEL 版本中运行级别的概念。
救援模式相当于单用户模式,需要root密码。
救援模式允许我们在系统无法完成常规启动过程的情况下修复系统。
救援模式会尝试挂载所有本地文件系统并启动一些重要的系统服务,但它不会激活网络接口,也不会允许多个用户登录。
紧急模式提供尽可能最小的环境,即使在系统无法进入救援模式的情况下,我们也可以修复系统。
在紧急模式下,系统将根文件系统挂载为只读,不尝试挂载任何其他本地文件系统,不激活网络接口。
启动进入紧急模式(目标)
开机时,当GRUB2菜单出现时,按e键进行编辑。
在 x86-64 系统上的 linux16 行或者 UEFI 系统上的 linuxefi 行末尾添加以下参数:
systemd.unit=emergency.target
按 Ctrl+a(或者 Home)和 Ctrl+e(或者 End)可跳转到行的开头和结尾。
- 按Ctrl+x 以参数引导系统。
启动进入救援模式(目标)
开机时,当GRUB2菜单出现时,按e键进行编辑。
在 x86-64 系统上的 linux16 行或者 UEFI 系统上的 linuxefi 行末尾添加以下参数:
systemd.unit=rescue.target
按 Ctrl+a(或者 Home)和 Ctrl+e(或者 End)可跳转到行的开头和结尾。
- 按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
启动到调试 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