当前位置: 首页>>技术教程>>正文


boot – rub抢救提示,修复g

, ,

问题描述

我最近对硬盘进行了重新分区,并且系统上的GRUB已损坏。在启动时,我会收到GRUB抢救提示,并且必须执行以下步骤才能正常启动:

set root=(hd0,msdos6)
set prefix=(hd0,msdos6)/boot/grub
insmod normal
normal

(这些步骤已在此处的另一篇文章中找到!)。

我对每次引导都重复这一点感到非常厌倦,如何永久修复GRUB?

最佳思路

要修复grub抢救,请执行以下步骤:

  • 首先是我们必须在修复grub之后才启动操作系统。

    #to start OS-->
    error: unknown filesystem.
    Entering rescue mode...
    grub rescue>
    

    当您首先看到此类错误时,我们必须检查“Filesystem”是否为ext2′

    grub rescue> ls        # type 'ls' and hit enter to see drive partition.
    (hd0) (hd0,msdos6) (hd0,msdos5) (hd0,msdos4) ...   # you will see such things 
    

这是我们的驱动器,现在我们必须检查哪一个是ext2。

grub rescue>ls (hd0,msdos6)
error: disk 'hd,msdos6' not found.

换另一个驱动器,直到得到“ Filesystem is ext2”。

grub rescue>ls (hd0,msdos5)
error: disk 'hd,msdos5' not found.
grub rescue>ls (hd0,msdos2)
(hd0,msdos2): Filesystem is ext2        # this is what we want

现在设置路径

grub rescue>set boot=(hd0,msdos2)
grub rescue>set prefix=(hd0,msdos6)/boot/grub
grub rescue>insmod normal
grub rescue>normal
  • 现在只要在任何Ubuntu上执行以下命令即可修复grub

    sudo grub-install /dev/sda
    sudo apt-get update
    # to update grub
    sudo apt-get upgrade
    

确保登录操作系统后必须更新grub

次佳思路

我会尝试运行update-grub以便再次构建grub.conf /grub.cfg

您也可以尝试使用grub-install,但是我认为这没有帮助。

如果您想了解更多信息,请通过运行以下命令首先检查您拥有哪个版本(GRUB 1或2):

dpkg -l | grep grub

如果您有GRUB 2,则可以使用以下教程:http://www.dedoimedo.com/computers/grub-2.html

当然,在我们谈论引导过程时,请小心使用GRUB,这是一种敏感的机制。

第三种思路

在我看来,update-grub会组装grub.cfg,但您还需要(重新)运行grub-install(或grub-setup?)以使用基本信息更新MBR /引导扇区-在哪个分区上找到grub.cfg文件和显然这些模块。

第四种思路

当您收到GRUB救援提示时,这意味着GRUB引导加载程序无法从/boot/grub中包含它们的分区中找到其模块。这样做的原因是,驱动器MBR记录中包含的代码很小,因此其主要目的是查找并加载其余的引导程序代码。加载模块后,它可以显示GRUB菜单并处理其余的引导过程。如果找不到模块,则会显示非常有限的救援提示。

因此,如果您进行了重新分区,那么您所看到的是完全正常的,从而破坏了引导加载程序对包含引导模块的分区的引用。

由于您可以手动引导,因此最简单的修复方法是手动引导并在MBR中重新安装引导加载程序,以便它对分区具有正确的引用。这样做的方法是:

sudo grub-install /dev/sda

这假定您是从/dev/sda引导的(大多数情况,如果不是,则将其替换为正确的驱动器)。

与使用boot-repair相比,此解决方案要简单得多,但是如果不确定,则可能更合适。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9333.html,未经允许,请勿转载。