GRUB 救援 - 反复设置引导和前缀

GRUB 救援 - 反复设置引导和前缀

我几乎对 Ubuntu 中的编码一无所知。我目前正在双启动 ubuntu 16.04 LTS 和 Windows 10。一切都很好。但今天出现了一个错误,说

“找不到文件系统”

然后grub开始救援。经过一段时间的搜索,我找到了解决方案,它告诉我执行以下操作:

ls
set prefix=(hd0,msdos5)/boot/grub
insmod normal
normal

我知道这ls是在列出硬盘分区(如果我错了请告诉我)。然后(在set prefix)我需要选择一个分区。当我选择 msdos5 时出现错误。经过几次尝试,我选择了 msdos6。然后它运行了。但问题是我从另一个解决方案中编写了此代码:

set boot=(hd0,msdos6)

我想我搞砸了。可能,这涉及到硬盘的哪个分区将要启动。现在,在编写此代码后,我的笔记本电脑正在运行,每次我打开笔记本电脑时,启动都会卡在开头,显示相同的错误,每次我需要运行笔记本电脑时,我都需要编写代码。我该如何解决这个问题?我可能还需要知道正在启动的分区(msdos*),但我不知道如何找到它。

答案1

grub rescue>如果在启动时出现提示并且您必须编写如下代码,我找到了解决此类问题的方法:

grub rescue> ls
grub rescue> set boot=(hd0,msdos*)
grub rescue> set prefix=(hd0,msdos*)/boot/grub
grub rescue> insmod normal
grub rescue> normal

启动后,基于 Linux/Ubuntu 的操作系统将加载,然后打开终端并写入命令:

useranf@ ~ $ sudo update-grub

然后输入此命令:

useranf@ ~ $ sudo grub-install /dev/sda

完成这些操作后,最后重新启动系统。

答案2

在 deepak bundela 的上述回答中,我认为需要更正以下一行:

grub rescue> set boot=(hd0,msdos*)

到:

grub rescue> set root=(hd0,msdos*)

(我重复了 bundela 所说的 * 以免分散对真正问题的注意力)

我找不到名为 boot 的 grub 环境变量,据我所知,它一直都是set root=()

我对所有说它在他们的发行版上运行的评论者感到有些困惑。他们做了一个set boot还是一个set root

grub rescue>提示符下,如果只输入它,set它会列出已设置的所有环境变量。在我的所有 grub 救援冒险中,我从未见过boot列出的环境变量。

相关内容