Solution 1:

To move sensitive partitions, you need to boot from CD or USB.

Some free partition editors that have boot CD are :

  • MiniTool Partition Wizard Free (Bootable CD)
  • GParted Live

Of the two, MiniTool has the better user interface.

I suggest before starting, to take an image of the entire hard disk on external media, using a product that also has a rescue boot CD. Create this rescue CD and test whether it can see the backup disk and image, just in case, as any mistake can destroy the disk and render the installed operating systems unbootable. My favorite backup product is the free AOMEI Backupper.

Below is the procedure to follow once you boot into the partition editor's boot CD. It brings the unallocated space to below the EFI (sdb2), but as unallocated space is not counted as a partition, one needs to rather move its adjoining partition.

  1. Move sdb4 right/down by 400MB
  2. Do the same for sdb3 (MSR). The unallocated space should now directly follow sdb2.
  3. Reboot to test if the disk still functions. If reboot is impossible, then the MSR could not be moved - see below.
  4. Resize sdb2 to include the unallocated space
  5. Reboot

If the tools fail to move the MSR, or if Windows cannot boot after the MSR was moved, you will need to delete and recreate it.

This is explained in this answer :

Boot into the Windows installation media, and press SHIFT+F10 to open the command prompt. Type diskpart. Type list disk, and then select disk X where X is the number of the physical drive containing the Boot partition. Type list partition to give you the partition list. I had the EFI System Partition at the start of the disk now which is 100 MB in size, and the partition list says that it began at an offset of 1024 kB. Windows considers a megabyte to be 1024 kB so the free space begins at an offset of 1024 + (100*1024) = 103424 kB. Type the command create partition msr size=128 offset=103424. If you have the sizes and offsets right, this should work, and in my case, it indeed did.

See also the description of the command Create partition msr.

Solution 2:

TLDR: Backup - this is a dangerous process. Then restore the disk, adjusting parititon sizes to taste.

The strategy I would take would be to back up first and adjust partition sizes when I restore. It seems a little odd, but firstly, its idiotproof (if you mess up, you simply restore) and many good backup software gives you the option to resize when you restore, and in many cases would fix the things that would break since its recreating the partitions from scratch.

Doing any sort of file system editing without a backup is irresponsible

My usual backup software's veem endpoint backup and - I've backed up, resized and restored and it seems to work for me -iirc you rightclick on the partition, and set the volume sizes and you're good. This isn't software designed for one off backups, so something else like macrium reflect might work as well.