我正处于类似问题的中间(偶然也在拱门上)
Grub找不到此文件并运行,因为它使用了不正确的“前缀”
这就是你要做的。您启动到grub救援模式,然后只需弄清楚如何使其启动即可。
首先运行set这将列出变量,例如我的是
cmdpath=(hd0)
prefix=(hd1,msdos3)/boot/grub
root=hd1,msdos3
现在,前缀是grub在其中查找normal.mod文件的变量。在我的情况下,hd1,msdos3与/ dev / sdb3相同(类似地,hd0,msdos1将是/ dev / sda1)您可能要执行的操作以查看有效分区列表,方法是输入ls
现在,以我为例,再次将grub安装在/ dev / sdb1上,该文件作为/ boot安装在我的arch分区中,因此正确的前缀为(hd1,msdos1)/ grub
因此,要启动我,我需要这样做:
set prefix=(hd1,msdos1)/grub
insmod normal
normal
在您的情况下,您将必须记住或猜测安装grub的分区。您可能会猜错,它不会造成任何危害,insmod命令将仅会失败,您可以在另一个分区上重试。
此后,grub正常加载,我可以从列表中选择要引导的内容。通常,当发生此类混乱时,将grub重新安装到mbr(使用grub-install)应将其永久修复,因此您不必在每次引导时都这样做。但是,如果要解决这个问题并不容易,我将很难找到解决方法(或者我会分享您应该做的事情)。
仅当此操作失败(例如,前缀正确但仍无法启动)时,才应求助于现场CD或应急CD来解决此问题(最好避免这种情况)
grub-install
。您不必重复任何步骤,只需将它们用作指导即可从liveCD扎根。