如何将 RHEL 7/CentOS 7 引导至单用户模式或者救援模式

从RHEL 7开始,运行级别(runlevel)概念不再存在,现在将以前称为运行级别1的概念称为emergency.target。
因此,我们将使用术语“emergency.target”来表示“运行级别1”

要进入应急目标级别(emergency.target)可能有两种情况

  • 您有一个可以正常工作的shell环境
  • 您的计算机无法启动

场景 1:当你有一个可以工作的 shell 时

在这种情况下,我们可以使用以下命令将现有的运行级别更改为“emergency.target”

我们可以使用以下命令切换到救援模式

[root@onitroad ~]# systemctl isolate rescue.target
PolicyKit daemon disconnected from the bus.
We are no longer a registered authentication agent.

或者

[root@onitroad ~]# systemctl rescue
PolicyKit daemon disconnected from the bus.
We are no longer a registered authentication agent.
Broadcast message from root@onitroad.lab on pts/1 (Sun 2015-12-24 23:47:08 IST):
The system is going down to rescue mode NOW!

重要说明:此命令类似于 systemctl isolate rescue.target,但它还会向当前登录系统的所有用户发送一条信息性消息。
要防止 systemd 发送此消息,请使用 --no-wall 命令行选项运行此命令:

# systemctl --no-wall rescue

场景 2:当你无法使用shell时

如果我们遇到与启动相关的问题,那么很明显我们需要转到紧急目标以获取 shell 以进一步解决问题。

现在使用 RHEL 7,切换到emergency.target 的步骤与 RHEL 6 和更早版本中使用的步骤完全不同。

将运行级别切换到emergency.target的步骤:

  • 在启动过程中出现 GRUB 菜单后,我们将看到一个闪屏,其中包含用于启动系统的可用内核列表,对于我的系统,我只安装了一个内核和一个救援镜像
  • 使用箭头键选择要编辑的内核,以突出显示要用于进入 Emergency.target 的内核
  • 然后按字母“e”键编辑启动项
Red Hat Enterprise Linux Server (3.10.0-693.el7.x86_64) 7.4 (Maipo)
Red Hat Enterprise Linux Server (0-rescue-d6e5b9fa407542fcbcaa72e7e6b777e2) 7.4 (Maipo)
Use the ^ and v keys to change the selection.                      
Press 'e' to edit the selected item, or 'c' for a command prompt.

下一个屏幕应该类似于我选择 3.10.0-693.el7.x86_64 内核进行编辑的以下示例。

setparams 'Red Hat Enterprise Linux Server (3.10.0-693.el7.x86_64) 7.4 (Maipo)'
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_msdos
        insmod xfs
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  af0be92e-0721-46b8-affd-60f9baff3652
        else
          search --no-floppy --fs-uuid --set=root af0be92e-0721-46b8-affd-60f9baff3652
        fi
        linux16 /vmlinuz-3.10.0-693.el7.x86_64 root=/dev/mapper/rhel-root ro rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet net.ifnames=0 systemd.unit=emergency.target

        initrd16 /initramfs-3.10.0-693.el7.x86_64.img
      Press Ctrl-x to start, Ctrl-c for a command prompt or Escape to   

      discard edits and return to the menu. Pressing Tab lists         
      possible completions.
  • 使用箭头按钮查看屏幕上以“linux16”开头的行,在某些情况下,它也可以是linux和linuxefi
  • 当闪烁的光标位于相应的行上后,按键盘上的“结束”键转到该行的结束处
  • 按下“空格键”并提供您想将系统引导到的目标的详细信息,例如,要引导到紧急目标,请使用以下语法
systemd.unit=emergency.target
  • 修改后,该行看起来像这样:
linux16 /vmlinuz-3.10.0-693.el7.x86_64 root=/dev/mapper/rhel-root ro rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet net.ifnames=0 systemd.unit=emergency.target
  • 下一步完成后,按“回车键”保存该行
  • 最后按“Ctrl+x”以使用您所做的更改引导系统
  • 接下来,您将看到屏幕下方,您必须输入“root”用户密码才能继续
  • 在给出密码后,您将获得shell
日期:2020-06-02 22:16:54 来源:oir作者:oir