安装另一个硬盘后,Grub2 指向错误的硬盘

安装另一个硬盘后,Grub2 指向错误的硬盘

我有一台安装了两个 SATA 硬盘的台式机。其中一个安装了 Windows,另一个安装了 Ubuntu 12.04。一切正常。现在,我想再安装一个硬盘。这是一个 IDE 驱动器。安装 IDE 驱动器后,Grub 不再指向正确的硬盘,也找不到启动目录,所以我只能进入 grub 救援。在我的 grub.cfg 中,Ubuntu 安装在 hd1 上。似乎新的 IDE 驱动器变成了 hd0。这是否意味着我的 Ubuntu(和启动目录)现在在 hd2 上(Windows 在 hd1 上)?如果是这样,我如何在 Grub 中更改它以使其指向正确的硬盘?可以从 grub 救援提示符中完成吗?我可以在未安装 IDE 驱动器的情况下启动,编辑 grub.cfg,断开计算机,连接 IDE 驱动器并启动吗?如果我在这里出错了,我可以从实时 CD 编辑 grub.cfg 吗?或者有更好的方法来做到这一点?

答案1

Grub 命令行有一些命令可以帮助您调试此问题。在此处查看它们的列表:https://www.gnu.org/software/grub/manual/grub/html_node/Command_002dline-commands.html
在你的情况下你必须确定驱动器分区您的 Grub 文件所在的位置。尝试ls命令。请记住,Grub 中的分区命名约定不同。例如,将调用第一个驱动器的第二个分区(hd0,1)(驱动器和分区从零开始计数)。ls使用上述链接检查命令帮助中的“设备语法”部分。
一旦您确切知道/boot/grub文件夹的位置,您就可以尝试使用下一个命令启动系统(我使用前面的示例,驱动器 1,分区 2 - 适当更改它们)

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

现在你的系统应该可以正常启动了。登录并从终端恢复你的引导加载程序:

sudo update-grub
sudo grub-install /dev/sda

(使用适当的 /dev/sdX 名称作为 GNU/Linux 安装所在的驱动器的名称)。

答案2

您必须在现在正在启动的 IDE 磁盘上安装一个旧的、损坏的 grub,而不是原始磁盘上的 grub,如果您告诉 BIOS 从该驱动器而不是 IDE 驱动器启动,它仍然可以正常工作。

由于 DOS/Windows 无法从任何其他驱动器启动,因此 BIOS 始终将 (hd0) 分配给它尝试从中启动的任何驱动器。

答案3

我设法通过更改分区上的启动标志来解决问题,它指向错误的分区, /dev/sda6这是在我删除交换分区后发生的,并且我的分区表顺序发生了变化,所以我的启动分区变成了/dev/sda5我用来fdisk修复此问题的我输入以下命令:-

fdisk /dev/sda
a
5
w

在此处输入图片描述

答案4

我遇到了同样的问题,但无法使用 Grub-Rescue 解决

从 Ubuntu Live 媒体(DVD 或 USB)启动并安装启动修复工具帮我解决了这个问题

如何在 Ubuntu 实时光盘中安装 Boot-Repair 工具?

相关内容