View Single Post
 
Old 11-18-2008, 02:38 AM
munky munky is offline
Cheetah
 
Join Date: Nov 2008
Posts: 4
[HowTo] EFI Partition Booting - Zero Modification installs on Intel SSE2 or better

*** Special thanks to Turbo, Dense, dfe, zef and the rest of the chameleon team for making this possible... ***

** DEPRECATION NOTICE: This functionality is coming to a Chameleon release very soon. Once Chameleon supports this approach, this project will be retired. Thanks to everyone who uses this bootloader, thanks for the support and the kind words **


LATEST UPDATES:

- DSDT override patch now integrated (v6) (credit and huge thanks to mackerintel!), for 10.5.6 support.

- Source code attached. Didn't get round to commenting and cleaning up. Suffice to say, 99% of the work was done by dfe, turbo, zef and the team.

- v6 is a stopgap solution in case 10.5.6 hits before the new Chameleon is released. It supports DSDT.aml file in root of EFI partition.
- v5.1 fixes an error in the packaging - in v5, 'boot' was the v5 version, but 'boot-turbo-munky.bin' was still v4.
- v5 has updated FSB detection code from Chameleon
- Basic dual booting is possible. Just hit esc at darwin bootprompt and enter 81 for 2nd drive, 82 for 3rd...
- v4 now supports JMicron ATA
- v3 now supports Boot.plist on the EFI partition
- v2 now supports device-properties (aka EFI Strings) in com.apple.Boot.plist !

A *BIG* thank u to Chameleon team for sharing their great sources - porting was a cinch!

The release of dfe's amazing boot-132 loader was an eye-opener for many of us in the community. The fact we can boot the shrink-wrapped, unmodified retail Leopard DVD on modern Intel machines (and, it turned out, on any SSE2 or better Intel machine) means we have the ability to boot a totally unmodified OS X. (The install DVD of course boots into Mac OS X).

However, it seemed most people didnt realise the gravity of this, or simply thought 'oh thats nice, use retail to install. ok, back to hacking in /System/Library/Extensions....'.

This is, imho, the wrong approach.

The *right* approach is to leave /System/Library/Extensions alone, and apply patches and modifications to the system from a different vector, just like boot-132.

This is, in my humble opinion, the ultimate hackintosh install method.

What benefit does that give you?

* Well, how about trouble-free Software Update direct from Apple? Even on SSE2 Intels? (and AMDs when Voodoo 9.5.0 final comes out...)

* How about being able to completely erase and reinstall the OS without breaking ur carefully-assembled patches?

* How about being able to boot *the same disk* on a real mac and your hack?

* How about having a com.apple.Boot.plist completely outwith the installed OS?

all without losing the usual EFI strings goodness you've come to expect from a bootloader... (Thx to Chameleon team!)


So munky, where's the beef?

Well first, a little history...

When you format a GPT (GUID Partition Table) disk in Disk Utility, there is always a hidden, 200Mb partition created as the first partition on the disk. This is supposed to be a 200Mb FAT-32 partition used for storing EFI drivers, and is mandated by the EFI / GPT specs.

Apple honours the specs and so puts the 200Mb partition there. However, (and this is the important part...) *Apple dont use it!*

So we can hijack it and use it for our own ends.


You're still not getting to the point...

Ok ok. So here goes. We repurpose the EFI system partition to hold our kexts (and, if necessary, kernels) so we dont have to change the main installation. AT ALL.

The nice thing is that Mac OS X and Disk Utility (at least the graphical version) will continue to hide the EFI partition, as you're not supposed to see it. But you also have the option to mount it if you need to make changes. And, of course, on ALL systems (currently Intel SSE2 and better), Software Update can be used without much chance (if any) of breakage.

Hmmm... ok i'm sold. So how do I do it?

Well, first grab the attached zip file. This contains a modified version of boot0 from chameleon, the unmodified boot1h from chameleon, and a fork of dfe's boot2. boot0 has been changed to look for the EFI system partition, and boot2 has been modified to load extra kexts from the EFI partition.

Warnings, Pre-Requisites

*** YOU'RE DOING THIS AT YOUR OWN RISK BTW. Dont bitch at me if your computer explodes and kills your cat. ***

You are probably best to try getting your system to boot a retail disc with boot-132 before you attempt this method. Getting it to work with boot-132 is good practice for maintaining a 'patches-free' system, and will give you a good idea of the kexts you'll need for your particular system.

NB: YOU CANNOT USE ANYTHING OTHER THAN A RETAIL DVD. Dont try a restore or drop-in disc, they WILL NOT WORK.

Another BIG NOTE: existing chameleon, pc-efi etc bootloaders can seriously mess this up. If you have problems please try with only one hd attached and make sure u *completely destroy* the existing partitions before install.

In the following guide, i've used the convention of diskXsY. Please understand, you should NEVER type diskX or diskXsY - X and Y are placeholders and need to be replaced with proper values. On most systems installed to the first hard disk, this will be disk0. Partition 1 on any GPT disk formatted by Disk Utility will be the 200Mb EFI partition. So in most cases, we'll be talking about disk0, rdisk0 and disk0s1.

Finally, please make sure you read and re-read this guide before starting. If you are unsure about any of the steps, then my advice is DONT DO IT. Wait for someone to turn these set of instructions into an easy-to-use installer or something.

Last edited by munky; 11-30-2008 at 03:15 PM.
Reply With Quote