B.10. 使用救援(rescue)模式
安装程序救援模式是可从 Red Hat Enterprise Linux DVD 或者其它引导介质引导的最小 Linux 环境。它包含可用来解决各种问题的命令行工具。救援模式可以从引导菜单的 Troubleshooting 菜单进入。在这个模式中,您可以将文件系统挂载为只读、列入黑名单或者添加驱动程序磁盘中提供的驱动程序,安装或升级系统软件包,或者管理分区。
安装程序的救援(rescue)模式与救援模式(等同于单用户模式)和紧急(emergency)模式不同,后者是 systemd
系统和服务管理器的一部分。
要引导至救援模式,您必须可以使用一个 Red Hat Enterprise Linux 引导介质引导系统,比如最小引导磁盘或者 USB 驱动器,或者完整安装 DVD。
高级存储(如 iSCSI 或 zFCP 设备)必须使用 dracut
引导选项(如 rd.zfcp=
或 root=iscsi:
选项 )进行配置,或 64 位 IBM Z 上的 CMS 配置文件。无法在引导至救援模式后以互动方式配置这些存储设备。有关 dracut
引导选项的详情,请查看您系统上的 dracut.cmdline (7)
手册页。
B.10.1. 引导至救援模式
这个流程描述了如何引导到救援模式。
流程
- 从最小引导介质或完整安装 DVD 或 USB 盘引导系统,并等待引导菜单显示。
-
在引导菜单中,选择 Troubleshooting > Rescue a Red Hat Enterprise Linux system 选项,或者在引导命令行中添加
inst.rescue
选项。要进入引导命令行,在基于 BIOS 的系统中按 Tab 键;或在使用 UEFI 的系统中按 e 键。 可选: 如果您的系统需要驱动程序磁盘中提供的第三方驱动程序才能引导,请将
inst.dd=driver_name
附加到引导命令行:inst.rescue inst.dd=driver_name
可选: 如果作为 Red Hat Enterprise Linux 发行本一部分的某个驱动阻止系统引导,将
modprobe.blacklist=
选项附加到引导命令行中:inst.rescue modprobe.blacklist=driver_name
按 Enter (基于 BIOS 的系统)或者 Ctrl+X (基于 UEFI 的系统)引导修改的选项。等待以下信息出现:
The rescue environment will now attempt to find your Linux installation and mount it under the directory: /mnt/sysroot/. You can then make any changes required to your system. Choose 1 to proceed with this step. You can choose to mount your file systems read-only instead of read-write by choosing 2. If for some reason this process does not work choose 3 to skip directly to a shell. 1) Continue 2) Read-only mount 3) Skip to shell 4) Quit (Reboot)
如果您选择 1,安装程序会尝试在
/mnt/sysroot/
目录下挂载文件系统。如果挂载分区失败,则会收到通知。如果选择 2,会尝试在/mnt/sysroot/
目录下挂载文件系统,但是挂载为只读模式。如果选择 3,文件系统将不会被挂载。对于系统 root,安装程序支持两个挂载点
/mnt/sysimage
和/mnt/sysroot
。/mnt/sysroot
路径用于挂载目标系统的/
。通常物理根和系统根是相同的,因此/mnt/sysroot
被连接到和/mnt/sysimage
相同的文件系统中。唯一例外是 rpm-ostree 系统,其中的系统根更改基于部署。然后/mnt/sysroot
被附加到/mnt/sysimage
的子目录中。对 chroot 使用/mnt/sysroot
。选择 1 来继续。系统进入救援模式后,会在 VC(虚拟控制台)1 和 VC 2 中出现提示。使用
Ctrl+Alt+F1
组合键访问 VC 1 和Ctrl+Alt+F2
访问 VC 2:sh-4.2#
即使挂载了文件系统,救援模式下的默认 root 分区是临时的 root 分区,而不是普通用户模式(
multi-user.target
或graphical.target
)下使用的文件系统的 root 分区。如果您选择挂载文件系统并成功挂载,您可以通过执行以下命令将救援模式环境的 root 分区改为文件系统的 root 分区:sh-4.2# chroot /mnt/sysroot
如果您需要运行命令,如
rpm
,要求将 root 分区挂载为/
,这会很有用。要退出 chroot 环境,输入 exit 来返回提示符。如果选择了 3,仍可以通过创建目录(如
/directory/
),并输入以下命令,来在救援模式中手动挂载分区或 LVM2 逻辑卷:sh-4.2# mount -t xfs /dev/mapper/VolGroup00-LogVol02 /directory
在以上命令中,
/directory/
是您创建的目录,/dev/mapper/VolGroup00-LogVol02
是要挂载的 LVM2 逻辑卷。如果分区类型不是 XFS,使用正确的类型(比如 ext4)替换 xfs 字符串。如果不知道所有物理分区的名称,使用以下命令列出它们:
sh-4.2# fdisk -l
如果不知道所有 LVM2 物理卷、卷组或者逻辑卷的名称,使用
pvdisplay
、vgdisplay 或
lvdisplay
命令。
B.10.2. 在救援模式中使用 SOS 报告
sosreport
命令行工具会收集配置和诊断信息,如运行的内核版本、载入的模块以及系统和服务配置文件。程序输出保存在 /var/tmp/
目录中的 tar 归档中。sosreport
有助于分析系统错误和故障排除。使用这个步骤捕获救援模式中的 sosreport
输出结果。
先决条件
- 引导至救援模式。
-
您已经以读写模式挂载了安装的系统
/(root)
分区。 - 已就您的问题单联系了红帽支持团队,并已获得了一个问题单号。
流程
将根目录改为
/mnt/sysroot/
目录:sh-4.2# chroot /mnt/sysroot/
执行
sosreport
生成带有系统配置和诊断信息的归档文件:sh-4.2# sosreport
sosreport
会提示您输入您的名称以及您从红帽支持收到的问题单号。只使用字母和数字,因为添加任何以下字符或空格可能导致报告无法使用:# % & { } \ < > > * ? / $ ~ ' " : @ + ` | =
可选: 如果想用网络把所生成的归档传输到一个新的位置,需要配置一个网络接口。在这种情况下,使用动态 IP 地址作为不需要其他步骤。但是,在使用静态寻址时,输入以下命令将 IP 地址(如 10.13.153.64/23)分配给网络接口,如 dev eth0:
bash-4.2# ip addr add 10.13.153.64/23 dev eth0
退出 chroot 环境:
sh-4.2# exit
将所生成的存档保存在一个新位置以便进行访问:
sh-4.2# cp /mnt/sysroot/var/tmp/sosreport new_location
要通过网络传输归档,使用
scp
实用程序:sh-4.2# scp /mnt/sysroot/var/tmp/sosreport username@hostname:sosreport
其它资源
- 什么是 sosreport ,以及如何在 Red Hat Enterprise Linux 中创建?(红帽知识库)
- 如何在救援环境中生成 sosreport (红帽知识库)
- 我如何将 sosreport 写入到其他位置?(红帽知识库)
- Sosreport 失败。我应该提供什么数据?(红帽知识库)
B.10.3. 重新安装 GRUB2 引导装载程序
在某些情况下,GRUB2 引导装载程序被错误地删除、损坏或者被其他操作系统替代。使用这个流程,在带有 BIOS 的 AMD64 和 Intel 64 系统上,重新在主引导记录(MBR)上安装 GRUB2。
先决条件
- 引导至救援模式。
-
您已经以读写模式挂载了安装的系统
/(root)
分区。 -
您已以读写模式挂载了
/boot
挂载点。
流程
更改根分区:
sh-4.2# chroot /mnt/sysroot/
重新安装 GRUB2 引导加载程序,其中安装了
install_device
块设备:sh-4.2# /sbin/grub2-install install_device
重要如果满足以下所有条件,运行
grub2-install
命令可能会导致机器无法启动:- 系统是带有可扩展固件接口(EFI)的 AMD64 或 Intel 64。
- 启用了安全引导。
运行
grub2-install
命令后,您无法引导带有可扩展固件接口(EFI)以及启用了安全引导的 AMD64 或 Intel 64 系统。此问题的出现是因为grub2-install
命令会安装一个未签名的 GRUB2 镜像,该镜像可直接引导,而不使用 shim 应用程序。系统引导时,shim 应用程序会验证镜像签名,如果没有找到,则无法引导系统。- 重启系统。
B.10.4. 使用 dnf 添加或删除驱动程序
引导系统时,缺少或有故障的驱动程序会导致问题。救援模式提供了一个环境,您可以在其中添加或删除驱动程序,即使系统无法引导。在可能的情况下,使用 dnf 软件包管理器删除有问题的驱动程序或添加更新的或缺失的驱动程序。
当您从驱动程序磁盘安装驱动时,驱动盘会更新系统中的所有 initramfs
镜像来使用这个驱动程序。如果驱动出现问题导致系统无法引导,您就无法依赖另一个 initramfs
镜像引导系统。
B.10.4.1. 使用 dnf 添加驱动程序
使用此流程添加驱动程序。
先决条件
- 引导至救援模式。
- 您已经以读写模式挂载安装系统。
流程
-
可以使用包含驱动的软件包。例如,挂载 CD 或 USB 闪存,并将 RPM 软件包复制到您在
/mnt/sysroot/
下选择的位置,例如:/mnt/sysroot/root/drivers/
。 将根目录改为
/mnt/sysroot/
:sh-4.2# chroot /mnt/sysroot/
使用
dnf install
命令安装驱动程序软件包。例如,运行以下命令从/root/drivers/
中安装xorg-x11-drv-wacom
驱动软件包:sh-4.2# dnf install /root/drivers/xorg-x11-drv-wacom-0.23.0-6.el7.x86_64.rpm
注意此 chroot 环境中的
/root/drivers/
目录是初始救援环境中的/mnt/sysroot/root/drivers/
目录。退出 chroot 环境:
sh-4.2# exit
B.10.4.2. 使用 dnf 删除驱动程序
使用此流程删除驱动程序。
先决条件
- 引导至救援模式。
- 您已经以读写模式挂载安装系统。
流程
将根目录改为
/mnt/sysroot/
目录:sh-4.2# chroot /mnt/sysroot/
使用
dnf remove
命令删除驱动程序软件包。例如,要删除xorg-x11-drv-wacom
驱动程序软件包,请运行:sh-4.2# dnf remove xorg-x11-drv-wacom
退出 chroot 环境:
sh-4.2# exit
如果由于某些原因而无法删除有问题的驱动程序,您可以将驱动程序列入黑名单,以便在引导时不能将其载入。
- 当您完成添加和删除驱动程序后,重启该系统。