From 79b5c19cf2c6938e0adcdcadc3823dffb5adbd4a Mon Sep 17 00:00:00 2001 From: Greg Lindsay Date: Thu, 2 Mar 2017 16:26:06 -0800 Subject: [PATCH] draft done --- windows/deploy/images/mbr2gpt-workflow.png | Bin 0 -> 29166 bytes windows/deploy/mbr-to-gpt.md | 251 ++++++++++++++++++++- 2 files changed, 242 insertions(+), 9 deletions(-) create mode 100644 windows/deploy/images/mbr2gpt-workflow.png diff --git a/windows/deploy/images/mbr2gpt-workflow.png b/windows/deploy/images/mbr2gpt-workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..f7741cf0c36e6a8ae1785b18536933ee50696c81 GIT binary patch literal 29166 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⋘a~oM45UDU?ekpW+4yZoB%4ANy!rpP_-M|f5K_e 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 i*T?_=M^M|^zw=LAJ~9{{(`+SW6 literal 0 HcmV?d00001 diff --git a/windows/deploy/mbr-to-gpt.md b/windows/deploy/mbr-to-gpt.md index f8b724027f..40afa86627 100644 --- a/windows/deploy/mbr-to-gpt.md +++ b/windows/deploy/mbr-to-gpt.md @@ -1,6 +1,6 @@ --- title: MBR2GPT -description: How to use the MBR2GPT tool to convert partitions +description: How to use the MBR2GPT tool to convert MBR partitions to GPT keywords: deploy, troubleshoot, windows, 10, upgrade, partition, mbr, gpt ms.prod: w10 ms.mktglfcycl: deploy @@ -15,7 +15,14 @@ localizationpriority: high **Applies to** - Windows 10 -MBR2GPT.EXE converts a disk from Master Boot Record (MBR) to GUID Partition Table (GPT) partition style without modifying or deleting data on the disk. +MBR2GPT.EXE converts a disk from Master Boot Record (MBR) to GUID Partition Table (GPT) partition style without modifying or deleting data on the disk. The tool is designed to be run from a Windows PE command prompt. + +MBR2GPT is available in Windows 10 version 1703, also known as Windows 10 Creator's Update, and later versions. The tool is available in both the full OS environment and the Windows Preinstallation Environment (WinPE). + +You can use MBR2GPT to perform the following: + +- Within the WinPE environment: Convert any attached MBR-formatted disk to GPT, including the system disk. +- From within the currently running OS: Convert any attached MBR-formatted disk to GPT, including the system disk. ## Syntax @@ -28,23 +35,236 @@ MBR2GPT.exe /validate|convert [/disk:] [/logs:] [/map: |/validate| Instructs MBR2GPT.exe to perform only the disk validation steps and report whether the disk is eligible for conversion. | |/convert| Instructs MBR2GPT.exe to perform the disk validation and to proceed with the conversion if all validation tests pass. | |/disk:\| Specifies the disk number of the disk to be converted to GPT. If not specified, the system disk is used. The mechanism used is the same as that used by the diskpart.exe tool **SELECT DISK SYSTEM** command.| -|/logs:\| Specifies the directory where MBR2GPT.exe logs should be written. If not specified, **%windir%** is used.| -|/map:\=\| Specifies additional partition type mappings between MBR and GPT.| -|/allowFullOS| By default, MBR2GPT.exe is blocked unless it is run from WinPE. This option overrides this block and enables disk conversion while running in the full Windows environment. You cannot convert the system disk using this option.| +|/logs:\| Specifies the directory where MBR2GPT.exe logs should be written. If not specified, **%windir%** is used. If specified, the directory must already exist, it will not be automatically created or overwritten.| +|/map:\=\| Specifies additional partition type mappings between MBR and GPT. The MBR partition number is specified in decimal notation, not hexidecimal. The GPT GUID can contain brackets (ex: /map:42={af9b60a0-1431-4f62-bc68-3311714a69ad}) but brackets are not required. | +|/allowFullOS| By default, MBR2GPT.exe is blocked unless it is run from WinPE. This option overrides this block and enables disk conversion while running in the full Windows environment.| |/silent| Suppresses all warning messages so that the utility can be used in scripts.| >You can use MBR2GPT to convert an MBR disk with BitLocker-encrypted volumes as long as protection has been suspended. To resume BitLocker after conversion, you will need to delete the existing protectors and recreate them. ## Examples +In the following example, disk 0 is validated for conversion. Errors and warnings are logged to the default location, **%windir%**. +``` +X:\>mbr2gpt /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 +``` + +In the following example: + +1. The current disk partition layout is displayed prior to conversion - three partitions are present on the MBR disk (disk 0): a system reserved partition, a Windows partition, and a recovery partition. A DVD-ROM is also present as volume 0. +2. The OS volume is selected, partitions are listed, and partition details are displayed for the OS partition. The [MBR partition type](https://msdn.microsoft.com/library/windows/desktop/aa363990.aspx) is **07** corresponding to the installable file system (IFS) type. +2. The MBR2GPT tool is used to convert disk 0. +3. The DISKPART tool displays that disk 0 is now using the GPT format. +4. The new disk layout is displayed - four partitions are present on the GPT disk: three are identical to the previous partitions and one is the new EFI system partition (volume 3). +5. The OS volume is selected again, and detail displays that it has been converted to [GPT partition type](https://msdn.microsoft.com/library/windows/desktop/aa365449.aspx) ebd0a0a2-b9e5-4433-87c0-68b6b72699c7 corresponding to the PARTITION_BASIC_DATA_GUID type. + +>As noted in the output from the MBR2GPT tool, you must make changes to the computer firmware so that the new EFI system partition will boot properly. + +``` +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 + +``` + +X:>mbr2gpt /convert /disk:0 ## Specifications +### Disk conversion workflow -### Troubleshooting +The following diagram illustrates the high-level phases of the MBR-to-GPT conversion process: -#### Determining partition type +![Workflow](images/mbr2gpt-workflow.PNG) + +1. Disk validation is performed. +2. The disk is repartitioned to create an EFI system partition (ESP) if one does not already exist. +3. UEFI boot files are installed to the ESP. +4. GPT metatdata and layout information is applied. +5. The BCD store is updated. +6. Drive letter assignments are restored. + +### Disk validation + +Before any change to the disk is made, MBR2GPT validates the layout and geometry of the selected disk to ensure that: +- The disk is currently using MBR +- There is enough space not occupied by partitions to meet GPT’s reserved space requirements: + - 16KB + 2 sectors at the front of the disk + - 16KB + 1 sector at the end of the disk +- There are at most 3 primary partitions in the MBR partition table +- One of the partitions is set as active and is the system partition +- The BCD store on the system partition contains a default OS entry pointing to an OS partition +- The volume IDs can retrieved for each volume which has a drive letter assigned +- All partitions on the disk are of MBR types recognized by Windows or has a mapping specified using the /map command-line option + +If any of these checks fails, the conversion will not proceed and an error will be returned. + +### Creating an EFI system partition + +For Windows to remain bootable after the conversion, an EFI system partition (ESP) must be in place. MBR2GPT creates the ESP using the following rules: + +1. The existing MBR system partition is reused if it meets these requirements: + a. It is not also the OS or WinRE partition + b. It is at least 100MB (or 256MB for 4K-sector-size disks) in size + c. It is less than or equal to 1GB in size. This is a safety precaution to ensure it is not a data partition. + d. If the conversion is being performed from the full OS, the disk being converted is not the system disk. +2. If the existing MBR system partition cannot be reused, a new ESP is created by shrinking the OS partition. This new partition has a size of 100MB (or 256MB for 4K-sector-size disks) and is formatted FAT32. + +If the existing MBR system partition is not reused for the ESP, it is no longer by the boot process after the conversion. Other partitions are not modified. + +### Partition type mapping and partition attributes + +Since GPT partitions use a different set of type IDs than MBR partitions, each partition on the converted disk must be assigned a new type ID. The partition type mapping follows these rules: + +1. The ESP is always set to partition type PARTITION_SYSTEM_GUID (c12a7328-f81f-11d2-ba4b-00a0c93ec93b). +2. If an MBR partition is of a type that matches one of the entries specified in the /map switch, the specified GPT partition type ID is used. +3. If the MBR partition is of type 0x27, the partition is converted to a GPT partition of type PARTITION_MSFT_RECOVERY_GUID (de94bba4-06d1-4d40-a16a-bfd50179d6ac). +4. All other MBR partitions recognized by Windows are converted to GPT partitions of type PARTITION_BASIC_DATA_GUID (ebd0a0a2-b9e5-4433-87c0-68b6b72699c7). + +In addition to applying the correct partition types, partitions of type PARTITION_MSFT_RECOVERY_GUID also have the following GPT attributes set: +- GPT_ATTRIBUTE_PLATFORM_REQUIRED (0x0000000000000001) +- GPT_BASIC_DATA_ATTRIBUTE_NO_DRIVE_LETTER (0x8000000000000000) + +### Persisting drive letter assignments + +The conversion tool will attempt to remap all entries from **HKLM\SYSTEM\MountedDevices** that correspond to the volumes that are part of the converted disk. If an entry cannot be converted and it represents a drive letter assignment, an error will be issued at the console and in the log, giving the user the ability to manually perform the correct assignment of the drive letter. **Important**: this code runs after the layout conversion has taken place, so the operation cannot be undone at this stage. + +The conversion tool will obtain volume unique ID before and after the layout conversion, organizing this information into a lookup table. It will then iterate through all the entries in **HKLM\SYSTEM\MountedDevices**, and for each entry do the following: + +1. Check if the unique ID corresponds to any of the unique IDs for any of the volumes that are part of the converted disk. +2. If found, set the value to be the new unique ID, obtained after the layout conversion. +3. If the new unique ID cannot be set and the value name starts with \DosDevices, issue a console and log warning about the need for manual intervention in properly restoring the drive letter assignment. + +## Troubleshooting + +The tool will display status information in its output. Both validation and conversion are clear if any errors are encountered. For example, if one or more partitions do not translate properly, this is displayed and the conversion not performed. To view more detail about any errors that are encountered, see the associated log files. + +### Logs + +Two log files are created by the MBR2GPT tool: + +diagerr.xml +diagwrn.xml + +These files contain errors and warnings, respectively, encountered during disk validation and conversion. These tool-specific logs can be helpful in diagnosing problems with the tool, however they are not meant to replace the default Windows Setup log files: + +setupact.log +setuperr.log + +The default location for all these log files in Windows PE is %windir%. + +### Determining the partition type You can type the following command at a Windows PowerShell prompt to display the disk number and partition type. Example output is also shown. @@ -63,7 +283,22 @@ You can also view the partition type of a disk by opening the Disk Management to ![Volumes](images/mbr2gpt-volume.PNG) +If Windows PowerShell and Disk Management are not available, such as when you are using Windows PE, you can determine the partition type at a command prompt with the diskpart tool. To determine the partition style, type **diskpart** and then type **list disk**. See the following example: +``` +DISKPART> list disk + + Disk ### Status Size Free Dyn Gpt + -------- ------------- ------- ------- --- --- + Disk 0 Online 238 GB 0 B + Disk 1 Online 931 GB 0 B * +``` + +In this example, Disk 0 is formatted with the MBR partition style, and Disk 1 is formatted using GPT. + +### Interactive help + +To view a list of options available when using the tool, type **mbr2gpt /?**. See the following example: ``` @@ -105,11 +340,9 @@ Where: ``` - ## Related topics [Windows 10 FAQ for IT professionals](https://technet.microsoft.com/en-us/windows/dn798755.aspx)
[Windows 10 Enterprise system requirements](https://technet.microsoft.com/en-us/windows/dn798752.aspx)
[Windows 10 Specifications](https://www.microsoft.com/en-us/windows/Windows-10-specifications)
[Windows 10 IT pro forums](https://social.technet.microsoft.com/Forums/en-US/home?category=Windows10ITPro) -
[Fix Windows Update errors by using the DISM or System Update Readiness tool](https://support.microsoft.com/kb/947821)