不同的 EFI 和 Windows 双启动

不同的 EFI 和 Windows 双启动

我有一个 4 磁盘设置:

  • 240GB NVMe 固态硬盘 ( /dev/sdd)
  • 120GB SATA3 固态硬盘 ( /dev/sdc)
  • 2TB硬盘
  • 3TB硬盘

我安装了Windows,上面/dev/sdd有240GB NVMe SSD。安装 Arch 几次后,我终于让它工作了,启动后发现我已经创建了EFI 分区:一个位于/dev/sdc1(120GB SSD) 上,另一个(Windows 在安装过程中创建)位于/dev/sdd1(NVMe) 上。

现在我想将 GRUB 从 Sata SSD 上的 500MiB EFI 移动到 NVMe 驱动器,我已成功完成,但 Windows 无法识别并且执行时ls /EFI/EFI/Microsoft/boot我发现文件或目录不正确,可能是因为ls /EFI/EFI报告没有 Microsoft 文件夹,这可能是由 Arch 引起的,尽管我在启动时从启动菜单中的 WD240G(NVMe 驱动器)上安装的 GRUB 启动,但它正在 /EFI 中挂载/启动 Sata SSD 中的 EFI 分区。

因此,Arch 确实通过 GRUB 工作,Windows 确实可以选择自己的启动管理器,但 GRUB 不会启动 Windows,并且 Arch 的 EFI 内没有 Windows 文件夹或文件,现在应该与 Windows EFI 相同,但似乎并非如此,尽管我执行了:

  1. umount /EFI
  2. mount /dev/sdd1 /EFI
  3. grub-install --target=x86_64-efi --efi-directory=esp --bootloader-id=GRUB
  4. grub-mkconfig -o /boot/grub/grub.cfg

    • 为什么我仍然无法从 Windows EFI GRUB 启动 Windows?
    • 为什么 Arch 在其 EFI 中看不到 Windows?
    • 我是否必须格式化/删除/dev/sdc1在 Arch 安装期间创建的 EFI 分区,或者我是否必须使用正确的设置最后一次重新安装 Arch,现在我知道如何执行此操作,安装/dev/sdd1而不是/dev/sdc1in /EFI

答案1

如果两个磁盘上都有操作系统,则无需合并 EFI 系统分区,只需将它们分开即可。这也使两个磁盘都可以独立启动。

您想要的是让 GRUB 检测其他磁盘上的操作系统。为此,请安装该os-prober软件包并重新运行grub-mkconfig

您还可以将现有的 UEFI 菜单条目保留在适当的位置,这样您就可以随时单独启动它们(如果您选择)。

答案2

在 Arch 中以 root 身份运行“efibootmgr -v”。输出描述了系统 NVRAM 中存储的引导信息。请注意,它使用每个 GPT 样式分区唯一的 UUID 来标识应该加载每个已安装引导加载程序的分区。

在您更改此信息之前,UEFI 固件仍将在磁盘的 ESP 分区上查找 GRUB /dev/sdc。仅将一个 ESP 分区的内容添加到另一个分区不会改变任何内容。

阅读efibootmgr手册页查看如何更改 NVRAM 启动设置。或者efibootmgr -v如果您需要更多帮助来确定必要的命令,请发布输出efibootmgr

相关内容