PC 启动时出现“grub rescue”提示,无论我怎么尝试,都无法启动

PC 启动时出现“grub rescue”提示,无论我怎么尝试,都无法启动

我最近从 Windows7 迁移到 Linux,并且很喜欢它,但 3 天前 Ubuntu 突然无法启动。我在网上找到了一篇文章,建议我尝试“modeset”并启动 Ubuntu,然后删除最新的内核,看看是否可行,这确实解决了这个问题。但今天早上 Ubuntu 再次停止启动。它确实可以使用恢复模式和 nomodeset 设置,但这次无法删除内核(4.15.0.39-generic),因为没有安装其他内核包。我的显卡的最新软件更新适用于 Ubuntu 14(AMD HD Radeon 6970),所以这也不是解决方案。

此时我决定返回 Windows,因为我还有很多工作要在 PC 上完成,而且我浪费了时间。

我使用 Windows 10,安装了可启动 USB 并插入我的电脑,电脑自动启动 Windows 安装。

在磁盘选择屏幕中,我已经格式化了包含 Linux 的 SSD(120GB Corsair Force 3),然后成功安装了 Windows。

重新启动后我遇到了这个问题:

error: disk '[vmid/b0HGZa-iDQL-svQK-zHqE-TEV7-EaQa-cloeNT/UnMpLA-vrZ2-PiQW-uMTJ-7Vqg-o5yP-vFyDRx' not found.
Entering rescue mode...
grub rescue>

当我输入“ls”时,结果如下:

(hd0) (hd0,msdos1) (hd1) (hd1,msdos2) (hd1,msdos1)

对所有这些单独使用“ls”,结果显示“文件系统未知”

在网上找到了一些解决方案,进入windows安装屏幕,启动命令提示符并写道:

Bootrec /fixmbr  

控制台显示问题已成功解决。

再次启动时这里出现“grub rescue”屏幕。

尝试通过 USB 设备重新安装 Ubuntu。选择 Ubuntu 后

可以找到/命名包元素或类似的东西。因为它很快就消失了,我又得到了一个黑屏。

将 Ubuntu USB 插入另一台计算机,即可正常启动。

那么您有什么建议吗?

感谢您阅读这篇长文。

答案1

如果您在安装 Linux 之后安装了 Windows,则您的分区将消失,您必须重新安装。如果没有,则您的分区出现了问题。显然缺少块,因此 grub 无法访问 initramfs。(通常在启动文件夹中)。您不需要修复 mbr- 因为 grub 已启动,所以该部分显然可以正常工作。获取 USB 实时映像(例如,您用来安装 Linux 的映像)并使用它启动。当您进入 shell 或终端时,您需要检查分区的名称以及您安装 Linux 的位置:

blkid

您会看到类似 /dev/sda1 或 /dev/sdb2 等的内容。选择正确的分区(不应挂载)并输入:

fsck -y /dev/sdXn 

其中 X 是 a、b 或 c 之类的数字,n 是 1 或 2 或 .. 之类的数字。您应该选择一个 Linux 分区,而不是任何 Windows 分区。完成后重新启动。然后应该可以正常工作....

答案2

您很可能有一个 UEFI bios。在这种情况下,发生的情况如下:

  1. 您安装了 Ubuntu。它创建了一个 EFI 分区(或者,如果您选择的话,使用现有的分区)。
  2. 然后你安装了 Windows。这大概改变了分区方案并删除了 Ubuntu(因为我没有看到任何 Linux 分区)。
  3. 但是,Ubuntu 的 EFI 仍然存在(grub-rescue 部分)。它具有优先权。

如何修复:仅适用于 Windows:
1. 照常安装 Windows 7。确保您将其安装为 UEFI。2
. 进入 BIOS 设置(您必须具有 UEFI 设置),在那里,选择启动顺序,您将看到 UEFI 启动顺序,其中 Ubuntu 也将具有更高的优先级。3
. 根据需要调整优先级。4
. 重新启动。

使用 Linux:
1. 启动进入 Ubuntu Live Session。(您需要一个可用的 shell 才能完成此操作)。2
. 安装 efibootmgr

    sudo apt install efibootmgr   

3. 发出命令:

    sudo efibootmgr

4. 您应该得到如下结果:

BootCurrent: 0005
Timeout: 1 seconds
BootOrder: 0005,0002,0001,0000
Boot0000* UEFI: SATA: HL-DT-ST DVDRAM GH70N   
Boot0001* Windows Boot Manager
Boot0002* UEFI: WDC WD5000AAKX-221CA1
Boot0005* ubuntu
  1. BootCurrent 是重要的部分。您需要将其指向您想要的。(在我的例子中,它是 Boot0005,ubuntu,这是默认值)
  2. efibootmgr -a 将设置一个活动的启动号,您也可以使用 efibootmgr 来删除这些不正确的启动号。

瞧,普通 BIOS 和 UEFI 之间的重要区别在于,在普通 BIOS 中,每个磁盘只能有一个可启动分区,并且启动顺序只考虑物理设备;而在 UEFI 中,一个磁盘中可以有多个可启动分区,并且它们都可以具有比所在磁盘更高的启动优先级。(就像在我的配置中一样)。

答案3

所以问题现在似乎已经解决了。

我已经关注

我现在已经重新安装了 Linux,它运行正常。我意识到它现在的内核较旧,为 4.15.0.29

因为我喜欢 ubuntu,所以无法找到完全删除它的力量,但可能会创建一个分区来安装 windows10,但就目前而言,我发送给您的链接解决了我的问题。

相关内容