Yosemite, Boot Camp, Windows 8.1 - Resizing Partition Guide
Hey everyone, I had some success with this so I thought I would share:
What you Need:
0) familiarity with the command line, HD partitioning, linux, and lots of nerve.
1) Yosemite
2) A successful installation of Windows via Boot Camp (I was using 8.1 and I did the installation after I upgraded to Yosemite, i.e., I did not have a Boot Camp partition before upgrading to Yosemite) <-- Any other type of config may not work with this guide!!
3) A Linux live usb/cd with gparted (I assume you're familiar with linux and gparted and things like that, I'm not going to go into too many details on how to use that OS or its tools)
4) patience and luck 🙂
Disclaimer: This can really screw up your system if you fail to follow the directions or you have made the storage gods angry... use at your own risk!
So initially I created a boot camp partition to install Windows 8.1 and after the installation realized I should have allocated more space for Windows. On the OS X side, I opened the graphical diskutil and discovered I could not resize or change either of the partitions - the only thing I could do was delete the boot camp partition which was not a handy option considering the time I put into installing Windows and its subsequent updates.
After some careful googling I found this:
http://apple.stackexchange.com/questions/134498/unable-to-resize-partitions
Which led me to the solution. From a terminal run: 'diskutil corestorage list' (without the quotes) to get a list of the logical volumes, groups, and physical disks that OS X created after using boot camp. The information you will need is the UUID of the logical volume (not the logical volume group or family). You are then going to use the undocumented command 'diskutil corestorage resizeStack' with the UUID of the logical volume in order to change the size of the volumes and physical disk. In my case, I wanted to shrink my remaining OS X partition by 40GB and give that to Windows. Again from the terminal run:
'diskutil corestorage resizeStack UUID XXXg' where UUID is the 32 digit identifier of the logical volume and XXX is the desired new size of the disk (e.g., 350g for 350 GB).
After a few moments, it will finish and in diskutil you should see an amount of unallocated space. You still can't do anything with it here, but at least it's visible. Reboot into OS X again just to feel confident that you haven't screwed anything up, yet. It did seem to take slightly longer to reboot into OS X this one time, but everything turned out ok 🙂
Now using a linux live usb drive, boot into your favorite brand of linux and run gparted. You should see your unallocated space sandwiched between your OS X partition (which gparted may or may not formally 'see') and the NTFS Windows partition. Simply move the Windows partition over to occupy the unallocated space and extend it to the end of drive and you're done. My version of gparted warned me that Windows may not boot after I do this, but for me, it worked fine and booted into Windows properly the first time. If Windows doesn't boot, you'll need a Windows install on a usb stick (you should have one from your boot camp installation right?) and then you'll need to repair the disk (there are many helpful guides that go through this very thing - just google it).
It worked for me flawlessly, good luck!