更新后,出现“错误:文件未找到。”然后是“grub rescue> _”。

我刚刚安装了相当多的12.10更新,被提示重新启动,结果发现无法启动。

由于我的声望较低,我还不能添加评论,所以我通过这种方式添加评论... 我使用了8128s的答案和Boot-repair,但在apt-get update之前,我不得不添加这行命令:sudo sed 's/trusty/saucy/g' -i /etc/apt/sources.list.d/yannubuntu-boot-repair-trusty.list,就像你在他提供的链接中看到的那样。 - Dominik
6个回答

使用Boot Repair修复您的引导加载程序。
1. 从LiveCD或Live USB启动Ubuntu。 2. 连接到互联网。 3. 打开终端,并添加Boot Repair PPA。 sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update 4. 安装Boot Repair。 sudo apt-get install -y boot-repair && boot-repair 5. 启动并使用,详细信息请参阅https://help.ubuntu.com/community/Boot-Repair#Using_Boot-Repair

我必须以root身份运行3个命令(sudo su)而不仅仅是使用sudo命令 - David Brossard
1谢谢!电源中断后拯救了我的服务器。是时候买个不间断电源了! - Domenic D.
使用Kubuntu 13.10并且运行良好。谢谢。 - David
如果没有任何显示器或只想在终端上工作,请使用 boot-repair -b - Omid N

  1. 输入ls以获取分区列表
  2. 输入set prefix=(hd0,msdos6)/boot/grub [你几乎肯定需要在括号中输入不同的驱动器/分区,你可能需要尝试ls列出的所有选项,直到找到适用的。
  3. 输入insmod normal
  4. 输入normal,你将恢复启动提示符!

另请参阅:我找到这个有用的地方。我怀疑这对于遇到此错误的每个人都有效,但我希望它能帮助到某些人。

一旦加载了Ubuntu,请尽快运行sudo grub-install /dev/sdasudo update-grub。这意味着您不必每次启动机器时都执行上述繁琐的过程。


10当我运行insmod normal时,它再次显示文件未找到。 - tovmeod
1你还可以使用命令 ls (hd0,msdos1)/ 来检查分区的内容,如果你有很多分区的话,这样会更快。 - Jonathan
这对我有用,除了我有一个单独的引导分区,所以格式是set prefix=(hd0)/grub,因为你需要相对于驱动器上的分区引用grub目录,而不是相对于正常操作期间的挂载点。 - Nick Coons

我遇到了完全相同的问题 - 找不到normal.mod,引导分区的ls命令会产生空白行。经过一周的故障排除,为了使系统能够正常启动,我采取了以下步骤。
1. 拿到了SuperGrub的副本并创建了一个启动光盘。现在我可以重新登录我的系统了。拿到了BootRepair的副本,但是无法直接从硬盘启动系统,只能继续使用光盘。由于Grub位置和Grub选项都是灰色的,BootRepair表现得有点奇怪。不过它报告安装成功。
2. 硬盘最初的设置如下:
sda1 ext4 根目录带有引导
sda2 linux 交换分区
sda3 ext4 作为备用驱动器(用于Virtual Box中的虚拟机)。
3. 使用Ubuntu 10.10的Live CD副本。运行gparted Install gparted来缩小sda1分区,并在硬盘前面创建sda4 ext4引导分区,并将挂载点设置为/boot,然后从/中删除引导目录。现在BootRepair有可用的选项了。安装在引导分区上,现在可以从硬盘启动了。
4. 出于好奇心,我决定进一步调查。引导修复日志中对于我的sda1 ext4分区有一个奇怪的条目,它被报告为DOS,并且具有一个短小的8字符UUID,而不是blkid报告的UUID。grub-probe将文件系统报告为vfat。
5. 在尝试了许多其他方法后,我清除了sda1分区记录的前440个字节。Grub-probe现在将文件系统报告为ext2。运行update-grub后,sda1分区的正确UUID出现了。
问题似乎是双重的: 1. 它似乎影响到分区记录中有对msdos的引用的安装。 2. grub-probe不会尝试解决文件系统类型与分区记录中内容不匹配的问题。

另一个需要检查的事项是您的BIOS中的启动顺序。显然,我在所有磁盘上都安装了grub(可能是在按照8128的答案后),但在更新我的Linux发行版(Debian)时出现了问题。将第一个启动磁盘更改为我的Linux操作系统后问题得到解决。

我在升级到Kubuntu 13.10时遇到了这个错误。在进行发行版升级期间,我插入了一个存储器到USB端口。重新启动后,我直接进入了Grub Rescue模式。拔掉USB存储器并重新启动解决了这个问题。