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.
- 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
- Create an image file from current recovery partition:
Dism /Capture-Image /ImageFile:C:\recovery-partition.wim /CaptureDir:O:\ /Name:"Recovery"
- 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:\
- Register the location of the recovery tools:
reagentc /disable
reagentc /setreimage /path N:\Recovery\WindowsRE
reagentc /enable
- 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
- Reboot the computer, now the new recovery partition should be working
- (Optional) Delete the old recovery partition:
DISKPART> select volume O
DISKPART> delete partition override
- (Optional) Check if the recovery partition is working:
- Show the current status:
reagentc /info
- Specifies that Windows RE starts automatically the next time the system starts:
reagentc /boottore
- Reboot the computer and do your stuff in Windows RE (eg. enter CMD and run some tools)
- Show the current status:
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
- 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.
reagentc /disable
-
reagentc /info
showed Disabled, no location and a zero identifier
- Shut down and boot into Linux. Move the recovery partition (to the left) with GParted.
- 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).