Grub救援提示,修复grub

我最近重新分区了我的硬盘,我的系统损坏了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 

确保在登录OS后必须更新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 / boot扇区的基本信息 – 在哪个分区上找到grub.cfg文件,显然这些模块。

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

所以,如果你重新分区,你所看到的是完全正常的,从而打破了引导程序对包含引导模块的分区的引用。

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

 sudo grub-install /dev/sda 

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

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

最简单的方法是:

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

然后:

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

解决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救援模式将进入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链接

制作可引导的驱动器并使用该活动磁盘打开计算机。 它不会损害您的任何文件。 观看有关如何操作的video。 现在你必须找到你的i386-pc文件夹。 它会在

 rootContainingDirectory-usr-lib-grub 

现在将i386-pc复制到boot / grub /文件夹。 您可能有一个权限问题,以克服该类型以下命令:

 sudo nautilus 

现在右键单击该目录并将所有者更改为ubuntu live session user

关注video: 权限更改

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