在其他 HDD 上切换到 Windows 后,无法从 SSD 启动 Linux

在其他 HDD 上切换到 Windows 后,无法从 SSD 启动 Linux

我将磁盘从SSD(我有linux操作系统)更改为HDD(安装了windwos 8),我已经有一段时间没有使用它了,在完成我需要做的事情后,我将磁盘切换回来(连接回SSD)使用 linux debian)并且我无法再次启动它,这是我得到的错误在此输入图像描述

答案1

UEFI 系统会忘记未插入驱动器的引导条目。 UEFI 通常会找到 Windows 并创建新的 UEFI 条目,但大多数 Linux 系统不会。它们还应该允许您启动后备或硬盘驱动器条目,其启动方式与外部驱动器(安装程序)的启动方式相同。 Grub 现在安装 /EFI/Boot/bootx64.efi 作为后备。对于旧版本,我们必须手动创建该条目,引导修复也已将其作为另一个修复完成。

您可以从 UEFI 启动菜单启动后备或硬盘驱动器条目吗?如果不是 UEFI,系统是否设置为 BIOS/CSM/Legacy 启动?

UEFI 条目需要 ESP - efi 系统分区的 GUID 才能知道在哪里查找启动文件。如果是 UEFI 或 BIOS,您可能需要重新创建 UEFI 条目或重新安装 grub。可能最好查看详细信息,使用带有实时安装程序(第二个选项)的 ppa 版本或任何工作安装,而不是较旧的引导修复 ISO:请复制并粘贴链接到引导信息摘要报告,不要发布报告,不要使用自动修复直至审核。

https://help.ubuntu.com/community/Boot-Repair

您只需使用 efibootmgr 即可恢复正确的 UEFI 启动项。许多人只是完全重新安装 grub,它使用 efibootmgr 在 UEFI NVRAM 中添加新条目作为默认启动。 efibootmgr 条目示例:

https://askubuntu.com/questions/668506/changed-the-uefi-motherboard-on-a-dell-laptop-now-it-says-no-os-detected

man efibootmgr

答案2

罪魁祸首是 UEFI 依赖于计算机内的 NVRAM 存储启动配置,您可以通过efibootmgr实用程序读取或修改; Windows 倾向于安装 MSFT 在 UEFI 规范中适当指定的“后备引导加载程序” \EFI\BOOT\bootx64.efibootia32.efi对于 32 位 x86),因此它通过此后备首次启动,并且很可能稍后“修复”NVRAM 配置(我不是这方面的专家) Windows,所以这对我来说是口口相传,而不是经验)。所以你可以:

  1. 在 Windows“修复”之后“修复”NVRAM(通过运行grub-install从支持 UEFI 的救援媒体启动在 UEFI 模式下), 或者
  2. 将一个副本/boot/efi/grubx64.efi放入/boot/efi/bootx64.efi(但这可能会在 grub 版本更新后中断)。

还有更奇特的方法(比如使用重新找到启动iso链加载主引导加载程序)但我宁愿建议阅读EFI引导加载原理如果你想了解发生了什么以及可以做什么(以及为什么)——显然@oldfred已经为你指明了正确的方向(但也可能从同一手册中受益),所以希望他将提示重新制作为答案: -)

以防万一您再次需要这些工具,我的替代疗法救援image 既有 refind、efibootmgr、grub 等,也很方便。

相关内容