Unorthodox Darwin Boot Fix for SSD’s with GUID GPT on a non-EFI BIOS
A fair number of Hackint0sh users have probably become aware of the boot issues with SSD’s especially on Laptops without UEFI support, some users believe this is caused by the 6GB/s ports and using a 3GB/s port will solve the boot-loader issue while others are convinced it’s the brand/size of the SSD while the serious techies seemed to have narrowed it down to 4KB sectors of newer drive models today but unfortunately many of the fixes for these problems require a lot of work in the command line and what’s worse, the boot-loader is susceptible to crashing especially if you plan on adding a new OS to your partition table.
Truthfully no one understands the depth of why the boot-loader consistently fails and my fix should be considered a band-aid until future revisions of the Chimera/Chameleon boot-loader become more stable and more universally compatible. I have been using this fix for over a year now and haven’t run into any problems, if anything, my PC has become more stable since doing this but only because I notice less Kernel Panics and rarely have trouble booting (with the exception of a harmless EBIOS error after a hard reset or chainloading your bootloader if you triple-boot – this error does not harm your drive, it is merely a hiccup when reading my modified partition table). This fix should not take you longer than 5 minutes should your SSD be eligible, let’s begin:
1. Boot into your Mac partition using rBoot or any similar tool, you should be able to boot into your Mac partition or you are looking at the wrong tutorial.
2. Open terminal and run the following command:
fdisk440 -e /dev/rdiskX (X is the drive number for the SSD, typically 0. Run disk utility, select the SSD and click the Info button to determine the # of the drive).
(*newbie note: fdisk440 recognizes Unknown IDs as Darwin, GPT, UFS, etc whereas fdisk w0ill not – assuming the partition ID is real)
3. Now we are about to edit our drives partition table, enter the command P and press enter to display the partition table. If you have both Windows and Mac installed, you should see an HFS and NTFS partition and your output should be similar (not exact) to this:
fdisk440 -e /dev/rdisk7 printout:
Offset: 0 Signature: 0xAA55
#: id cyl hd sec – cyl hd sec [ start – size]
1: EE 1023 254 63 – 1023 254 63 [ 1 – 125045423] GPT
2: 00 0 0 0 – 0 0 0 [ 0 – 0] unused
3: 00 0 0 0 – 0 0 0 [ 0 – 0] unused
4: 00 0 0 0 – 0 0 0 [ 0 – 0] unused
4c. If you have an SSD with a table similar to the one above, please leave a comment and I can help you, but I will not include instructions in the tutorial because I have had issues with the boot-loader remembering itself on this type of SSD.
5. Okay here’s the scary part, type the command:
6. We will now be changing the identifier from EE (GPT) to AB (Darwin Boot 8MB) so type AB and press enter. Terminal will ask if you want to edit in CNS mode, type n and set the offset to 0, the start to 1, and the end to 8. I have tried matching the partition exactly, only changing the ID to AB but that is tedious and from my findings, does not help the drive boot any better. The first 8 MB is all that’s required to boot the drive, if you want you could set the end to 200480 which is the real size of the first partition but again, no point, I suggest using 8MB.
7a. Looking back at the first fdisk output, notice the *2 in green, this represents the flagged partition. My flagged partition is Mac but depending on your version of Windows, your NTFS partition might be flagged and we don’t want to change that just yet, so if you see a * beside your NTFS partition then continue to step 8.
7b. if none of your drives are flagged, enter the command,
this will flag the darwin boot partition we created, hopefully giving it boot priority.
8. Enter the command w to write the partition table to file. Now press q and install your preferred boot-loader, I use the latest chameleon r2064 currently. Now shutdown and attempt to boot the drive using the F12/F9 key to select it from the BIOS menu. If your Windows boots, go back to step 7b. If Darwin boots, congradulations! Keep reading though, I have some important notes to be aware of.
So WTF just happened? Well we’ve tricked our SSD into thinking it has an MBR and not a GPT… no matter how you installed windows or mac is irrelevant. Time Machine works fine and windows barely notices a thing… the drive is still a GPT and should you need to modify your partitions, simply open Disk Utility, select your SSD (NOT ONE OF ITS PARTITIONS) and select the first aid tab and run the repair disk command. This will restore your original partition table (you can verify this by running fdisk) and after a reboot with an appropriate bootloader, you’ll be able to resize/add/remove partitions again, once you finish, just fdisk back into the drive and patch the partition followed by anther bootloader install.
Does this affect Time Machine, what if I want to wipe my drive? Not right now but future versions of TM might notice the table change so I HIGHLY suggest repairing your disk, rebooting, running TM before you plan on formatting and restoring from a backup. I usually don’t do this but I know how to recover my data should I ever run into the issue but I can’t say the same for you. Backups performed on the “MBR” are no different than the GUID, so running the backup on the GPT shortly after should only take a few seconds and could save you a lot of time than if you just skip this step.
If this method scares you then I would suggest using a tutorial for installing your Mac partition to a properly formatted MBR which is possible but in my experience, this method is very risky and many users have reported time machine issues as well as HDD permanently crashing. Installing to an MBR is complicated stuff and even Mountain Lion hasn’t implemented the option meaning Apple wants you to use GUID and I prefer it myself since damaging them is very difficult, repairing is usually just the click of a button, and there is a ton more functionality/control than Window’s MBR allows. Even though this tutorial spoofs an MBR, It does not behave like one and Windows recognizes this by not allowing partition changes to the spoofed SSD. Linux also gets confused if the Darwin partition is too big and won’t mount the drives which is another reason i only use 8 MB.