rub抢救提示,修复repair


30

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

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

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

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


1
两种可能:(1)引导修复(2)Super Grub救援磁盘请参阅:http
CentaurusA 2012年

1
问题引导中列出的步骤对我有用。人们应该正确记住linux的分区。
TheCrazyProgrammer

1
就像其他人所说的那样,先执行update-grub然后执行grub-install / dev / sda可以解决此问题。
TheCrazyProgrammer

请参阅Karthik对于“找不到文件”的答案:askubuntu.com/questions/443241/…–
samis

Answers:


11

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

  • 首先是我们必须在修复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.

换另一个驱动器,直到得到“ 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


1
OP已经知道如何启动他的OS。这个答案可能更简洁。
年长者怪胎

1
这个答案对我很有帮助。我的问题与原始问题不完全相同,因此其他信息变得很有用。
retroj

1
+1此问题已通过KDE Neon安装失败的问题解决。
达伦·刘易斯

错误:找不到文件'/boot/grub/i386-pc/normal.mod'我该怎么办?
BhushanDhamale

7

我会尝试运行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,这是一种敏感的机制。


2
grub-install <correct-drive, i.e. /dev/sda>并且update-grub2终于做到了,我在Ubuntu 15.04
格雷格Kramida

6

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


4

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

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

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

sudo grub-install /dev/sda

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

此解决方案比使用容易得多boot-repair,但是如果不确定,这可能更合适。


1
+1以易于理解的方式解释正在发生的事情。
monotasker 2014年

2

最简单的方法是:

sudo apt-get purge grub-pc grub-pc-bin

然后:

sudo apt-get install grub-pc grub-pc-bin

2
这是一种可能会奏效的大锤方法,但是只需重新安装引导加载程序以更新对分区的引用(该分区已被重新分区破坏),则更为简单。
bcbc 2012年

1

解决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文件夹在哪里。如果您遇到以下问题:

找不到启动/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救援模式将进入grub菜单。现在您可以执行linux命令。

linux comand

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菜单执行此操作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.