我在恢复 grub 时遇到问题

我在恢复 grub 时遇到问题

我正在使用 RHEL 7.6,我只是更改了“ grub2 ”目录名称

并重新启动系统。

之后我看到这样的屏幕 在此输入图像描述

在此输入图像描述

如何解决这个问题?

答案1

您的旧prefix设置是prefix=(hd0,msdos1)/grub2.这告诉我您/boot在分区上有一个单独的文件系统,(hd0,msdos1)因为旧前缀没有提到/boot并且它曾经有效直到你做出改变。

请注意,GRUB 一次仅访问一个文件系统:它不知道也不关心Linux 中(hd0,msdos1)通常安装的文件系统/boot。它只需要路径名中实际属于该文件系统的部分,因为 GRUB 有效地将 视为/boot根目录以满足其自身的需要。这就是变量的root=hd0,msdos1含义。这也是为什么旧前缀的路径名是 just /grub2,而不是/boot/grub2

通过将新前缀指定为(hd0,msdos1)/boot/grub2,您可以有效地告诉 GRUB 查看/boot/boot/grub2Linux 中的内容。

如果您执行了类似的操作mv /boot/grub2 /boot/newname,则现在必须使用set prefix=(hd0,msdos1)/newname使前缀反映grub2目录的新名称。

如果将grub2目录移出/boot文件系统,则会遇到更大的问题,因为 GRUB 仅在其核心映像中安装了最少的模块来访问该grub2目录:如果新位置位于 LVM 卷上或具有与您的文件系统类型不同的文件系统类型,/boot文件系统,GRUB 很可能无法读取它。如果您这样做了,您需要从 RHEL 7.6 安装介质启动到救援模式,然后使用grub-installGRUB 重新安装以使其完全适应新位置:它将首先选择所需的模块并运行grub-mkimage以创建一个包含正确模块的新 GRUB 核心映像文件,然后将其嵌入到 MBR 以及 MBR 和第一个分区开头之间的磁盘块中。

有关 GRUB 结构的更多背景信息,请参见我之前写的关于 GRUB 的答案

相关内容