我最近在我的机器上安装了 arch(希望能成功)。然而,当我重新启动时,我遇到了问题。我遇到黑屏,并显示文字:
Grub loading.
Welcome to GRUB!
error: file '/grub/i386-pc/normal.mod' not found.
Entering rescue mode...
grub rescue>
从那时起我就用谷歌搜索寻找答案。我差点就找到一个了这里在 Ubuntu 论坛上,然后我看到其中一条评论说这是不真实的。还有另一个答案,但我不确定是否要从 Live CD 安装,以免搞砸。
如果您在不断遇到分区、命令、教程和系统问题后也花了 7 个小时进行设置,您就会理解我的恐惧。多么高兴啊。
有人知道让 grub 工作的简单解决方案吗?
答案1
真是一件烦人的事...
由于显然目录 /boot/grub/i386-pc 根本不存在,我最终通过将整个 /usr/lib/grub/i386-pc 复制到 /boot/grub 解决了问题。就这样。
cp -r /usr/lib/grub/i386-pc /boot/grub
答案2
我正面临类似的问题(顺便说一句也在拱门上)
Grub 无法找到此文件并运行,因为在我的情况下它使用了不正确的“前缀”。
这就是你要做的。您启动进入 grub 救援模式,然后您只需弄清楚如何启动它即可。
首先你跑放这将列出变量,例如我的是
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 上,该 /dev/sdb1 在我的 arch 分区中作为 /boot 安装,因此正确的前缀是(hd1,msdos1)/grub
因此,为了启动,我需要这样做:
set prefix=(hd1,msdos1)/grub
insmod normal
normal
在您的情况下,您必须记住或猜测 grub 安装在哪个分区上。你可能猜错了,它不会造成任何损害,insmod 命令只会失败,你可以用另一个分区重试。
之后,grub 会像平常一样加载,我可以从列表中选择我想要引导的内容。通常,当发生这样的混乱时,将 grub 重新安装到您的 mbr(使用grub 安装)应该永久修复它,这样您就不必每次启动时都执行此操作。然而我有有很多困难找出如果修复它并不那么容易该怎么做(或者我会分享你应该做什么)。
仅当此操作失败时(例如,如果前缀正确但仍然无法启动),您才应该求助于 live 或救援 CD 来解决该问题(最好避免这种情况)
答案3
我今天在全新安装 Mint 15 后遇到了这个问题。
安装程序创建了/boot/grub/x86_64-efi
模块,但不是常规/boot/grub/i386-pc
模块。
从 Live CD 重新安装 Grub 解决了该问题。
代替/dev/sda和/dev/sda1使用您的启动设备和启动分区,然后从 Live CD 运行以下命令:
sudo mount /dev/sda1 /mnt
sudo grub-install --boot-directory=/mnt /dev/sda
sudo reboot
答案4
我刚刚在 Ubuntu 20.04 上遇到了这个问题,并通过从 U 盘启动实时 Ubuntu,然后运行启动修复工具,在 5 分钟内修复了该问题:
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair