36 boot grub2 grubrescue
我最近重新分区了我的硬盘,但我的系统上的 GRUB 已损坏。启动时,我收到 GRUB 救援提示,我必须执行以下步骤才能正常启动:
set root=(hd0,msdos6)
set prefix=(hd0,msdos6)/boot/grub
insmod normal
normal
Run Code Online (Sandbox Code Playgroud)
(这些步骤是在此处的另一篇文章中找到的!)。
我厌倦了在每次启动时重复这个,我如何永久修复 GRUB?
小智 16
第一件事是我们必须在修复 grub 之后才启动我们的操作系统。
#to start OS-->
error: unknown filesystem.
Entering rescue mode...
grub rescue>
Run Code Online (Sandbox Code Playgroud)
当您首先看到这样的错误时,我们必须检查“文件系统”是否为 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
Run Code Online (Sandbox Code Playgroud)这是我们的驱动器,现在我们必须检查哪个是 ext2。
grub rescue>ls (hd0,msdos6)
error: disk 'hd,msdos6' not found.
Run Code Online (Sandbox Code Playgroud)
换一个驱动器,直到你得到“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
Run Code Online (Sandbox Code Playgroud)
现在设置路径
grub rescue>set boot=(hd0,msdos2)
grub rescue>set prefix=(hd0,msdos6)/boot/grub
grub rescue>insmod normal
grub rescue>normal
Run Code Online (Sandbox Code Playgroud)
现在只需在任何 Ubuntu 上通过以下命令修复 grub
sudo grub-install /dev/sda
sudo apt-get update
# to update grub
sudo apt-get upgrade
Run Code Online (Sandbox Code Playgroud)确保您必须在登录操作系统后更新 grub
我会尝试运行update-grub以再次构建grub.conf/ grub.cfg。
您也可以尝试使用grub-install,但我认为这无济于事。
如果您想阅读更多内容,请先通过运行以下命令检查您拥有哪个版本(GRUB 1 或 2):
dpkg -l | grep grub
Run Code Online (Sandbox Code Playgroud)
如果您有 GRUB 2,则可以使用以下教程:http : //www.dedoimedo.com/computers/grub-2.html
当然,处理 GRUB 时要小心,因为我们正在谈论引导过程,这是一个敏感的机制。
小智 6
在我看来,update-grub组装了grub.cfg,但您还需要(重新)运行grub-install(或grub-setup?)以使用基本信息更新 MBR/引导扇区 - 在哪个分区上找到grub.cfg文件&显然是这些模块。
小智 6
解决grub救援失败的终极案例: 问题: 1. i386-pc not found****normal mode not working cp not working search.file not working。所有这些都可以通过以下命令解决,也适用于 Ubuntu 18.04。Step1:找到包含目录的根文件夹。
ls
Run Code Online (Sandbox Code Playgroud)
例如,如果根文件夹在 (hd0, gpt4) 中,则键入
ls (hd0, 4)/
Run Code Online (Sandbox Code Playgroud)
您将看到一些文件或文件夹:
现在,如果您很幸运,请执行以下操作:
set root=(hd0, 4)
set prefix=(hd0, 4)/boot/grub/
insmode normal
normal
Run Code Online (Sandbox Code Playgroud)
如果你很幸运,那么它会解决你的问题。有时人们会遇到诸如找不到 1386-pc 文件夹之类的问题。在这种情况下,您必须查看您的 grub 文件夹在哪里。如果您遇到以下问题:
在这种情况下,您需要找到文件夹 grub2。如果您有 grub2 并且在该文件夹中,您可以拥有 i386-pc 文件夹。然后你需要输入
prefix=(hd0, 4)/grub2/
Run Code Online (Sandbox Code Playgroud)
它会起作用。如果您没有 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
Run Code Online (Sandbox Code Playgroud)
执行此命令后,您的 grub 救援模式将进入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
Run Code Online (Sandbox Code Playgroud)
它将带您进入恢复模式。从那里您可以从几个可用的恢复选项中进行选择。如果它没有帮助,那么您需要下载一个 ubuntu 操作系统,例如 ubuntu 18.04。您可以从以下链接下载: ubuntu 链接
制作一个可启动驱动器并使用该活动磁盘打开您的计算机。它不会损害您的任何文件。请参阅有关如何执行此操作的视频。现在你必须找到你的 i386-pc 文件夹。它将在
rootContainingDirectory-usr-lib-grub
Run Code Online (Sandbox Code Playgroud)
现在将 i386-pc 复制到 boot/grub/ 文件夹。您可能有权限问题来克服该类型的以下命令:
sudo nautilus
Run Code Online (Sandbox Code Playgroud)
现在右键单击该目录并将所有者更改为ubuntu 实时会话用户
跟随视频:权限更改
现在将其粘贴到 boot/grub 文件夹中后,重新启动并移除 USB 驱动器。这次使用第一组命令,它将起作用。如果cp命令正在运行,那么您也可以从 grub 菜单执行此操作。
当您收到 GRUB 救援提示时,这意味着 GRUB 引导加载程序无法从/boot/grub. 这样做的原因是适合驱动器MBR记录的代码很小,因此其主要目的是定位和加载其余的引导加载程序代码。一旦加载了它的模块,它就可以显示 GRUB 菜单并处理启动过程的其余部分。如果找不到模块,它会显示非常有限的救援提示。
因此,如果您重新分区,您所看到的完全正常,从而破坏了引导加载程序对包含引导模块的分区的引用。
由于您可以手动引导,最简单的修复方法是手动引导并在 MBR 中重新安装引导加载程序,以便它正确引用您的分区。这样做的方法是:
sudo grub-install /dev/sda
Run Code Online (Sandbox Code Playgroud)
这假设您从/dev/sda(大多数情况下,但如果不是,请用正确的驱动器替换它)启动。
此解决方案比使用 简单得多boot-repair,但如果您不确定这可能更合适。
| 归档时间: |
|
| 查看次数: |
474401 次 |
| 最近记录: |