如何使用 GRUB Rescue 修复 Linux

您所在的位置:网站首页 电脑启动出现grub是什么意思 如何使用 GRUB Rescue 修复 Linux

如何使用 GRUB Rescue 修复 Linux

2024-07-03 14:32| 来源: 网络整理| 查看: 265

如何使用 GRUB Rescue 修复 Linux

总结:如果您的 GRUB shell 显示“grub>”提示符,您可以使用 ls、set、linux 和 initrd 命令来修复你的 Linux 系统。相反,如果您看到“grub rescue>”提示,请使用 set、insmod、linux 和 initrd 命令启动您的电脑。

如果您的 Linux 计算机无法启动进入其操作系统,您可能会发现自己正盯着 GRUB shell 中的提示符。请按照以下步骤修复损坏的启动过程。

当您的引导加载程序不启动时

很少有计算机问题像无法启动一样让您的心沉沦得如此之快。没有可用的操作系统,您的计算机就不是真正的计算机。

这可能是一个非常不透明的问题,没有简单的方法可以深入了解根本原因。如果无法访问 Linux,您将无法使用任何常用的诊断工具和流程来调查问题。在不确定问题是什么的情况下,您如何解决它?

在 Linux 上,GRUB 是控制引导过程的软件。如果您安装了多个操作系统,它会让您选择要启动的操作系统。

GRUB 由其配置控制。它也依赖于其他支持文件来执行其功能。如果其中任何一个丢失或损坏,GRUB 将无法工作。对计算机硬盘驱动器和分区的更改需要反映在 GRUB 的配置中。如果不是这种情况,GRUB 的指令将没有意义,您的引导过程将无法运行。

附带说明一下,我们所说的 GRUB 实际上是 GRUB 2。这是 2012 年发布的 GRUB 的高级版本。除其他变化外,它还改变了“grub.cfg”文件的创建方式,让您从可移动媒体启动。

如果 GRUB 无法加载操作系统,您将只能盯着 GRUB shell 中的提示。这是一个极简主义的环境,可让您执行一些操作。但是,如果操作得当,这些步骤可以使您的计算机复活。

有两种不同的 GRUB shell。根据问题的根本原因,您可能会发现自己处于 GRUB shell 提示符下:

grub>

或者在 GRUB rescue shell 提示符下:

grub rescue>

GRUB 救援 shell 比 GRUB shell 更受限制,但它仍然包含足够的冲击力让您的计算机启动。计算机启动后,您就可以更好地解决根本原因。

使用 GRUB 外壳

GRUB shell 是一个命令行界面,可让您使用一小部分 Linux 命令。如果您发现自己在这里而不是通常的登录屏幕,则意味着您的启动过程一团糟。

您可以访问的命令与通常的 Linux 版本不同。例如,GRUB shell ls 命令不是 Bash ls 命令。它与它几乎没有共同之处。我们可以使用 --help 选项看到这一点。

ls --help

它仅列出了五个选项。这与 Bash 中 ls 支持的几十个选项相去甚远。尽管如此,即使我们的命令面板有些柔和,我们仍然可以纠正这种情况。

在提示符下,键入 ls 并按“Enter”。

ls

在这台计算机上,它列出了三个项目。

(hd0) 是第一个硬盘。 (hd0,gpt1) 是第一个硬盘上的第一个分区。 (hd0,gpt2) 是第一个硬盘上的第二个分区。

“gpt”标签代表 GUID 分区表。当我们引用分区时,我们需要包括括号“()”,但我们可以省略标签。

要依次查看分区,我们将使用 ls。

ls (hd0,1)ls (hd0,2)

我们发现第二个分区上有一个 Linux 文件系统。我们将通过查看该分区的根目录来进一步调查。

ls (hd0,2)/

很明显,这是 Linux 分区,上面有引导目录。这是存储 GRUB 文件、Linux 引导映像和其他引导文件的地方。

在这台计算机上,我们需要在发出命令时引用分区 (hd0,2)。在您的计算机上,您可以使用您在其中找到 Linux 安装的任何分区。

我们可以使用 cat 命令通过将目录路径和文件名附加到分区名称来查找文本文件,如下所示:

cat (hd0,2)/etc/issue

在多重引导安装中,这是一种验证您是否在正确分区上的有用方法。它也非常适合查看配置文件内部。

在这里,我们使用带有 -l(长)和 -h(人类可读大小)选项的 ls 命令来列出文件在“/boot”目录中。

ls -lh (hd0,2)/boot

为了让这台计算机启动,我们需要告诉 GRUB 我们新发现的 Linux 分区包含启动文件。

set root=(hd0,2)

我们需要指定从哪个 Linux 内核启动。我们使用 linux 命令来做到这一点。请注意,我们还必须使用通常的 Linux 硬盘驱动器和分区命名方案提供根目录。

linux /boot/vmlinuz-6.2.0-20-generic root=/dev/sda2

在我们的示例计算机上,我们使用的是第一个硬盘驱动器 (hd0)。这在通常的 Linux 命名法中称为 sda。我们发现第二个分区是Linux分区,所以我们需要指定sda2。

您的机器可能有所不同。例如,如果您的 Linux 分区报告为 (hd2,1),这意味着分区一位于第三个硬盘驱动器上,或 sdc1。

我们还需要指定在计算机启动时使用哪个基于 RAM 的文件系统映像。这必须使用与我们正在使用的 Linux 内核相同的数字组件。

initrd /boot/initrd.img-6.2.0-20-generic

现在,要启动我们的系统,请键入“boot”并按“Enter”。

这应该将您的计算机启动到 Linux。这让我们再次运行,但我们仍然需要修复 GRUB,这样我们就不需要在每次启动计算机时都这样做。

我们将运行 update-grub。这将扫描我们的系统,识别操作系统,并创建一个新的 GRUB 配置。我们需要以 root 用户身份运行它。

sudo update-grub

在极少数情况下,您可能还需要使用 grub-install 重新安装 GRUB 引导加载程序。

sudo grub-install /dev/sda

请注意,您无需指定要安装到哪个分区,只需指定哪个驱动器即可。在正常安装中,它与您的 Linux 所在的驱动器相同。

布丁的证明会在下次重启时出现。您的计算机应正常重启。

使用 GRUB 救援 Shell

根据引导问题的性质,您可能不会进入 GRUB shell。您可能处于 GRUB rescue 模式。如果是这样,您的提示将如下所示:

grub rescue>

我们需要在这个 shell 中发出的命令是不同的。我们需要使用 ls 来查找 Linux 分区,就像您使用 GRUB shell 一样。确定 Linux 分区后,您可以继续输入这些命令。

请记住使用适合您计算机的驱动器标识符和内核版本号。 insmod 命令加载内核模块。

set prefix=(hd0,2)/boot/grubset root=(hd0,2)insmod normalinsmod linuxlinux /boot/vmlinuz-6.2.0-20-generic root=/dev/sda2initrd /boot/initrd.img-6.2.0-20-generic

然后,您可以键入“boot”并按“Enter”重新启动计算机。一旦它重新启动并且您已登录,请使用 update-grub 命令更新 GRUB。

其他可能的补救措施

如果问题是缺少启动文件,例如“vmlinuz”和“initrd.img”文件,您可以从 Live DVD 或可启动的 Linux USB 闪存驱动器启动计算机,并将丢失的文件复制到位。

请注意,“vmlinuz”和“initrd.img”文件必须具有相同的版本号,因为它们是一对匹配的。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3