如何使用 GRUB2 启动与 EFI 分区位于不同驱动器上的 Windows 10 分区?

如何使用 GRUB2 启动与 EFI 分区位于不同驱动器上的 Windows 10 分区?

我最近在驱动器之间移动了一些分区,以解决在购买新磁盘时出现的一些组织问题。

最初,我有 /dev/sda:

/dev/sda1/ - ntfs - Windows Recovery
/dev/sda2/ - fat32 - EFI
/dev/sda3/ - ntfs - ** This is where windows was installed **
/dev/sda4/ - ext4 - ** This is where arch linux was installed **

我将/dev/sda3(Windows 分区)移动到新磁盘并调整 /dev/sda4 (arch linux) 的大小以使用未分配的空间。这一切都是通过 gparted live USB 完成的,以 UEFI 模式启动。

然后我启动到Arch安装USB(也在UEFI模式下),arch-chroot编辑,更新了我的fstab中的所有内容,并通过使用以下命令安装所有内容来确认fstab条目有效mount -a

之后,我确保 os-prober 已安装并运行 grub-mkconfig,它报告在 上找到了 Windows 启动管理器/dev/sda2,这是我的 EFI 分区。

问题是,当我尝试启动时,Windows 出错,尝试修复启动并放弃。看起来 Windows 启动管理器不知道所有内容都已转移到/dev/sdb1.

我能做些什么来解决这个问题吗?如何配置 Windows 启动管理器以从新位置启动?

编辑:为了透明度,我将包括我也在超级用户上问过这个问题,发现这里

答案1

不用惊慌,我已经找到了这个问题温床的答案。希望这不会在所有回复中消失。

对于将来搜索此类内容的任何人,对我来说,解决方案是完全破坏 EFI 分区(通过parted live 或您最喜欢的救援分区管理器)。从那里,我在第一个驱动器的末尾创建了一个新的 fat32 格式的分区,大小为 256mb,并将其命名为 EFI。有些指南会告诉您该分区必须位于驱动器的开头,但根据 UEFI 规范,事实并非如此。

然后,我启动了 Windows 10 安装 USB。进入命令提示符,使用一些内置函数生成新的引导文件。我主要遵循找到的指南这里,但要了解更多详细信息,您可以搜索“如何创建 efi 分区窗口”。

之后,我无法启动 Linux,但是使用 Linux 救援 CD 安装和配置具有双启动功能的启动加载程序的过程很简单,并且有详细记录。

相关内容