当我启动 PC 时,我的 Fedora 16 发行版中会出现此问题。我尝试了以下方法,但都无法启动。有什么帮助吗?我完全被阻止了。
Grub loading.
Welcome to GRUB!
error: file not found. Entering rescue mode...
grub rescue>
grub rescue> ls
(hd0) (hd0,gpt3) (hd0,gpt2) (hd0,gpt1)
grub rescue> ls (hd0,gpt2)/
./ ../ lost+found/ memtest86+-4.20 grub2/ System.map-3.1.0-0.rc3.git0.0.fc16.i686 config 3.1.0.0.rc3.git0.0.fc16.i686 grub/ vmlinuz-3.1.0.0.rc3.git0.0.fc16.i686 elf-memtest86+-4.20 initramfs-3.1.0.0.rc3.git0.0.fc16.i686.img initramfs-3.1.0.0.rc4.git0.0.fc16.i686.img System.mpa-3.1.0.0.rc3.git0.0.fc16.i686 config-3.1.0.0.rc3.git0.0.fc16.i686 vmlinuz-3.1.0.0.rc3.git0.0.fc16.i686
grub rescue> set prefix=(hd0,gpt2)/boot/grub
grub rescue> set root=(hd0,gpt2)
grub rescue>insmod normal
error unknown filesystem. or sometimes "error: file not found."
grub rescue>normal
unknown command normal
答案1
答案2
- 输入“ls”查看分区。我列出的内容如下:(hd0) (hd0,msdos6) (hd0,msdos5) 等
- 然后在所有分区中输入:“ls (hd0,msdos5)/”,直到找到包含 linux /boot 目录的目录列表
- 找到分区后,像这样设置前缀:“set prefix=(hd0,msdos5)/boot/grub”
- 然后输入:“set root=(hd0,msdos5)”
- 执行“insmod normal”
- 执行“insmod linux”
- 执行“ls /boot”以找出最新的“vmlinuz-2.6.38-14”和“initrd.img-2.6.38-14-generic”的名称或最终名称
- 在我的例子中,我输入了“linux /boot/vmlinuz-2.6.38-14-generic root=/dev/sda5 ro”,这是我的目录列表中最新的 vmlinuz 版本号
- 将 initrd 设置为与上面相同的版本。在我的例子中,它是“initrd /boot/initrd.img-2.6.38-14-generic”
- 输入“boot”
此时,您的系统应该可以启动到 Linux。您已启动到 Linux,但这些更改不是永久性的。要使它们永久生效,请进入命令提示符并输入以下命令:“sudo grub-install /dev/sda”
(“sda” 是包含您的主引导记录和您的 Linux 分区的磁盘)。
您可以在这里获取有关该过程的更多信息:https://help.ubuntu.com/community/Grub2#Command_Line_and_Rescue_Mode
答案3
在浪费时间之前fsck
,您可以尝试正确获取命令:
set prefix=(hd0,gpt2)/boot/grub
这不是路径名,正如前面命令的输出所示。路径名可以是(hd0,gpt2)/grub
或(hd0,gpt2)/grub2
,因为这些是卷上实际存在的目录。(两者中的哪一个,您必须自己弄清楚。)事实上,由于您已将 设置root
为该卷,因此prefix
可以简单地为:
set prefix=/grub
当该工具说找不到您命名的文件时,请尝试相信错误消息并更正名称。
答案4
我正在使用 Ubuntu 12.04,每当我尝试启动系统时,它都会停在 grub rescue 处,下面是我解决此问题的方法:
- 关闭系统电源并断开电源
- 移除硬盘并重新连接
- 将其拧回并重新启动系统
我一直在这么做,因为我的系统经常遇到这样的错误信息。它也能处理“未找到操作系统”的错误。