我最近在我的机器上安装了 arch(希望成功)。但是当我重新启动时,我遇到了问题。我有一个黑屏,上面有文字说
Grub loading.
Welcome to GRUB!
error: file '/grub/i386-pc/normal.mod' not found.
Entering rescue mode...
grub rescue>
Run Code Online (Sandbox Code Playgroud)
从那以后我用谷歌搜索寻找答案。我几乎找到了一个在这里对Ubuntu论坛尚未然后我看到的评论说这是不真实的一个。还有另一个答案,但我不确定是否要从 live CD 安装,以免搞砸。
如果您在不断遇到分区、命令、教程和系统问题后也花了 7 个小时来设置它,您就会理解我的恐惧。多么快乐。
有人知道让 grub 工作的简单解决方案吗?
小智 10
真是烦人的事...
显然目录 /boot/grub/i386-pc 根本就没有到位,我最终通过将整个 /usr/lib/grub/i386-pc 复制到 /boot/grub 解决了这个问题。就这样。
cp -r /usr/lib/grub/i386-pc /boot/grub
Run Code Online (Sandbox Code Playgroud)
我遇到了类似的问题(顺便说一句也在拱门上)
Grub 无法找到此文件并运行,因为它在我的情况下使用了不正确的“前缀”。
这就是你要做的。您启动到 grub 救援模式,然后您只需弄清楚如何启动它。
首先你运行set这将列出变量,例如我的是
cmdpath=(hd0)
prefix=(hd1,msdos3)/boot/grub
root=hd1,msdos3
Run Code Online (Sandbox Code Playgroud)
现在,前缀是 grub 查找 normal.mod 文件的变量。在我的情况下,hd1,msdos3与/dev/sdb3相同(同样,hd0,msdos1 将是 /dev/sda1)您可能想要执行的操作是在ls 中输入有效分区列表
现在,在我的例子中,grub 再次安装在 /dev/sdb1 上,它在我的 arch 分区中作为 /boot 挂载,所以正确的前缀是(hd1,msdos1)/grub
所以为了启动,我需要这样做:
set prefix=(hd1,msdos1)/grub
insmod normal
normal
Run Code Online (Sandbox Code Playgroud)
在您的情况下,您必须记住或猜测您在哪个分区上安装了 grub。你可以猜错,它不会造成任何伤害,insmod 命令只会失败,你可以用另一个分区再试一次。
在此之后,grub 正常加载,我可以从列表中选择我想要启动的内容。通常,当发生这样的混乱时,将 grub 重新安装到您的 mbr(使用grub-install)应该可以永久修复它,这样您就不必每次启动时都这样做。但是,如果修复它并不容易(或者我会分享你应该做什么),我很难找到该怎么做。
只有当这失败时(例如,如果前缀正确但您仍然无法启动),您才应该求助于 live 或救援 CD 来解决问题(最好避免这种情况)
在全新安装 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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
131860 次 |
最近记录: |