多年来,经过多次迁移到 Linux 并重新迁移回来后,我的家用电脑在其两个 SSD 上最终出现了以下尴尬的分区(所有数据都在 NAS 上)
Disk1: [--- EFI partition 32MB ---][--- Empty ---]
Disk2: [--- Disk C: ---][--- OEM Partitition 450 MB ---]
现在我想从 PC 中删除磁盘 1。问题在于 EFI 分区。是否可以缩小磁盘 2 上的 OEM 分区并将 EFI 分区放在其位置?如何在新位置恢复引导加载程序?
我手头有 Linux LiveUSB 可以将分区移到外部,但我很好奇 Windows 是否可以自行完成此操作。我不想移动整个 C: 分区,即使在 SSD 上也需要一整个晚上。
答案1
如果 Disk2 使用 MBR 进行分区,那么您可以在其上使用 mbr2gpt.exe,前提是您运行的是 Windows v1703 或更高版本,它将在 Disk2 上为您创建 EFI 分区:
1)mbr2gpt.exe /validate /disk:2 /allowFullOS
如果此操作失败并出现未找到操作系统的错误,那是因为您在传统模式下使用 UEFI 从 MBR 启动 Windows 安装,而 mbr2gpt.exe 希望您在 BIOS 中启动(它需要您有一个包含 BCD 存储的 /boot 文件夹,但是 UEFI 系统有一个 EFI 文件夹),因此运行此文件来创建 BCD 文件,但在运行此文件之前请确保为您的 OEM 分区提供一个字母,因为我们需要将启动文件放在那里,这样 mbr2gpt 才能进行转换:
2)bcdboot c:\Windows /s LetterOfOEMPartition: /f bios
如果 1) 没有失败,则只需运行此操作:
3)mbr2gpt.exe /convert /disk:2 /allowFullOS
之后,您可以使用带覆盖开关的 diskpart delete 命令从 Disk1 中擦除原始 EFI 分区,然后使用相同方法从磁盘 2 中删除 OEM 分区。Disk2 上的 EFI 分区将是启动 C:\windows 所需的全部内容。
如果 Disk2 使用 GPT 分区,那么您只需删除 OEM 分区并使用 diskpart 将其替换为:1) 创建分区 efi size=100 2) 格式化 quick fs=fat32 3) 分配字母=s
然后退出,并运行以下最终命令在新的 EFI 分区上创建启动文件: 4) bcdboot C:\windows /s S: