跳转至

启动进入救援模式和紧急模式

前言

Fedora 已内置(由 systemd 提供)启动进入救援 / 紧急模式的机制。

但 Fedora(以及 Universal Blue 系统)在安装时不会设置 root 密码。因此,当进入紧急或救援模式时,用户会看到以下错误:

Cannot open access to console, the root account is locked.
借鉴 Fedora CoreOS 的做法,我们改善了所有 Universal Blue 派生版的体验。

现在,当 root 账户被锁定时启动到紧急模式或救援模式,用户会看到更标准的提示:

Press Enter for maintenance
(or press Control-D to continue):

此时按 Enter 将进入相应的 root shell。此模式下 SELinux 也会处于活动状态(除非已被其他配置禁用),因此如果你需要重置密码等,这是一个合适的模式。

详情见下文:


启动进入紧急模式

紧急模式提供了最精简的环境,即便系统无法进入救援模式,也允许你修复系统。在紧急模式下,系统仅以只读方式挂载 root 文件系统,不尝试挂载其他本地文件系统,不激活网络接口,且只启动少量必要服务。

  1. 在键盘上按 Esc 进入 GRUB 启动菜单。 a. 如果 Esc 按得太多,可能会进入 grub> 提示符。 b. 输入 exit 并按 Enter 可返回启动菜单。
  2. 选择所需的部署(通常顶部条目正确),并在键盘上按 E 进行编辑。
  3. 用方向键移动到以 linux 开头的行,按 Ctrl+E 跳到行尾。
  4. 在行尾添加 emergency 一词。 a. 确保 emergency 与已有文本之间有空格。 b. 等效参数 -b 和 systemd.unit=emergency.target 可替代 emergency。
  5. 按 Ctrl+X 启动系统。

启动进入救援模式

救援模式提供了方便的单用户环境,可在系统无法完成正常启动过程时修复系统。在救援模式下,系统会尝试挂载所有本地文件系统并启动一些重要的系统服务,但不激活网络接口,也不允许更多用户同时登录系统。在 Fedora 中,救援模式等同于单用户模式。

  1. 在键盘上按 Esc 进入 GRUB 启动菜单。 a. 如果 Esc 按得太多,可能会进入 grub> 提示符。 b. 输入 exit 并按 Enter 可返回启动菜单。
  2. 选择所需的部署(通常顶部条目正确),并在键盘上按 E 进行编辑。
  3. 用方向键移动到以 linux 开头的行,按 Ctrl+E 跳到行尾。
  4. 在行尾添加 single 一词。 a. 确保 single 与已有文本之间有空格。 b. 等效参数 1、s、S 和 systemd.unit=rescue.target 可替代 single。
  5. 按 Ctrl+X 启动系统。

无密码的 root shell!这怎么保证安全?

此改进的实现要求用户必须具备编辑内核命令行的能力。如果你的 bootloader(例如 GRUB)配置了密码以阻止用户修改内核命令行,则不会启用针对锁定 root 账户的密码绕过。这一点尤为重要,因为当启动时文件系统检查失败也会进入 emergency 模式,而不仅限于在内核命令行中指定时。

基于此防护措施,这种改进的救援 / 紧急模式与设置 init=/bin/bash 等方式同样安全。此外,用户使用此方法也不太可能损坏 SELinux 标签。


重置遗忘的用户密码

忘记了登录用的用户密码?请阅读 Fedora 文档中关于此主题的内容。请记住,如果你在安装设置期间未设置密码,则所有新的汽核 OS 安装的默认密码为「bazzite」。