更新被破坏的grub

我通过wubi在我的笔记本上安装了Ubuntu 10.04(Lucid Lynx)。 自从最近的ubuntu更新以来,我的系统不再起作用了。 当我启动时,我进入了grub rescue> 。 经过一些互联网阅读后,我得出结论,我将不得不重新安装grub(我被遗忘了:$我通过wubi安装了Ubuntu,以为我独立了..)并使用了本教程 。 现在我有一个命令行grub,我很困惑该怎么做。

我的目录结构如下:

 /dev/sda5 (NTFS) /boot /grub  /ubuntu /disks /boot /grub  /install /winboot ... ... 

/ubuntu/disks/boot/grub/是空的是合乎逻辑的吗? 我想让引导程序恢复到可以在windows和linux之间进行选择。 任何帮助赞赏:)

更新通过安装独立的Ubuntu 10.10解决了我的问题。 现在我正确地恢复了我的引导加载程序,现在必须通过3个引导加载程序屏幕进入Ubuntu 10.04虽然^^

起初我回答了这个问题,以匹配Lucasmus的情况,他实际上已经能够恢复已经启动的能力,并且在他的MBR上有一个(非wubi Ubuntu安装)的工作grub。 由于大多数人来到这里可能不是那种情况,但只是在启动时获得grub救援shell并且无法启动Windows或他们的Wubi安装,我已经重新制作了正常情况的说明。 Lucasmus的问题的答案基本上是遵循下面的步骤2到5。

遗憾的是,这是Wubi中的已知错误https://bugs.launchpad.net/bugs/610898 。 我已经提交了一个补丁,希望防止未来的用户让Wubi使他们的驱动器完全无法启动但是在接受该修复或其他修复之前,这是你需要做的(在Wubi中)以获得Windows和Ubuntu启动并防止这种情况再次发生:

1:从Ubuntu LiveCD启动并运行sudo software-properties-gtk -e universe && sudo apt-get update && sudo apt-get install mbr && sudo install-mbr /dev/sda

如果您有多个硬盘驱动器,则需要在最后一个命令中将/dev/sda更改为驱动器窗口。 但它永远是一个驱动器,而不是一个分区。 所以/dev/sdb可能是合适的,但从来没有 /dev/sdb1 (做后者可能会覆盖Window的PBR,使得更难以启动回到Windows)。

现在你应该可以像以前一样启动Windows或Wubi安装。 如果您想继续使用Wubi,请按照以下步骤操作,以确保您不会再次进入无法启动状态。

2:启动到你的Wubi安装并运行sudo dpkg-reconfigure grub-pc这将显示一些带有问题的对话框。

3:对于第一个问题The following Linux command line was extracted from /etc/default/grub or the 'kopt' parameter in GRUB Legacy's menu.lst. Please verify that it is correct, and modify it if necessary. The following Linux command line was extracted from /etc/default/grub or the 'kopt' parameter in GRUB Legacy's menu.lst. Please verify that it is correct, and modify it if necessary. 将该字段保留为默认值(可能为空白),然后按Enter继续下一个问题。

4:对于第二个问题The following string will be used as Linux parameters for the default menu entry but not for the recovery mode. 再次将其保留为默认值(可能是“安静的飞溅”)并按Enter继续

5:这个问题...GRUB install devices:是重要的一个。 确保取消选中除/dev/loop0 。 您可以使用空格键选中/取消选中一个条目,然后使用箭头键更改条目。

如果在从此列表中取消选中/ dev / sda之前按Enter键,则计算机将再次无法启动。

现在,您可以安全地更新/升级您的Wubi安装,而无需担心您的计算机无法启动。

如果你的评论建议,/ dev / sda5有一个完整的/ boot目录,那么添加如下内容:

 menuentry 'Ubuntu Lucid 10.04' --class ubuntu --class os { recordfail set root='(hd0,5)' linux /boot/vmlinuz- root=/dev/sda5 ro initrd /boot/initrd.img- } 

其中被sda5 / boot上的实际文件名替换为10.10系统下的/etc/grub.d/40_custom。 然后在运行的10.10系统中运行update-grub ,重启后grub菜单上应该有一个10.04选项用于直接启动。

注意事项:

  1. update-grub重写/boot/grub/grub.cfg在重新启动之前检查是否正确。
  2. 总是忘记如果/ dev / (hd0,5)对应于(hd0,5)中的(hd0,5)(hd0,4) ,那么请仔细检查我或准备重新启动到10.10并修复它。

祝好运。