How to move an existing installation of Window 7 64bit to UEFI (from legacy)

15

10

I have a laptop that has Windows 7 64 bit Enterprise edition. It is already filled with plenty of Software and drivers.

The laptop (Dell E6220) supports booting through UEFI, but the insatllition was on legacy BIOS.

When I try to change the booting from Legacy to UEFI I get an error message that no boot device was found (the Windows 7 doesn't recognize as bootable). Is there any way I can configure the current install to allow booting from UEFI or do I have to format and reinstall?

Ran

Posted 2012-02-14T20:57:12.543

Reputation: 153

Answers

4

Windows 7 on UEFI requires that the disk partitions use GUID partition table (GPT) rather than the traditional MBR partitioning format found on BIOS systems. Unfortunately, windows provides no way of converting an MBR partition to a GPT one non-destructively.

However, if you don't mind copying data off your drive, converting, then copying it back then you could use Windows to do it as described in this Microsoft Technet article Change a Master Boot Record Disk into a GUID Partition Table Disk. The article describes two procedures, both of which require making a copy of the data then modifying the disk to use GPT. Using the Windows interface you first delete any volumes on the disk and then convert the disk to a GPT disk using right click on the disk and selecting menu items. Using the command shell with Admin elevation, you use the diskpart utility to delete any volumes and then convert the disk to a GPT disk.

If you don't want to backup the data first and have access to a a Linux machine that you can install the drive in, there are tools in Linux that will allow you to convert the partition type non-destructively as described here. If you don't have a Linux box handy, you can also try creating a Linux boot CD and booting from that.

Searhing for "convert MBR to GPT" brings up other tools, but I have never tried them.

zdan

Posted 2012-02-14T20:57:12.543

Reputation: 2 732

2Hi zdan; can you expand on your answer by including the relevant information here? It seems very much like a Google search, not an answer, in its current form. Thanks! – Canadian Luke – 2014-09-15T19:45:15.910

The first link doesn't work anymore : ( – lapin – 2016-10-28T13:58:22.760

8

No you shouldn't have to format and reinstall. You can convert your disk to allow UEFI booting.

There is an excellent open-source project for this: gptgen, which is a "..tool to non-destructively convert hard disks partitioned in the common, "MSDOS-style" MBR scheme (including extended partitions) to use a GUID partition table (GPT)."

Microsoft published a good tutorial on this process. Below are the abridged instructions (you can also use the unabridged version). This process took me less than 10 minutes.

Steps

  1. Backup anything important. We're about to make some serious changes to the hard drive.

  2. Create a system repair disc (or use your original Windows installation media).

  3. Identity the hard disk you want to convert. You can use [Windows Disk Manager][4] to do this. This is usually Disk #0.

  4. Download gptgen. This is the tool that does the magic.

  5. Unzip gptgen, start a cmd prompt as admin, then run the following command. WARNING You did back up your data, right? This is the point of no-return.

gptgen.exe -w \\.\physicaldrive0

You may see a blue-screen after you run the above command. That is normal. I did not see a blue screen myself, and that was fine too.

  1. Boot using the Windows installation disc or system repair disc.

  2. Choose language and preferences, and then select Repair Your Computer -> Troubleshoot -> Advanced options -> Command Prompt

  3. We're going to use diskpart to finish the changes on the disk. Type "diskpart" and hit enter.

  4. Identify the boot disk where Windows is located by typing "list disk" and hit enter. Something like this should appear:

  Disk ###  Status         Size     Free     Dyn  Gpt

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

* Disk 0    Online          128 GB      0 B        *
  1. Once identified, select the disk (replace with the correct number) using this command:

select disk 0

  1. Verify the partition:

list partition

You'll see something like:

   Partition ###  Type              Size     Offset

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

   Partition 1    Primary            350 MB  1024 KB

   Partition 2    Primary            126 GB   350 MB
  1. Delete the previous system partition:

select partition 1

delete partition

  1. 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

  1. If you list the partitions again, you should end 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
  1. Make sure 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

  1. Exit diskpart:

exit

  1. Generate boot partition data, replacing C: with the letter of the Windows installation (usually C:):

bcdboot c:\windows /s s: /f UEFI

  1. That's it! You can reboot your computer now.

nathanbedford

Posted 2012-02-14T20:57:12.543

Reputation: 344

@Ramhound, thanks for the feedback. That's a good point...if the original article disappears then my answer is useless. I've updated my answer. – nathanbedford – 2015-03-26T21:26:22.503

4The last instruction is invalid on windows 7 since bcdboot doesn't have the /f flag. I tried removing that but it didn't work. – simonzack – 2015-11-21T16:14:58.210

This recipe worked for me as well. I have two comments and a follow-up: (1) after finishing the procedure, and before attempting to boot your new UEFI setup, do NOT forget to go back into BIOS and change the boot method to UEFI!! On my MSI board this took the form of giving disk-as-UEFI higher priority than disk-as-BIOS. If you do not do that, the boot will hang :-) on a dark screen with a cursor that jumps 1-2 lines down. (2) The first time I did assign letter=S it did not surivive exiting diskpart. Not sure why, had to redo. (3) What is the purpose of the MSR partition? – reikred – 2017-07-16T02:49:46.043

4

Convert Windows Installation from Legacy to UEFI:

Please note that this technique will work only for those computer systems which support UEFI firmware. Please check that first in your BIOS settings and then continue with this tutorial.

  • Step 1: Confirm that you installation is indeed in Legacy Mode. Press WinKey + R and then type msinfo32 and hit enter. The BIOS mode should be Legacy in System Summary.

  • Step 2: Download System Rescue Disk and make a bootable media from it. Download the disk from here. See instructions to make bootable media. That is pretty trivial and one can follow this tutorial.

  • Step 3: Reboot into Legacy or UEFI mode using the bootable media that you created in Step2.
  • Step 4: Run the command: testdisk Use the arrow keys to navigate. Select your HDD in which Windows is installed in Legacy Mode and press enter. Select [EFI GPT] EFI GPT Partition Map and press enter. Select Analyze and hit enter. Select Quick Search (at the bottom) and hit enter. Select Continue (at the bottom) and hit enter. Hit enter again. Select Write (at the bottom) and hit enter. Press Y and hit enter. Your partition table has changed from MBR to GPT.
  • Step 5: Reboot into UEFI mode using Windows recovery/installation media.
  • Step 6: Open command prompt. Shortcut is: shift+F10
  • Step 7: Run the following commands:

    1. diskpart
    2. list disk - Note the disk number which contains your windows installation. Let us say, it is x
    3. select disk x
    4. list partition - Note the partition number which contains your windows installation. Let us say, it is y
    5. select partition y
    6. shrink minimum=200 desired=200
    7. create partition efi
    8. list partition - Note the partition number of the new one. Let us say, it is z
    9. select partition z
    10. format fs = fat32
    11. assign letter = b:
    12. exit
    13. mkdir b:\EFI
    14. mkdir b:\EFI\Microsoft
    15. cd /d b:\EFI\Microsoft
    16. bootrec /fixboot
    17. diskpart
    18. list vol
    19. bcdboot c:\windows /l en-us /s b: /f ALL - Please note that here c: denotes the letter of the partition in which windows is installed. Lets find that out first.
  • Step 8: Reboot. Tada! Done! Check whether your installation has changed into UEFI or not.

Ref: How to Convert Windows 7/8/8.1 Installation from Legacy to UEFI Without Data Loss!

Simpler way using gdisk: Convert Windows 7/8/10 Installation from Legacy to UEFI Without Data Loss (Simpler Method)

Nehal J Wani

Posted 2012-02-14T20:57:12.543

Reputation: 493

One optional step missing from this: I was switching a system which already had a 100-ish MB "system" partition it was using for MBR boot. I needed to remove that partition before the new EFI partition would work. – dannysauer – 2019-08-02T13:21:45.747

Oh, I also had to create a UEFI recovery disk. The windows 7 CD doesn't want to come up in UEFI mode, so I used http://rufus.ie/ to create the bootable UEFI USB disk. I'm not entirely sure if that was absolutely necessary, it seems to usually work better whatever the OS if you're in an UEFI-booted environment when you try to fix UEFI problems. :)

– dannysauer – 2019-08-02T13:29:19.893

0

A quick addendum to nathanbedford's answer:

As simonzack said, Windows 7's bcdboot doesn't support the /f flag.  I didn't have any problems; just had to run bootrec /rebuildbcd immediately after running Nathan's commands and it worked a treat.

The second, 128 MB partition is not necessary.  I had no room, and just ignored it.  Everything's working fine so far.

Christopher Esposito

Posted 2012-02-14T20:57:12.543

Reputation: 11

-1

I did what @nathanbedford said, however Windows 7 bcdboot doesn't accept /f flag so in order to finish the last step

bcdboot c:\windows /s s: /f UEFI

you need to use a newer version of bcd, that's >=win8.

Two different ways to do this are, either copying a newer bcdboot.exe into an readable drive so you can access it from cmd (that's how I did it), or running a newer Windows system repair disk.

xkazuko

Posted 2012-02-14T20:57:12.543

Reputation: 1