MBR2GPT.EXE可将磁盘从主启动记录(MBR)转换为GUID分区表(GPT)分区形式,无需修改或删除磁盘上的数据。该工具旨在从Windows预安装环境(WindowsPE)命令提示符运行,但也可以通过使用/allowFullOS选项从完整的Windows10操作系统(OS)运行。
MBR2GPT.EXE位于运行Windows10版本1703(又称为创意者更新)或更高版本的计算机的Windows\System32目录下。该工具也在完整的操作系统环境和WindowsPE中提供。若要在使用配置管理器或Microsoft部署工具包(MDT)的部署任务序列中使用此工具,必须先使用WindowsADK1703或更高版本更新WindowsPE映像(winpe.wim、boot.wim)。
可以使用MBR2GPT执行以下操作:
- 将任意连接的MBR格式化系统磁盘转换为GPT分区格式。你无法使用该工具将非系统磁盘从MBR转换为GPT。
- 转换带有BitLocker加密的卷的MBR磁盘,只要保护已挂起。要在转换后恢复BitLocker,需要删除现有保护程序并重新创建。
- 转换安装了较早版本的Windows10(例如版本1507、1511和1607)的操作系统磁盘。但是,必须在启动到Windows10版本1703或更高版本时运行该工具,并执行脱机转换。
- 使用配置管理器或MDT将操作系统磁盘从MBR转换为GPT,前提是任务序列使用WindowsPE版本1703或更高版本。
脱机转换安装了较早版本的Windows(例如Windows7、8或8.1)的系统磁盘不受正式支持。建议的转换这些磁盘的方法是,先升级到Windows10操作系统,再执行MBR到GPT的转换。
重要
磁盘转换为GPT分区形式后,必须重新配置固件才能以UEFI模式启动。
尝试转换磁盘之前,请确保你的设备支持UEFI。
磁盘必备条件
对磁盘进行任何更改之前,MBR2GPT会验证所选磁盘的布局和几何图形,以确保:
- 磁盘正在使用MBR
- 有足够的分区未占用空间可以存储主要和辅助GPT:
- 磁盘前部有16KB+2个扇区
- 磁盘后部有16KB+1个扇区
- MBR分区表中最多有3个主分区
- 其中一个分区被设置为活动,并作为系统分区
- 磁盘没有任何扩展/逻辑分区。
- 系统分区中的BCD存储包含一个指向OS分区的默认OS项
- 可以为每个具有已分配驱动器号的卷检索卷ID
- 磁盘上的所有分区均为Windows可识别的MBR类型,或具有使用/map的命令行选项指定的映射
如果任意检查失败,将不会继续转换,并将返回错误。
语法
MBR2GPT/validate|convert[/disk:<diskNumber>][/Logs:<logDirectory>][/map:<source>=<destination>][/allowFullOS]
选项描述
/validate指示MBR2GPT.exe仅执行磁盘验证步骤,并报告磁盘是否有资格进行转换。
/convert指示MBR2GPT.exe执行磁盘验证,如果通过所有验证测试,可继续进行转换。
/disk:<diskNumber>指定转换为GPT的磁盘编号。如果不指定,则使用系统磁盘。所用机制与diskpart.exe工具SELECTDISKSYSTEM命令使用的机制相。
/logs:<logDirectory>指定应写入MBR2GPT.exe日志的目录。如果不指定,则使用%windir%。如果指定,目录必须已经存在,它不会自动创建或被覆盖。
/map:<source>=<destination>指定MBR和GPT之间的其他分区类型映射。MBR分区号以十进制表示法指定,而非十六进制。GPTGUID可以包含括号,例如:/map:42={af9b60a0-1431-4f62-bc68-3311714a69ad}。如果需要多个映射,可指定Multiple/map选项。
/allowFullOS默认情况下会阻止MBR2GPT.exe,除非从WindowsPE运行。在完整的Windows环境中运行时,该选项将覆盖此块,并启用磁盘转换。
注意:现有MBR系统分区正在使用并运行完整的Windows环境,因此无法重复使用。在这种情况下,系统会通过压缩操作系统分区来创建新ESP。
验证示例
在以下示例中,对磁盘0进行转换验证。错误和警告记录在默认位置,%windir%。
X:\>mbr2gpt/validate/disk:0MBR2GPT:Attemptingtovalidatedisk0MBR2GPT:RetrievinglayoutofdiskMBR2GPT:Validatinglayout,disksectorsizeis:512MBR2GPT:Validationcompletedsuccessfully
转换示例
在以下示例中:
- 使用DiskPart,在转换之前显示当前的磁盘分区布局-MBR磁盘(磁盘0)上存在三个分区:系统保留分区、Windows分区和恢复分区。DVD-ROM也作为卷0存在。
- 选择OS卷、列出分区、并显示OS分区的分区详细信息。对应于可安装的文件系统(IFS)类型,MBR分区类型为07。
- MBR2GPT工具用于转换磁盘0。
- DiskPart工具显示磁盘0正在使用GPT格式。
- 显示新的磁盘布局-GPT磁盘上存在四个分区:三个与之前的分区相同,一个是新的EFI系统分区(卷3)。
- 再次选择OS卷,详细信息显示它已被转换为GPT分区类型ebd0a0a2-b9e5-4433-87c0-68b6b72699c7(对应于PARTITION_BASIC_DATA_GUID类型)。
如MBR2GPT工具的输出中所述,你必须更改计算机固件,新的EFI系统分区才能正常启动。X:\>DiskPartMicrosoftDiskPartversion10.0.15048.0Copyright(C)MicrosoftCorporation.Oncomputer:MININT-K71F13NDISKPART>listvolumeVolume###LtrLabelFsTypeSizeStatusInfo---------------------------------------------------------------Volume0FCENA_X64FREUDFDVD-ROM4027MBHe althyVolume1CSystemReseNTFSPartition499MBHe althyVolume2DWindowsNTFSPartition58GBHe althyVolume3ERecoveryNTFSPartition612MBHe althyHiddenDISKPART>selectvolume2Volume2istheselectedvolume.DISKPART>listpartitionPartition###TypeSizeOffset-------------------------------------------Partition1Primary499MB1024KB*Partition2Primary58GB500MBPartition3Recovery612MB59GBDISKPART>detailpartitionPartition2Type:07Hidden:NoActive:NoOffsetinBytes:524288000Volume###LtrLabelFsTypeSizeStatusInfo---------------------------------------------------------------*Volume2DWindowsNTFSPartition58GBHe althyDISKPART>exitLeavingDiskPart...X:\>mbr2gpt/convert/disk:0MBR2GPTwillnowattempttoconvertdisk0.IfconversionissuccessfulthediskcanonlybebootedinGPTmode.Thesechangescannotbeundone!MBR2GPT:Attemptingtoconvertdisk0MBR2GPT:RetrievinglayoutofdiskMBR2GPT:Validatinglayout,disksectorsizeis:512bytesMBR2GPT:TryingtoshrinkthesystempartitionMBR2GPT:TryingtoshrinktheOSpartitionMBR2GPT:CreatingtheEFIsystempartitionMBR2GPT:InstallingthenewbootfilesMBR2GPT:PerformingthelayoutconversionMBR2GPT:MigratingdefaultbootentryMBR2GPT:AddingrecoverybootentryMBR2GPT:FixingdrivelettermappingMBR2GPT:ConversioncompletedsuccessfullyMBR2GPT:BeforethenewsystemcanbootproperlyyouneedtoswitchthefirmwaretoboottoUEFImode!X:\>DiskPartMicrosoftDiskPartversion10.0.15048.0Copyright(C)MicrosoftCorporation.Oncomputer:MININT-K71F13NDISKPART>listdiskDisk###StatusSizeFreeDynGpt-----------------------------------------Disk0Online60GB0B*DISKPART>selectdisk0Disk0isnowtheselecteddisk.DISKPART>listvolumeVolume###LtrLabelFsTypeSizeStatusInfo---------------------------------------------------------------Volume0FCENA_X64FREUDFDVD-ROM4027MBHe althyVolume1DWindowsNTFSPartition58GBHe althyVolume2CSystemReseNTFSPartition499MBHe althyHiddenVolume3FAT32Partition100MBHe althyHiddenVolume4ERecoveryNTFSPartition612MBHe althyHiddenDISKPART>selectvolume1Volume1istheselectedvolume.DISKPART>listpartitionPartition###TypeSizeOffset-------------------------------------------Partition1Recovery499MB1024KB*Partition2Primary58GB500MBPartition4System100MB59GBPartition3Recovery612MB59GBDISKPART>detailpartitionPartition2Type:ebd0a0a2-b9e5-4433-87c0-68b6b72699c7Hidden:NoRequired:NoAttrib:0000000000000000OffsetinBytes:524288000Volume###LtrLabelFsTypeSizeStatusInfo---------------------------------------------------------------*Volume1DWindowsNTFSPartition58GBHe althy
磁盘转换工作流
后续步骤演示了MBR到GPT转换过程的高级阶段:
- 已执行磁盘验证。
- 如果不存在,请对磁盘进行重新分区,以创建EFI系统分区(ESP)。
- 已将UEFI启动文件安装到ESP。
- 已应用GPT元数据和布局信息。
- 已更新引导配置数据(BCD)存储。
- 已恢复驱动器号分配。
创建EFI系统分区
为使windows在转换后保持可启动,EFI系统分区(ESP)必须到位。MBR2GPT使用以下规则创建ESP:
- 如果满足以下要求,则重新使用现有MBR系统分区:
a.它不是OS或Windows恢复环境分区。
b.大小至少为100MB(或,4K扇区磁盘为260MB)。
c.大小小于或等于1GB。这是一项安全措施,可确保它不是数据分区。
d.转换不是从完整的操作系统执行。在这种情况下,现有的MBR系统分区正在使用,不能重复使用。
2、如果不能重新使用现有的MBR系统分区,请通过压缩OS分区创建新ESP。此新分区的大小为100MB(或,4K扇区磁盘为260MB)并格式化为FAT32。
如果现有MBR系统分区无法供ESP重复使用,则其转换后不会再用于启动过程。其他分区不会修改。
重要
如果现有的MBR系统分区没有重复用于ESP,说明它可能被分配了驱动器号。如果你不希望使用这个小分区,则必须手动隐藏驱动器号。
分区类型映射和分区属性
由于GPT分区使用的类型ID集与MBR分区不同,因此,必须为转换后的磁盘上的每个分区分配一个新的类型ID。分区类型映射遵循以下规则:
- ESP始终设置为分区类型PARTITION_SYSTEM_GUID(c12a7328-f81f-11d2-ba4b-00a0c93ec93b)。
- 如果MBR分区类型与/map开关中指定的任一条目匹配,则使用指定的GPT分区类型ID。
- 如果MBR分区的类型为0x27,则将分区转换为PARTITION_MSFT_RECOVERY_GUID(de94bba4-06d1-4d40-a16a-bfd50179d6ac)类型的GPT分区。
- 所有其他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中的所有条目中进行迭代,请为每个条目执行以下操作:
- 检查唯一ID是否对应于作为已转换磁盘的一部分的任意卷的任意唯一ID。
- 如果找到,请将布局转换后获取的值设置为新的唯一ID。
- 如果无法设置新的唯一ID且值名称以\DosDevices开头,请发布一条有关需要手动干预以正确还原驱动器号分配的控制台和日志警告。
疑难解答
该工具将在其输出中显示状态信息。如果遇到任何错误,将取消验证和转换。例如,如果一个或多个分区未正确转换,将显示这一信息,并且无法执行转换。要查看有关遇到的任何错误的详细信息,请参阅关联的日志文件。
日志通过MBR2GPT工具创建四个日志文件:
- diagerr.xml
- diagwrn.xml
- setupact.log
- setuperr.log
这些文件包含在磁盘验证和转换期间遇到的错误和警告。这些文件中的信息有助于诊断工具的问题。setupact.log
和setuperr.log文件将提供有关磁盘布局、进程的最详细信息和与磁盘验证和转换有关的其他信息。注意:setupact*.log文件与在%Windir%\Panther目录中找到的Windows安装程序文件不同。
WindowsPE中的所有这些日志文件的默认位置是%windir%。
你可以在WindowsPowerShell提示符中键入以下命令来显示磁盘编号和分区类型。示例输出如下所示:
PSC:\>Get-Disk|ft-AutoNumberFriendlyNameSerialNumberHe althStatusOperationalStatusTotalSizePartitionStyle--------------------------------------------------------------------------------------0MTFDDAK256MAM-1K113050928F47CHe althyOnline238.47GBMBR1ST1000DM003-1ER162Z4Y3GD8FHe althyOnline931.51GBGPT
你还可以通过打开磁盘管理工具,右键单击磁盘编号,单击属性,然后单击卷选项卡查看磁盘的分区类型。请参见以下示例:
如果WindowsPowerShell和磁盘管理不可用(例如,当你使用WindowsPE时),你可以使用DiskPart工具在命令提示符中确定分区类型。若要从命令行确定分区形式,请键入diskpart,然后键入listdisk。请参见以下示例:
X:\>DiskPartMicrosoftDiskPartversion10.0.15048.0Copyright(C)MicrosoftCorporation.Oncomputer:MININT-K71F13NDISKPART>listdiskDisk###StatusSizeFreeDynGpt-----------------------------------------Disk0Online238GB0BDisk1Online931GB0B*
在此示例中,磁盘0使用MBR分区形式进行格式化,磁盘1使用GPT进行格式化。