Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I had a Windows 8 installation on an HDD, using UEFI as boot. The HDD has the following GPT table:

DISKPART> list partition

Partizione ###   Tipo              Dim.     Offset
---------------  ----------------  -------  -------
Partizione 1     Ripristino         300 Mb  1024 Kb
Partizione 2     Sistema            100 Mb   301 Mb
Partizione 3     Riservato          128 Mb   401 Mb
Partizione 4     Primario           390 Gb   529 Mb
Partizione 5     Primario           540 Gb   390 Gb

(I apologize it's in Italian, but the translation is quite straightforward).

I recently bought an SSD drive, connected it and installed a fresh Windows 8. Now I have a working dual boot, but the UEFI partition is on the HDD instead of the SSD. Here's the SDD partition list:

Partizione ###   Tipo              Dim.     Offset
---------------  ----------------  -------  -------
Partizione 1     Riservato          128 Mb  1024 Kb
Partizione 2     Primario           221 Gb   129 Mb

I think that the best solution would be to have it on the SSD for two reasons:

the first is performance (I guess it would be a little be faster on the SSD due to the spin up time for an HDD, but I may be wrong about that)

second reason is consistency. As I plan to use only the Windows 8 installation that is located on the SSD and I'm probably going to erase the system partition on the HDD to use it as a data storage device, I think that the boot partition should be on the same drive as the OS.

So the question is how do I move the EFI System Partition to the SSD?

share|improve this question
up vote 2 down vote accepted

My recommendation is to not bother. The performance improvement will be negligible, because the files read from the ESP are tiny and are read only when the computer boots. Furthermore, the partition itself is tiny by modern standards, so you won't recover enough space to make the effort worthwhile. Furthermore, the attempt to move the ESP runs a risk of creating boot problems that will take far more time to fix than any time you could possibly save in improved boot time from the move.

If you want to go ahead and do this as a learning experience despite my recommendation, you'll need to look into:

  • Creating an ESP with whatever partitioning software you like. I'm not sure how you'd do this with the standard Windows tools. With gdisk, you'd create a partition of type EF00, but you'd then need to create a FAT filesystem on it, since gdisk is a partitioning-only tool (it doesn't handle filesystems).
  • Mounting both ESPs simultaneously to copy files (or in sequence using temporary storage). I'm not sure how to do this in Windows, although it would be easy in Linux or from an EFI shell. (It would be automatic in an EFI shell, in fact.)
  • Registering the boot loader on its new home. (Using the fallback filename of EFI\BOOT\bootx64.efi would likely be a simpler alternative, but is the less preferred method of loading the boot loader.) The Windows bcdedit command and the EFI shell's bcfg tool can both register boot loaders; however, bcdedit is inflexible because Windows supports just one ESP, which creates problems when copying the ESP.
share|improve this answer
    
Thank you for your answer. Well I actually prefer to have the ESP in the SSD because I might decide to remove the HDD. So I think that the ESP should be on the OS drive. Anyway, how is the latest point done? – Pincopallino Oct 28 '13 at 17:37
    
Never mind, I managed to move the partition to the SSD and Windows boots regularly. Thank you very much! – Pincopallino Oct 29 '13 at 7:34
    
Some interesting info here that would likely be VERY valuable in explaining what's happening in a generalized HOWTO, but not really answering, "So the question is how do I move the EFI System Partition to the SSD?" I've spent days of my life trying to recover from a bad decision a couple years ago and it still haunts me and in short, it comes down to relocating my EFI partition so I'd love to see a good answer. – rainabba Sep 23 '15 at 22:02

I know this is an old post, but I think a good answer is still wanted by many.

This is applicable for Windows 7, 8, 10. And is also valid for Event id: 12290 if the EFI-partition is situated on a disk other then the one that is the active OS and is to be backed up.

First disconnect any other drive containing EFI-partitions, so you don't accidently change that one.

Then you have to create a new partition at 100-300MB on the disk you want the EFI-partition to reside on. If the drive is full, first you have to shrink one of the existing partitions.

Boot, in my case, xubuntu 13 (ubuntu above 12.1 I think) from a usb-stick, live. Don't install it.

Open Gparted and create the partition and format it to FAT32. Flag the drive as "boot" and unflag any other partition flaged as "boot". Also assign the new partition a drive letter if possible. If not, you can do it with diskpart later on.

Restart and now boot up with Windows (RE) Recovery from the Windows installation DVD. Go to the command promt. Start diskpart and assign the new partition a driveletter if that was not possible in Gparted. Exit diskpart but stay in the command promt.

Now you are going to copy the nessesary files inte the new partition.

{bcdboot /S : /f UEFI} NOTE the spaces!

Example: {bcdboot c:\Windows /s : /f UEFI}

This command will as well give the partition EFI-status.

Rebuild the BCD using the following command:

{bootrec /RebuildBcd}

Now when you are asked what OS you'd like to add to the EFI-partition, you say Yes to the ones you want to include and No to the ones you don't want to be able to boot into. As in my case I recently upgraded to Windows 10, and as you might know, Windows will store youre old Windows 7/8 for a while if you haven't deleted it yourself. This copy of youre old OS is not something you normaly like to be able to boot into. It normaly recides in Windows.old. So don't chose the All alternative.

I don't know, but I think that this command only searches for Windows installations. If you got a linux os for example on the same computer. Then you have to use something like bcdedit afterwards to get the on the boot meny aswell.

There is a last command, witch I didn't use.

{bootrec /fixboot}

I have tried to learn more absout the command and I think it just set the boot flag on the efi-partition and makes it bootable. This should be the same as when I flagged the efi-partition as boot in Gparted.

If there was another efi-partition you no longer want, the easiest way is to boot into linux/gparted again and delete it from there.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.