How to move the recovery partition on Windows 10?

According to MS's documentation, capture-and-apply-windows-system-and-recovery-partitions, the recovery partition can be captured and applied to a new partition. I have made it to work on my windows 10 PC.

Warning 1: You must know what the following commands do before you execute them. Check the link above and MS's documentation for diskpart, dism and reagentc.

Warning 2: Check disk numbers, partition numbers and volume letters carefully before executing commands.

  1. Use diskpart to find current recovery partition and assign a driver letter(eg. O) to it:
DISKPART> list disk
DISKPART> select disk <the-number-of-disk-where-current-recovery-partition-locate>
DISKPART> list partition
DISKPART> select partition <the-number-of-current-recovery-partition>
DISKPART> assign letter=O
  1. Create an image file from current recovery partition:
Dism /Capture-Image /ImageFile:C:\recovery-partition.wim /CaptureDir:O:\ /Name:"Recovery"
  1. Apply the created image file to another partition(eg. N) that will become the new recovery partition:
Dism /Apply-Image /ImageFile:C:\recovery-partition.wim /Index:1 /ApplyDir:N:\
  1. Register the location of the recovery tools:
reagentc /disable
reagentc /setreimage /path N:\Recovery\WindowsRE
reagentc /enable
  1. Use diskpart to hide the recovery partition:
    • For UEFI:
    DISKPART> select volume N
    DISKPART> set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
    DISKPART> gpt attributes=0x8000000000000001
    DISKPART> remove
    
    • For BIOS:
    DISKPART> select volume N
    DISKPART> set id=27
    DISKPART> remove
    
  2. Reboot the computer, now the new recovery partition should be working
  3. (Optional) Delete the old recovery partition:
DISKPART> select volume O
DISKPART> delete partition override
  1. (Optional) Check if the recovery partition is working:
    1. Show the current status:
      reagentc /info
      
    2. Specifies that Windows RE starts automatically the next time the system starts:
      reagentc /boottore
      
    3. Reboot the computer and do your stuff in Windows RE (eg. enter CMD and run some tools)

I know VainMain's answer from above is probably more careful and thorough, but I've been able to successfully move the partion by simply doing:

In Windows 10: "reagentc /disable"
In Linux boot CD: adjust neighboring partition as needed/move recovery partition
In Windows 10: "reagentc /enable"

Recovery environment was automatically rediscovered and booted WinRE just fine with all recovery options (Reset/System Image restore/etc). I had only 1 C: partition, no special partitioning/dual booting/multiple recovery partition/crazy BCDEDIT settings beforehand, which helped. Tested inside a VM beforehard to make sure. Had no problems after executing live.

If I remember correctly, skipping the first step (disabling via reangetc) would cause the recovery environment to end up misconfigured, not properly re-bootable, and not easily fixed.


Just as an addition to the answer of VainMan and the comment of haridsv (can't comment myself yet):

I had the same problem. Instead of DISKPART> remove execute mountvol N: /d on the command line. If you already have removed the partition first reassign a drive letter to the new recovery partition with assign letter=N (normally reagentc /info should now show the correct status again, otherwise repeat step 4 of VainMans instructions).


Like the person above I was able to do this by

  1. Open Windows Command prompt as admin and run reagentc /info
  • this showed recovery as Enabled, and gave the location on the disk and the BCD identifier.
  1. reagentc /disable
  • reagentc /info showed Disabled, no location and a zero identifier
  1. Shut down and boot into Linux. Move the recovery partition (to the left) with GParted.
  2. Shut down and boot back into Windows, and run reagentc /enable (reported Operation Successful)
  • reagentc /info now showed Enabled, the same location and a new BCD identifier (one digit different).