Converting Windows BIOS installation to UEFI

There are several reasons to use UEFI instead of BIOS. I won’t go into details regarding that. But there are some cases when you already have a fully functional Windows installation running on BIOS and you don’t want to start all over again. Sadly, there are no tools that performs this job. And I found there is not too much documentation regarding how this can be performed either, or even how this should work. Since after some digging and trial-and-error I was able to perform the operation, I will post the instructions for anyone who needs it.

Please note this is not supported by Microsoft.


Convert a Windows 7/8 BIOS (MBR) installation to UEFI (GPT) without moving, copying or losing data.



  1. A computer able to boot UEFI. You can check that on your computer manufacturer. Also in the BIOS setup should display UEFI boot options.
  2. Windows 7/8 x64 (I’m not sure if x86 supports it or how).
  3. A computer able to boot from USB or memory card (only for this process).
  4. A USB drive or memory card with at least 4GB or a Windows installation disc.
  5. BitLocker TURNED OFF! If you have BitLocker enabled on your hard drive, it will have to be TOTALLY turned off for this procedure. After the procedure is performed, BitLocker can be turned on again.
  6. A “standard” Windows installation. This means, the disk where Windows is installed has to contain the System Partition (something above 200MB) and then the OS Partition. This is because Windows will require some space at the beginning of the disk to create the new boot partitions, and we will use the previous System Partition. To verify this you can follow Instructions steps 8 through 11. If there isn’t enough space at the beginning (the primary small partition is under 200MB), partitions may be resized using some tool like Easeus Partition Master (You can also just use the windows disk management tool (diskmgmt.msc))  or such. Don’t continue the operation until you have done so because you may not be able to finish it!



  1. As usually, I won’t take any responsibilities if data is being lost, your computer doesn’t boot up anymore, or some gremlins attack your family. You are doing this at your own responsibility. 🙂 This is not a documented feature at all.
  2. After this procedure, old versions of Windows probably won’t be able to boot from this disk drive since it has to be converted to GPT.



  1. It is HIGHLY recommended for you to perform a backup of your data! If you have a second disk drive big enough, you can simply create a system image and able to recover the full installation as it was before you started this procedure if anything goes wrong.
  2. Download this guide to another computer or print it out, since you will have to make some operations without Windows working.
  3. These procedures are likely to render your on-board Recovery partition unusable. Thus, a backup of your Recovery partition onto a USB device is highly recommended if your PC came with Windows 8 preinstalled or you don’t have your Windows installation media. Once created, this bootable Recovery USB can optionally be substituted for the System Repair disc in the steps below. For a creating the Recovery USB, see the following: 



Steps were performed on Windows 8. Some steps in Windows 7 may have different menus, but the options and results are the same.



  1. Create a system repair disc (  ). You can skip this step if you have a Windows installation media. Is a good measure to reboot and verify you can start your system from this disc.
  2. Identify which disk you want to convert (usually is #0). This can be done by looking at the number in the Windows Disk Management.
  3. Download gptgen from here  . (You could use the Windows Disk Management Tool for this too. (diskmgmt.msc)) This tool will allow you to convert your MBR disc to GPT with the data included.
  4. ATTENTION: After this step, your computer CANNOT BOOT until the whole process is completed. DO NOT Shut Down Unless Instructed to! Unzip gptgen and then run CMD with elevated privileges. (replace the 0 with the identified disk number).

    This *will* result in a BSOD shortly after and it’s to be expected:

    gptgen.exe -w \\.\physicaldrive0

  5. Boot using your Windows installation or previously generated system repair disc.
  6. Choose language and preferences, and then select Repair Your Computer -> Troubleshoot -> Advanced options -> Command Prompt
  7. We will need the disk partitioning tool. With this, we will recreate the boot partitions. Type:diskpart
  8. Identify the boot disk where Windows is located, typing:list disk 

    Something like this should appear:


          Disk ###  Status         Size     Free     Dyn  Gpt

          --------  -------------  -------  -------  ---  ---

        * Disk 0    Online          128 GB      0 B        *

  9. Once identified, select the disk (replace with the correct number):select disk 0
  10. Verify the partitions:list partition
  11. Something similar at the info below should appear.       Partition ###  Type              Size     Offset

           -------------  ----------------  -------  -------

           Partition 1    Primary            350 MB  1024 KB

           Partition 2    Primary            126 GB   350 MB

  12. Delete the previous system partition:  select partition 1

      delete partition

  13. Create the new boot partition, Microsoft reserved partition:  create partition EFI size=100 offset=1

      format quick fs=fat32 label="System"

      assign letter=S

      create partition msr size=128 offset=103424

  14. If you list the partitions again, you should have ended up with something like this:       Partition ###  Type              Size     Offset

           -------------  ----------------  -------  -------

           Partition 1    System             100 MB  1024 KB

           Partition 2    Reserved           128 MB   101 MB

           Partition 3    Primary            126 GB   229 MB

  15. Ensure that your Windows installation is mounted, replacing 3 with the volume number of the Windows installation (usually 1):  list volume

      select volume 3

      assign letter=C

  16. Exit diskpart:  exit
  17. Generate boot partition data, replacing C: with the letter of the Windows installation (usually C:):  bcdboot c:\windows /s s: /f UEFI
  18. Cross your fingers and then restart your computer!



In the event that you get:

BOOTMGR is missing

press CTRL+ALT+DEL to Restart

Follow these steps

1. Insert your Windows CD or use a different computer to load a Windows 7 or higher boot installer onto a CD or a USB Flash Drive

2. Boot into the installer and you should see something like this:


Final tasks

  1. BitLocker can be enabled again.
  2. If Hyper-V was installed before this procedure, it may not work. To fix it, just remove the feature, restart your PC and then enable it again. No VM is lost.
  3. In Windows 8 and if the computer supports it, Windows 8 Secure Boot can be enabled inside the computer BIOS. This will improve the computer security by some degree and maybe reduce boot time. Refer to information from your system manufacturer and/or–enabling-secure-boot 
No Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

MDT – Joining a Computer to a Domain Using PowerShell

Using PowerShell scripts within a task sequence provides more flexibility than using the CustomSettings.ini file to join a computer to a domain. The parameters of the CustomSettings.ini file are common to any deployment you perform. That’s why creating a custom PowerShell script to join your domain will be customize to …

Task Sequence Tasks Explained

This document explains the tasks that you will find in standard task sequence. Initialization > Gather local only – gathers deployment configuration settings from local sources that apply to the target computer [ZTIGather.wsf] Validation > Validate – verifies that the target computer meets the specified deployment requirement conditions. Such as …

How MDT uses XML to install Applications

Have you ever thought about what actually happens when you import applications into your MDT environment? How does the task sequence know what application to install? How does it know what command-line arguments to specify during the application install process? Technically, as a user, all that is required of us …