Fix formatted GPT in SSD
I accidentally formatted my SSD's GPT while formatting a USB in Linux's gparted. Now, when running gpt
in Mac's command line, this is how my SSD looks like:
My-MacBook-Pro:~ user$ sudo gpt -r show disk2
start size index contents
0 1 PMBR
1 1 Pri GPT header
2 32 Pri GPT table
34 1000215149
1000215183 32 Sec GPT table
1000215215 1 Sec GPT header
I used to have 2 partitions on this drive: Mac OSX and a Windows 8.1 bootcamp partition. I wouldn't mind loosing the latter.
I have heard about being able to restore the partition with the gpt
command in Mac. Is this possible in my case?
Thanks, Martin
If you don't want to use Disk Warrior or something similar to get your volumes back, there is a small chance to recover your partitions manually:
You'll need some tools and luck to accomplish that:
Install a full vanilla system (Mountain Lion or Mavericks should work) on a thumb drive. A recovery system will not work. Boot to the thumb drive, download and install wxHexEditor. Enable the root user and log-in as root.
A classical partition map of Mountain Lion without any Boot Camp partition would probably look like this on your Mac:
sudo gpt -r show disk2
start size index contents
0 1 PMBR
1 1 Pri GPT header
2 32 Pri GPT table
34 6
40 409600 1 GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
409640 998536000 2 GPT part - 48465300-0000-11AA-AA11-00306543ECAC
998945640 1269536 3 GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
1000215176 7
1000215183 32 Sec GPT table
1000215215 1 Sec GPT header
A partition map of Mountain Lion with a Boot Camp partition would probably look like this (sizes may vary in your case - i have chosen a ~50 GB partition for Windows):
sudo gpt -r show disk2
start size index contents
0 1 PMBR
1 1 Pri GPT header
2 32 Pri GPT table
34 6
40 409600 1 GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
409640 898536000 2 GPT part - 48465300-0000-11AA-AA11-00306543ECAC
898945640 1269536 3 GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
900215176 204800 4 GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
900419976 99795200 5 GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
1000215176 7
1000215183 32 Sec GPT table
1000215215 1 Sec GPT header
Now we try to search for a specific text string of your Recovery HD-partition on your disk. In the example above this is the partition with index number 3.
Open wxHexEditor. In the menubar go to "Devices" -> "Open disk device" -> choose the appropriate diskNummber. Probably it's disk1 or disk2. The disk shouldn't have any further partitions like disk1s1 or disk1s2. Try to arrange the windows like in the example below with straight red lines and scroll to the very end of the disk (your visible offset number is approx. 51211000000):
Now hit the search button and enter manually:
/private/var/tmp/efiboot/efiboot
and enable "Text Search", "Match Case" and "Search Backwards" like in the example below:
This may take a while. Please check the position of the scrollbar indicator if the finding is realistic. If you've split your disc in 375 GB (Mac OS X) and 125 GB (Windows) then the string match should be at the beginning of the 4th quarter.
Make a note of the first offset number of the block containing the string.
Additionally scroll to lower offset numbers. It should be filled with zeros except the block directly preceding. If you find anything else than zeroes stop here.
- In my example it's 68195037696. Divide that number through 512 to get its block number: 68195037696/512 = 133193433
Remove 244921 from the number found above to get the starting block of your Recovery HD.
- In my example 133193433 - 244921 = 132948512.
Remove 1 from the number found above to get the ending block of your main volume.
- In my example 132948512 - 1 = 132948511 (*)
With the starting block of the Recovery HD found, we may now add the different missing partitions:
You may have to unmount the device with:
diskutil unmountDisk diskNumber
(with the diskNumber you found above: probably disk1 or disk2)
First we recover the EFI partition by entering:
gpt add -b 40 -i 1 -s 409600 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B diskNumber
(with the diskNumber found above: probably disk1 or disk2)
Then we recover your main partition by entering:
gpt add -b 409640 -i 2 -s SizeOfPartition -t 48465300-0000-11AA-AA11-00306543ECAC diskNumber
(with SizeOfPartition = (*) - 409640 +1)
In my example that would be: 132948511 - 409640 + 1 = 132538872
Then we recover your Recovery HD by entering:
gpt add -b EndblockOfMainVolume+1 -i 3 -s 1269536 -t 426F6F74-0000-11AA-AA11-00306543ECAC diskNumber
Then you may label all the partitions with gpt label -i IndexNumber -l "Name" diskNumber
:
gpt label -i 1 -l "EFI" diskNumber
gpt label -i 2 -l "Macintosh HD" diskNumber
gpt label -i 3 -l "Recovery HD" diskNumber
(with the diskNumber found above: probably disk1 or disk2)
Now restart your Mac to the thumb drive again. Open disk utility and check the restored volume for errors.
If everything is fine, backup the content of your main volume, partition the SSD, reinstall Mac OS X Mountain Lion and migrate your apps and users.
Good luck to recover your disk - i hope it works like that. If you are unsure or have any questions leave a comment here starting with @klanomath