MBR2GPT.EXE

MBR2GPT.EXE 可将磁盘从主启动记录 (MBR) 转换为 GUID 分区表 (GPT) 分区形式,无需修改或删除磁盘上的数据。 该工具从 Windows 预安装环境 (Windows PE) 命令提示符运行,但也可以使用 选项从完整的 Windows 操作系统 (OS) /allowFullOS 运行。

MBR2GPT.EXE 位于 Windows\System32 运行 Windows 的计算机上的 目录中。

该工具也在完整的操作系统环境和 Windows PE 中提供。

请观看下面的视频查看 MBR2GPT 的详细说明和演示。

可以使用 MBR2GPT 执行以下操作:

  • 将任意连接的 MBR 格式化系统磁盘转换为 GPT 分区格式。 无法使用该工具将非系统磁盘从 MBR 转换为 GPT。
  • 转换具有 BitLocker 加密卷的 MBR 磁盘,只要保护挂起。 若要在转换后恢复 BitLocker,需要删除现有保护程序并重新创建它们。
  • 使用 Microsoft Configuration Manager 或 Microsoft Deployment Toolkit (MDT) 将操作系统磁盘从 MBR 转换为 GPT。

系统磁盘的脱机转换安装了早期版本的 Windows(例如 Windows 7、8 或 8.1)不受官方支持。 转换这些磁盘的建议方法是将操作系统升级到当前支持的 Windows 版本,然后执行 MBR 到 GPT 的转换。

重要提示

磁盘转换为 GPT 分区形式后,必须重新配置固件才能以 UEFI 模式启动。

尝试转换磁盘之前,请确保你的设备支持 UEFI。

磁盘必备条件

对磁盘进行任何更改之前,MBR2GPT 会验证所选磁盘的布局和几何图形,以确保:

  • 磁盘正在使用 MBR
  • 分区没有占用足够的空间来存储主要和辅助 GPT:
    • 16 KB + 2 个扇区位于磁盘前面
    • 16 KB + 1 扇区位于磁盘末尾
  • MBR 分区表中最多有三个主分区
  • 其中一个分区被设置为活动,并作为系统分区
  • 磁盘没有任何扩展/逻辑分区
  • 系统分区中的 BCD 存储包含一个指向 OS 分区的默认 OS 项
  • 可以为分配有驱动器号的每个卷检索卷 ID
  • 磁盘上的所有分区都是 Windows 识别的 MBR 类型,或者具有使用 /map 命令行选项指定的映射

如果这些检查失败,则转换不会继续,并返回错误。

语法

MBR2GPT /validate|convert [/disk:<diskNumber>] [/logs:<logDirectory>] [/map:<source>=<destination>] [/allowFullOS]

选项

选项 描述
/validate MBR2GPT.exe指示仅执行磁盘验证步骤并报告磁盘是否符合转换条件。
/转换 MBR2GPT.exe指示执行磁盘验证,并在所有验证测试都通过时继续转换。
/disk:<diskNumber> 指定转换为 GPT 的磁盘编号。 如果不指定,则使用系统磁盘。 使用的机制与 diskpart.exe 工具 SELECT DISK SYSTEM 命令使用的机制相同。
/logs:<logDirectory> 指定应在其中写入日志的 MBR2GPT.exe 目录。 如果不指定,则使用 %windir%。 如果指定,则目录必须已存在,它不会自动创建或覆盖。
/map:<source>=<destination> 指定 MBR 和 GPT 之间的其他分区类型映射。 MBR 分区号以十进制表示法指定,而不是十六进制。 GPT GUID 可以包含括号,例如:/map:42 = {af9b60a0-1431-4f62-bc68-3311714a69ad}。 如果需要多个映射,可指定 Multiple /map 选项。
/allowFullOS 默认情况下, MBR2GPT.exe 只能从 Windows PE 运行,并且被阻止在完整的 Windows 中运行。 在完整的 Windows 环境中运行时,该选项将覆盖此块,并启用磁盘转换。
注意:由于现有 MBR 系统分区在运行整个 Windows 环境时正在使用,因此不能重复使用。 在这种情况下,通过收缩 OS 分区创建新的 EFI 系统分区。

示例

验证示例

在以下示例中,对磁盘 0 进行转换验证。 错误和警告记录到 的默认位置 %windir%

X:\> mbr2gpt.exe /validate /disk:0
MBR2GPT: Attempting to validate disk 0
MBR2GPT: Retrieving layout of disk
MBR2GPT: Validating layout, disk sector size is: 512
MBR2GPT: Validation completed successfully

转换示例

在以下示例中:

  1. 使用 DiskPart 在转换之前显示当前磁盘分区布局 - MBR 磁盘上存在三个分区, (磁盘 0) :

    • 系统保留分区。
    • Windows 分区。
    • 恢复分区。
    • DVD-ROM 也作为卷 0 存在。
  2. 选择 OS 卷、列出分区、并显示 OS 分区的分区详细信息。 对应于可安装的文件系统 (IFS) 类型,MBR 分区类型07

  3. MBR2GPT 工具用于转换磁盘 0。

  4. DiskPart 工具显示磁盘 0 正在使用 GPT 格式。

  5. 显示新的磁盘布局 - GPT 磁盘上存在四个分区:三个与之前的分区相同,一个是新的 EFI 系统分区(卷 3)。

  6. 将再次选择 OS 卷。 详细信息显示 OS 卷已转换为与PARTITION_BASIC_DATA_GUID类型对应的 gPT 分区类型ebd0a0a2-b9e5-4433-87c0-68b6b72699c7

如 MBR2GPT 工具的输出中所述,必须对计算机固件进行更改,以便新的 EFI 系统分区正确启动。


展开以显示MBR2GPT示例
X:\>DiskPart.exe

Microsoft DiskPart version 10.0.15048.0

Copyright (C) Microsoft Corporation.
On computer: MININT-K71F13N

DISKPART> list volume

  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 0     F   CENA_X64FRE  UDF    DVD-ROM     4027 MB  Healthy
  Volume 1     C   System Rese  NTFS   Partition    499 MB  Healthy
  Volume 2     D   Windows      NTFS   Partition     58 GB  Healthy
  Volume 3     E   Recovery     NTFS   Partition    612 MB  Healthy    Hidden

DISKPART> select volume 2

Volume 2 is the selected volume.

DISKPART> list partition

  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    Primary            499 MB  1024 KB
* Partition 2    Primary             58 GB   500 MB
  Partition 3    Recovery           612 MB    59 GB

DISKPART> detail partition

Partition 2
Type  : 07
Hidden: No
Active: No
Offset in Bytes: 524288000

  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
* Volume 2     D   Windows      NTFS   Partition     58 GB  Healthy

DISKPART> exit

Leaving DiskPart...

X:\>mbr2gpt /convert /disk:0

MBR2GPT will now attempt to convert disk 0.
If conversion is successful the disk can only be booted in GPT mode.
These changes cannot be undone!

MBR2GPT: Attempting to convert disk 0
MBR2GPT: Retrieving layout of disk
MBR2GPT: Validating layout, disk sector size is: 512 bytes
MBR2GPT: Trying to shrink the system partition
MBR2GPT: Trying to shrink the OS partition
MBR2GPT: Creating the EFI system partition
MBR2GPT: Installing the new boot files
MBR2GPT: Performing the layout conversion
MBR2GPT: Migrating default boot entry
MBR2GPT: Adding recovery boot entry
MBR2GPT: Fixing drive letter mapping
MBR2GPT: Conversion completed successfully
MBR2GPT: Before the new system can boot properly you need to switch the firmware to boot to UEFI mode!

X:\>DiskPart

Microsoft DiskPart version 10.0.15048.0

Copyright (C) Microsoft Corporation.
On computer: MININT-K71F13N

DISKPART> list disk

  Disk ###  Status         Size     Free     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  Disk 0    Online           60 GB      0 B        *

DISKPART> select disk 0

Disk 0 is now the selected disk.

DISKPART> list volume

  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 0     F   CENA_X64FRE  UDF    DVD-ROM     4027 MB  Healthy
  Volume 1     D   Windows      NTFS   Partition     58 GB  Healthy
  Volume 2     C   System Rese  NTFS   Partition    499 MB  Healthy    Hidden
  Volume 3                      FAT32  Partition    100 MB  Healthy    Hidden
  Volume 4     E   Recovery     NTFS   Partition    612 MB  Healthy    Hidden

DISKPART> select volume 1

Volume 1 is the selected volume.

DISKPART> list partition

  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    Recovery           499 MB  1024 KB
* Partition 2    Primary             58 GB   500 MB
  Partition 4    System             100 MB    59 GB
  Partition 3    Recovery           612 MB    59 GB

DISKPART> detail partition

Partition 2
Type    : ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
Hidden  : No
Required: No
Attrib  : 0000000000000000
Offset in Bytes: 524288000

  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
* Volume 1     D   Windows      NTFS   Partition     58 GB  Healthy

规格

磁盘转换工作流

后续步骤演示了 MBR 到 GPT 转换过程的高级阶段:

  1. 已执行磁盘验证。
  2. 如果磁盘尚不存在,则会重新分区以创建 EFI 系统分区。
  3. UEFI 启动文件将安装到 EFI 系统分区。
  4. 应用 GPT 元数据和布局信息。
  5. 已更新引导配置数据 (BCD) 存储。
  6. 已恢复驱动器号分配。

创建 EFI 系统分区

要使 Windows 在转换后保持可启动状态,必须设置 EFI 系统分区。 MBR2GPT使用以下规则创建 EFI 系统分区:

  1. 如果满足以下要求,则重新使用现有 MBR 系统分区:

    • 它也不是 OS 或 Windows 恢复环境分区。
    • 对于大小) 的 4K 扇区大小磁盘,它至少为 100 MB (或 260 MB。
    • 大小小于或等于 1 GB。 此大小是一种安全预防措施,可确保它不是数据分区。
    • 未从完整的 OS 执行转换。 在这种情况下,现有的 MBR 系统分区正在使用中,无法重新调整其用途。
  2. 如果无法重用现有的 MBR 系统分区,则通过收缩 OS 分区创建新的 EFI 系统分区。 对于) 4K 扇区大小的磁盘,此新分区的大小为 100 MB (或 260 MB,格式为 FAT32。

如果 EFI 系统分区未重复使用现有 MBR 系统分区,则转换后启动进程不再使用该分区。 不会修改其他分区。

重要提示

如果 EFI 系统分区未重用现有 MBR 系统分区,则可能会为其分配驱动器号。 如果你不希望使用这个小分区,则必须手动隐藏驱动器号。

分区类型映射和分区属性

由于 GPT 分区使用的类型 ID 集与 MBR 分区不同,因此,必须为转换后的磁盘上的每个分区分配一个新的类型 ID。 分区类型映射遵循以下规则:

  1. EFI 系统分区始终设置为分区类型 PARTITION_SYSTEM_GUID (c12a7328-f81f-11d2-ba4b-00a0c93ec93b) 。
  2. 如果 MBR 分区的类型与开关中指定的 /map 条目之一匹配,则使用指定的 GPT 分区类型 ID。
  3. 如果 MBR 分区的类型为 0x27,则分区将转换为 类型为 PARTITION_MSFT_RECOVERY_GUID (de94bba4-06d1-4d40-a16a-bfd50179d6ac) 的 GPT 分区。
  4. Windows 识别的所有其他 MBR 分区将转换为 类型为 PARTITION_BASIC_DATA_GUID (ebd0a0a2-b9e5-4433-87c0-68b6b72699c7) 的 GPT 分区。

除应用正确的分区类型外,PARTITION_MSFT_RECOVERY_GUID 类型的分区还具有以下 GPT 属性集:

  • GPT_ATTRIBUTE_PLATFORM_REQUIRED (0x0000000000000001)
  • GPT_BASIC_DATA_ATTRIBUTE_NO_DRIVE_LETTER (0x8000000000000000)

有关分区类型的详细信息,请参阅:

保持驱动器号分配

转换工具尝试重新映射注册表中包含的与转换后的磁盘卷对应的所有驱动器号分配信息。 如果无法还原驱动器号分配,则会在控制台和日志中显示错误,以便可以手动执行正确的驱动器号分配。

重要提示

此代码在进行布局转换后运行,因此在此阶段无法撤消操作。

转换工具将在布局转换之前和之后获取卷的唯一 ID 数据,并将此信息组织到查找表中。 然后,它会循环访问 HKLM\SYSTEM\MountedDevices 中的所有条目,并为每个条目执行以下操作:

  1. 检查唯一 ID 是否对应于属于已转换磁盘的任何卷的任何唯一 ID。
  2. 如果找到,请将布局转换后获取的值设置为新的唯一 ID。
  3. 如果无法设置新的唯一 ID,并且值名称以 \DosDevices 开头,则发出控制台和日志警告,说明在正确还原驱动器号分配时需要手动干预。

疑难解答

该工具在其输出中显示状态信息。 如果遇到任何错误,将取消验证和转换。 例如,如果一个或多个分区未正确转换,则会显示此信息,并且不执行转换。 要查看有关遇到的任何错误的详细信息,请参阅关联的日志文件

日志

通过 MBR2GPT 工具创建四个日志文件:

  • diagerr.xml
  • diagwrn.xml
  • setupact.log
  • setuperr.log

这些文件包含在磁盘验证和转换期间遇到的错误和警告。 这些文件中的信息有助于诊断工具的问题。 setupact.logsetuperr.log 文件包含有关磁盘布局、进程以及与磁盘验证和转换相关的其他信息的最详细信息。

注意

setupact.log* 文件与目录中%Windir%\Panther的 Windows 安装程序文件不同。

Windows PE 中的所有这些日志文件的默认位置是 %windir%

交互式帮助

若要查看使用该工具时可用的选项列表,请在提升的命令提示符中输入以下命令:

mbr2gpt.exe /?

显示下列文本:

C:\> mbr2gpt.exe /?

Converts a disk from MBR to GPT partitioning without modifying or deleting data on the disk.

MBR2GPT.exe /validate|convert [/disk:<diskNumber>] [/logs:<logDirectory>] [/map:<source>=<destination>] [/allowFullOS]

Where:

 /validate
         - Validates that the selected disk can be converted
           without performing the actual conversion.

 /convert
         - Validates that the selected disk can be converted
           and performs the actual conversion.

 /disk:<diskNumber>
         - Specifies the disk number of the disk to be processed.
           If not specified, the system disk is processed.

 /logs:<logDirectory>
         - Specifies the directory for logging. By default logs
           are created in the %windir% directory.

 /map:<source>=<destination>
         - Specifies the GPT partition type to be used for a
           given MBR partition type not recognized by Windows.
           Multiple /map switches are allowed.

 /allowFullOS
         - Allows the tool to be used from the full Windows
           environment. By default, this tool can only be used
           from the Windows Preinstallation Environment.

返回代码

MBR2GPT 具有以下关联的返回代码:

返回代码 描述
0 已成功完成转换。
1 用户已取消转换。
2 由于内部错误,转换失败。
3 由于初始化错误,转换失败。
4 由于无效的命令行参数,转换失败。
5 由于读取所选磁盘的几何图形和布局出现错误,转换失败。
6 由于磁盘上的一个或多个卷已加密,转换失败。
7 转换失败,因为所选磁盘的几何图形和布局不符合要求。
8 由于创建 EFI 系统分区时出现错误,转换失败。
9 由于安装启动文件时出现错误,转换失败。
10 由于应用 GPT 布局时发生错误,转换失败。
100 转换为 GPT 布局成功,但某些启动配置数据条目无法还原。

确定分区类型

可以通过以下三种方式之一确定分区类型:

  • 使用 Windows PowerShell
  • 使用磁盘管理工具
  • 使用 DiskPart 工具

Windows PowerShell

可以在Windows PowerShell提示符处输入以下命令,以显示磁盘编号和分区类型:

Get-Disk | ft -Auto

示例输出:

PS C:\> Get-Disk | ft -Auto

Number Friendly Name      Serial Number        HealthStatus OperationalStatus Total Size Partition Style
------ -------------      -------------        ------------ ----------------- ---------- ---------------
0      MTFDDAK256MAM-1K1  13050928F47C         Healthy      Online             238.47 GB MBR
1      ST1000DM003-1ER162 Z4Y3GD8F             Healthy      Online             931.51 GB GPT

磁盘管理工具

可以使用磁盘管理工具查看磁盘的分区类型:

  1. 右键单击“开始”菜单,然后选择“ 磁盘管理”。 或者,右键单击“开始”菜单并选择“ 运行”。 在出现的“ 运行 ”对话框中,输入, diskmgmt.msc 然后选择“ 确定”。

  2. 在显示的 “磁盘管理 ”窗口中:

    1. 在底部窗格中,选择所需的磁盘编号。

    2. 选择“ 操作 ”菜单,然后选择“ 所有任务 > 属性”。 或者,右键单击所需的磁盘编号,然后选择 “属性”。

    3. 在磁盘显示的“ 属性 ”对话框中,选择“ ”选项卡。

    4. 在“ ”选项卡下,分区类型显示在 “分区样式:”旁边。

DiskPart 工具

可以使用 DiskPart 工具确定分区类型。 DiskPart 工具在磁盘管理工具和 PowerShell 不可用的情况下非常有用,例如在 WinPE 中。 未加载 PowerShell 可选组件时,PowerShell 在 WinPE 中不可用。 若要使用 DiskPart 工具确定分区类型,请执行以下操作:

  1. 打开提升的命令提示符。

  2. 在打开的提升的命令提示符下,输入以下命令:

    DiskPart.exe
    
  3. DISKPART> 提示符显示在命令提示符窗口中。 在 DISKPART> 提示符下,输入以下命令:

    list disk
    
  4. 分区类型显示在 Gpt 列中。 如果分区为 GPT,则列中会显示星号 (*) 。 如果分区为 MBR,则列为空。

下面显示了 DiskPart 工具的示例输出,其中显示了两个磁盘的分区类型:

X:\>DiskPart.exe

Microsoft DiskPart version 10.0.15048.0

Copyright (C) Microsoft Corporation.
On computer: MININT-K71F13N

DISKPART> list disk

  Disk ###  Status         Size     Free     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  Disk 0    Online          238 GB      0 B
  Disk 1    Online          931 GB      0 B        *

在此示例中,磁盘 0 使用 MBR 分区形式进行格式化,磁盘 1 使用 GPT 进行格式化。