Grub救援提示,修复grub

Grub救援提示,修复grub

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

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

(这些步骤可以在另一篇文章中找到!)。

我很厌倦每次启动时都重复此操作,我该如何永久修复 GRUB?

答案1

要修复 grub rescue,请按照以下步骤操作:

  • 首先我们必须启动操作系统,然后才能修复 grub。

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

    当您首先看到这样的错误时,我们必须检查“文件系统”是否为 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.

转到另一个驱动器,直到出现“文件系统是 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

答案2

解决grub救援失败的终极案例:问题:1.未找到 i386-pc****正常模式不起作用 cp 不工作 search.file 不起作用。所有问题都可以通过以下命令解决,也适用于 Ubuntu 18.04。步骤 1:找到包含目录的根文件夹。

ls

例如,如果根文件夹位于(hd0,gpt4),则输入

这就是它的样子

ls (hd0, 4)/

您将看到一些文件或文件夹:

我的根文件位于(hd0,gpt4)

现在,如果您很幸运,请执行以下操作:

set root=(hd0, 4)
set prefix=(hd0, 4)/boot/grub/
insmode normal
normal

如果你很幸运,那么它将解决你的问题。有时人们会遇到找不到 1386-pc 文件夹的问题。在这种情况下,你必须查看 grub 文件夹在哪里。如果你遇到以下问题:

未找到 boot/grub/i386-pc/normal.mod

在这种情况下,您需要找到文件夹 grub2。如果您有 grub2,并且该文件夹中可能有 i386-pc 文件夹。然后您需要输入

prefix=(hd0, 4)/grub2/

它会起作用。如果您没有 grub2 并且找不到 i386-pc 文件夹,请执行以下操作:

grub rescue>set root=(hd0, 4)
grub rescue>set prefix=(hd0, 4)/usr/lib/grub
grub rescue>insmode normal
grub rescue>normal

执行此命令后你的 grub 救援模式将进入蛴螬菜单。现在您可以执行linux命令。

linux命令

grub>set root =(hd0, 4)
grub>set prefix= (hd0, 4)/boot
grub>insmaod linux
grub>linux vmlinuz.....-generic
grub>intrd (hd0, 4)/boot/...-generic
grub>boot

它会带您进入恢复模式。从那里,您可以从几个可用的恢复选项中进行选择。如果它没有帮助,那么您需要下载一个 ubuntu 操作系统,例如 ubuntu 18.04。您可以从以下链接下载: ubuntu 链接

制作一个可启动驱动器,并使用该活动磁盘打开计算机。这不会损害您的任何文档。观看有关如何执行此操作的视频。现在您必须找到您的 i386-pc 文件夹。它将位于

rootContainingDirectory-usr-lib-grub

现在将 i386-pc 复制到 boot/grub/ 文件夹。您可能遇到权限问题,要解决该问题,请输入以下命令:

sudo nautilus

现在右键单击该目录并将所有者更改为ubuntu 实时会话用户

观看视频:权限变更

现在,将其粘贴到 boot/grub 文件夹中后,重新启动并移除 USB 驱动器。这次使用第一盘命令,它将起作用。如果cp命令正在运行,那么您也可以从 grub 菜单执行此操作。

答案3

我会尝试跑步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 时要小心,因为我们正在讨论启动过程,这是一个敏感的机制。

答案4

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

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

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

sudo grub-install /dev/sda

这假设您从/dev/sda(大多数情况下,但如果不是,请用正确的驱动器替换它)启动。

这个解决方案比使用简单得多boot-repair,但如果您不确定,这可能更合适。

相关内容