更新损坏的 grub

更新损坏的 grub

我的笔记本上通过 wubi 安装了 Ubuntu 10.04 (Lucid Lynx)。但是自从最近的 ubuntu 更新后,我的系统就不能用了。启动时,我进入了grub rescue>。在网上查阅了一些资料后,我得出结论,我必须重新安装 grub(我忘了 :$ 我是通过 wubi 安装 Ubuntu 的,我以为它是独立的……)并使用本教程。现在我有一个命令行 grub,但不知道该做什么。

我的目录结构如下:

/dev/sda5 (NTFS)  
    /boot
        /grub
            <grubfiles>
    /ubuntu
        /disks
            /boot
                /grub
                    <empty>
        /install
        /winboot
        ...
    ...

空的逻辑合理吗/ubuntu/disks/boot/grub/?我想让引导加载程序重新能够在 Windows 和 Linux 之间进行选择。任何帮助都值得感激 :)

更新 通过安装独立的 Ubuntu 10.10,我的问题得到了一定程度的解决。现在我的引导加载程序已正确恢复,不过现在必须经过 3 个引导加载程序屏幕才能进入 Ubuntu 10.04 ^^

答案1

一开始我回答这个问题是为了匹配 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在最后一个命令中更改为 Windows 所在的驱动器。但它始终是驱动器,而不是分区。因此/dev/sdb可能合适,但绝不 /dev/sdb1(后者可能会覆盖 Windows 的 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.保留字段的默认值(可能是空白)并按回车键继续下一个问题。

4:对于第二个问题The following string will be used as Linux parameters for the default menu entry but not for the recovery mode.,请保留默认值(可能是“quiet splash”),然后按 Enter 继续

5:这个问题...GRUB install devices:很重要。确保你取消选中除 之外的所有选项/dev/loop0。你可以使用空格键选中/取消选中条目,并使用箭头键更改条目。

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

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

答案2

如果正如您的评论所暗示的那样,/dev/sda5 有一个完整的 /boot 目录,则添加类似以下内容:

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

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

注意事项:

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

祝你好运。

相关内容