我最近重新分区了我的硬盘,但系统上的 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)/
您将看到一些文件或文件夹:
现在,如果您很幸运,请执行以下操作:
set root=(hd0, 4)
set prefix=(hd0, 4)/boot/grub/
insmode normal
normal
如果你很幸运,那么它将解决你的问题。有时人们会遇到找不到 1386-pc 文件夹的问题。在这种情况下,你必须查看 grub 文件夹在哪里。如果你遇到以下问题:
在这种情况下,您需要找到文件夹 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命令。
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
,但如果您不确定,这可能更合适。