UEFI/BIOS 不再识别 EFI/boot 分区

UEFI/BIOS 不再识别 EFI/boot 分区

背景/目标:

我的笔记本电脑是双启动的,每台机器(Windows 和 Arch Linux)都有一个 M.2 SSD,一切正常。我为我的 Windows 机器购买了一个新的更大容量的驱动器,但是每个 M.2 插槽的尺寸都不同,所以我移除了 Arch 驱动器并用新驱动器替换它,然后将较小(大小和容量)的 Windows 驱动器克隆到它上面。我单独测试了这个克隆的驱动器,它可以很好地加载 Windows。接下来,我用 Arch 驱动器替换了新的 Windows 驱动器,以便将 Arch 克隆到旧的 Windows 驱动器上。旧的 Windows 驱动器仍然可以正常启动,并且 UEFI/BIOS 识别到旧的 Arch 驱动器已安装,但无法识别其启动/EFI 分区,并且没有提供启动到它的选项。

我尝试过的:

  • 将 Arch 驱动器作为计算机中的唯一驱动器,仍然显示没有启动选项
  • 启动 Windows 并查看分区,它们看起来完好无损,Windows 表示它们很健康

笔记:

  • 此无法启动的 Arch 驱动器与之前位于同一个 M.2 插槽中
  • 我有一个 Arch 的实时启动 USB,如果这可以使这个问题更容易解决
  • 我使用 GRUB 作为我的 Arch 引导程序

总结: Arch 驱动器已被移除、替换并重新安装在同一插槽中,但其启动分区不再被识别。

答案1

您之前的安装不是被识别为一般分区,而是被识别为特定文件 – 该grub-install工具创建了一个 NVRAM 条目,指向该分区上 grubx64.efi 的确切路径。删除磁盘可能会导致固件将 NVRAM 条目删除为“过时”。

EFI 启动分区并不总是具有可在 NVRAM 条目缺失时检测到的“默认”启动加载程序。Windows 始终会安装一个,但 GRUB 通常不会。

  • 像最初安装 Arch 时一样从 chroot重新运行grub-install,允许它重新创建 NVRAM 启动项。

  • 重新运行 grub-install,但使用该--force-extra-removable选项另外将默认引导加载程序安装到 EFI 分区。

  • 用于efibootmgr手动创建 NVRAM 条目。

    efibootmgr -c -L "Gentoo" -d /dev/sda -p 1 -l '\EFI\Arch\grubx64.efi'
    
  • 使用 Windowsbcdedit手动创建 EFI 启动项(而不是 Windows 启动管理器项)。

    :: Make sure the Arch EFI partition has a drive letter assigned
    :: (temporarily, for bcdedit only), e.g. Z: in this example.
    
    bcdedit /create /d "Linux Boot Manager" /application firmware
    
    :: Copy the GUID of the new entry that the /create command gives
    :: and substitute it in the following commands.
    
    bcdedit /set %GUID% device partition=Z:
    bcdedit /set %GUID% path \EFI\systemd\systemd-bootx64.efi
    

相关内容