我有一个 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 相同,但似乎并非如此,尽管我执行了:
umount /EFI
mount /dev/sdd1 /EFI
grub-install --target=x86_64-efi --efi-directory=esp --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg
- 为什么我仍然无法从 Windows EFI GRUB 启动 Windows?
- 为什么 Arch 在其 EFI 中看不到 Windows?
- 我是否必须格式化/删除
/dev/sdc1
在 Arch 安装期间创建的 EFI 分区,或者我是否必须使用正确的设置最后一次重新安装 Arch,现在我知道如何执行此操作,安装/dev/sdd1
而不是/dev/sdc1
in/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
。