I needed to replace a drive in a Mac mini with a bigger one. The drive had Mac OS X 10.9 (Mavericks) and Bootcamp with Windows 7. After using Clonezilla to backup the drive and restore it to the bigger one, the partitions were obviously still the same size. There was just a lot of free unpartitioned space at the end of the new drive.
How to resize and move all the partitions (including the hidden EFI and Recovery partitions), to fill the free space?
Disk Utility will not let you touch the Bootcamp partition. Windows 7 looked like it could resize it, but not move it. Resizing it with Win7 created a mess: the Mac would still see the original size.
The heart of the problem seems to be that the Mac wants a GPT partition table, but for Bootcamp, it creates a hybrid MBR partition which is what Win7 sees. Win7 would have no problem with a GPT-only partition, but Bootcamp makes a hybrid MBR anyway. Win7 then resizes that MBR partition, but doesn't update the GPT partition table, which is what the Mac sees. And the Mac doesn't let you fix it either.
At this point, I tried Gparted, but it wouldn't touch this mess (giving some error which I forgot).
Paragon's Camptune X looked like the best solution. However, after paying $20 for it, it turned out it couldn't do anything either. All it does is to let you move a cursor for the relative sizes of the Mac and Windows partitions. But you cannot increase the size to use the free space.
Finally, Rod Smith's Gdisk saved the day again.
What I ended up doing worked in the end:
- Booted a Gparted USB key, and resized the Windows partition to fill the entire disk.
- Booted to Mac, and used Camptune X to enlarge the Mac partition while reducing the Windows one.
- Now, Windows would not boot.
- Used gdisk to re-create the hybrid MBR, and mark the Windows partition as bootable, as explained in detail in this post.