一开始,我想自己做,但是我找到的任何指南都行不通。起初这只是一个小问题,我所要做的就是在系统磁盘上创建一个 efi 分区,但在此过程中,我意识到我无法在 mbr 磁盘上执行此操作。因此,我意识到我需要在安装 Windows 的磁盘上将 mbr 更改为 gpt,但 mbr2gpt 说磁盘布局验证失败(所以我不知道转换将如何进行(可能不会进行))。我有一个驱动器,签名为系统一,但它是我最旧的硬盘(我认为这是我在这里的罪魁祸首(我应该在安装操作系统时断开它))。所以我可以将所有驱动器转换为 gpt(包括操作系统一)吗(磁盘 0 - 是系统分区所在的硬盘(我猜)磁盘 3 是 m2,即操作系统所在的位置)也许我可以以某种方式将系统分区移动到磁盘 3,但我不确定这会有什么不同。
编辑:mbr2gpt.exe 的 setuperr 日志错误“ValidateLayout:错误的启动分区数,预期为 1,但实际为 0。磁盘 3 的磁盘布局验证失败”
磁盘管理截图:
答案1
看起来您使用的是旧式安装(即 Windows XP 及更早版本使用的安装),其中单个分区包含引导加载程序和操作系统。这在 mbr2gpt 中根本行不通,因为它需要已经具有包含 Bootmgr 的“Microsoft 保留分区”,以便将其转换为 EFI 系统分区。
如果时间充裕,我会使用 Diskpart/Diskmgmt 将 C: 卷缩小约 500 MB,然后使用 Linux GParted 将其移至右侧(在开头创建一个间隙)——移动 1 TB 是比较慢的部分——然后在那里创建一个新的“Microsoft 保留分区”(可以使用 Diskpart 完成,有官方 Microsoft 说明)并使用“bcdboot”填充它。这将为您留下一个 mbr2gpt 可能会接受的标准分区设置。
然而,在 HDD 上移动 1 TB 既慢又有风险,因此你可以创建 Microsoft 保留分区在最后磁盘。EFI 不会介意这一点(而且由于它完全在 2TB 限制之内,BIOS 也不会介意)。不过,我不确定 mbr2gpt 是否能接受这一点,但值得一试 - 并且可以在 Windows 中完成所有操作:
- 为了以防万一,请创建一个 Windows 安装 USB 棒,或者可能还有一个 Linux 实时 USB 棒。
- 将 C: 缩小 500 MB 左右。
- 创建一个新的“主”分区。格式化为 NTFS。
- 运行
bcdboot c:\windows /s X:
,其中 X 是该分区的新驱动器号。这将在那里安装 Bootmgr。 - 如果 bcdboot 成功,则将新分区设置为“活动”(右键单击)。这会告诉 MBR 实际在那里查找 Bootmgr。
重新启动以查看是否有效。如果可以启动,则对其进行 mbr2gpt。如果无法启动,则将原始 C: 设置为“活动”(例如从活动 USB)将返回到原始状态。实际上,只需执行 mbr2gpt 即可,无需重新启动。
(旁注:“Microsoft 保留分区”在 MBR 和 GPT 中含义不同。在前者中,它大致相当于 EFI 系统分区;在后者中,它是一个 ~16MB 的空间填充分区,什么也不做。)
如果 mbr2gpt 仍然拒绝,一种替代方法是使用“gdisk”工具仅进行分区表的转换(它主要是 Linux 工具,但我相信它也有 Windows 版本),然后使用 Windows 的 bcdboot.exe 来构建一个新的 EFI 系统分区。
这需要您手边有一个 Windows 安装 USB 记忆棒。
- 在物理磁盘设备上运行
gdisk
。它将自动进行转换;只需使用w
保存并退出即可。 - 此后,磁盘将变为 GPT,但仍具有 BIOS 样式的 Bootmgr,因此无法再在 BIOS 或 EFI 中启动。相反,启动 Windows USB 棒并按 Shift-F10 打开控制台。
- 使用 Diskpart 查找操作系统分区和新创建分区的驱动器号。(从 USB 启动时,C:分区不一定是 C:。)
- 按照上面所述使用 bcdboot,但带有
/f UEFI
选项。