Jump to content

[Guide] Boot from EFI partition, zero modification installs on Intel SSE2 or better...


munky
 Share

1,404 posts in this topic

Recommended Posts

I have a Intel Core 2 Duo, and an Intel DQ965GF Motherboard. I've already looked into /System/Library/Extensions and i've found dsmos.kext (and i've already added it to my EFI), but I couldn't find IntelCPUPMDisabler.kext :s... Can someone post it here?

 

Also, looked at the messages and everything looked normal :s. Will it give a warning or something if it doesn't load the kexts?

 

EDIT: I've found and installed IntelCPUPMDisabler.kext onto my EFI drive, will edit back in a couple of minutes... Crossing my fingers :D

 

Damn.... too good to be true... Still getting the "Package 0 didn't get HPET" error.

 

My extensions in EFI are now:

AppleHDA.kext

ATIRadeonX1000.kext

ATIRadeonX1000GA.plugin

ATIRadeonX1000GLdriver.bundle

ATIRadeonX1000VAdriver.bundle

ATIRNDRV.kext

dsmos.kext

IntelCPUPMDisabler.kext

IOAHCIFamily.kext

IOATAFamily.kext

IONetworkingFamilly.kext

JMicronATA.kext

natit.kext

RealtekR1000.kext

 

I think i'm stuck here :D. Also, when i do the command ./update.sh it says that the file extensions.mkext doesn't exist. Can that be the problem and if yes, can I manually add the mkext?

Link to comment
Share on other sites

Windows04:

 

I think, like Bladerunner said, it doesn't appear your kexts are loading.

 

I think you need to double check your installation procedure to the EFI partition.

 

1) I assume you erased the volume and reformatted as HFS+

2) You put the boot0 loader on the harddisk first sector

3) You dd'd the boot1h file to the EFI partition

4) You mounted the EFI partition and copied the boot-turbo-munky.bin to the root of the EFI partition

5) You made the partition active

 

My assumption is you did the above correctly, otherwise you wouldn't get this far, but I listed this just to be sure.

 

6) You made a directory at /Volumes/EFI/System/Booter to hold the mkext cache

7) You made a directory at /Volumes/EFI/Extensions to hold your extensions

8) Copy -R your extensions to /Volumes/EFI/Extensions

 

Try to start with only the required extensions to boot, then add your other ones later.

the only extensions I have are:

 

ACPIPS2Nub.kext
ApplePS2Controller.kext
dsmos.kext
IntelCPUPMDisabler.kext
SMBIOSEnabler.kext

 

 

9) Edit every kext/Contents/Info.plist and make sure the lines below are at the bottom of the kext

 

<key>OSBundleRequired</key>
<string>Root</string>

 

before the end.

 

</dict>
</plist>

 

10) Copy a specialized kernel to /Volumes/EFI, if you need one (doesn't look like you do)

11) Copy your com.apple.Boot.plist (if required) to /Volumes/EFI, and edit to your requirements.

12) Copy update.sh to /Volumes/EFI

 

Everything in place now, but not finished.

 

13) Change directory in terminal to /Volumes/EFI

14) type "sudo ./update.sh" without the quotes to create the kext cache, the first time it will not find the mkext while trying to back it up, before creating a new one.

 

Then reboot,

 

Good Luck

Link to comment
Share on other sites

Damn.... too good to be true... Still getting the "Package 0 didn't get HPET" error.

 

I think i'm stuck here ;). Also, when i do the command ./update.sh it says that the file extensions.mkext doesn't exist. Can that be the problem and if yes, can I manually add the mkext?

 

1) I've seen this also couple of times, during development of my own version of similar boot-loader. Sometimes IntelCPUPMDisabler, when it is loaded from mkext doesn't properly work. But I didn't investigate this problem more closely.

 

2) I guess Munky's boot-loader still capable of loading kexts separately, not from mkext image, then you can try to copy your kexts to /Volumes/EFI/System/Booter/Extensions (you will have to create this directory). You will also need to make sure that you don't have /Volumes/EFI/System/Booter/Extensions.mkext , then boot-loader will load extensions from /Volumes/EFI/Booter/Extensions

 

3) Munky's ./update.sh will complain about absence of extensions.mkext on very first run, whene there is no mkext yet. If it is complaing on second/third/... run, then it doesn't create mkext and you probably doing something wrong, for example mounted partition to different mountpoint ( not /Volumes/EFI ). Path is hardcoded to Munky's update.sh.

 

 

Munky, I suggest to remove hardcoded path and discover mount-point from output of "mount". In this case you free to mount to different mount-point, which is handy, when you boot into single-user mode and don't mount / as rw, so then you obviously don't have /Volumes/EFI and mount EFI partition to some other point.

 

Also I found that your boot-loader goes into boot-menu even if you have only one bootable partition and only one way to skip it is to create com.apple.Boot.plist on EFI partition with proper timer-out. I believe it is misbehavior and heritage from original boot-132, which goes into boot-menu when it can't find Boot.plist on current partition (and loader automatically tries to read Boot.plist from EFI partition before main work-loop in the code), which should be removed in case of EFI partition.

Link to comment
Share on other sites

does this work with the 64 bit address version of the jmicronATA.kext which solves the 4GB limit problem? or when it says supported does that mean to boot from rather than just getting it working? beacuse i don't need to boot. i'm looking into using this but need my 6 gig of ram and both my pata drives without the risk of kernel panics.

 

many thanks,

 

Marc

Link to comment
Share on other sites

Fantastic stuff!

 

I had some issues where my hack stopped booting (kept going to the loginapp recurring boot thing with an error message - oddly, on the same day that my real macbook did the same thing, I wonder if its because I've been messing about trying to network them together?)

 

Anyway, I just restored my hackintosh drive from a 50Gb clone I first made of it, and its perfect - you don't need to redo the EFI stuff, just as munky said! Incidently, the original image was installed using the Macbook Pro install disks to my sata drive in an enclosure, so it's completely vanilla.

 

 

It's amazing, I love it! A quad core Pro Tools rig which i can use when my macbook runs out of power!!

 

 

I have a folder backed up with all the kexts I am using for an install on an ASUS P5K with a 7300GT graphics card, with QE and QI, all working (except onboard sound which is easily fixed - I don't use it anyway - the kext off the Kalyway 10.5.1 disk work for it) - including the Attansic Gigabit LAN also.

 

The contents are:-

 

ACPIPS2NUB.KEXT

APPLEAC97AUDIO.KEXT

APPLEACPIPLATFORM.KEXT

APPLEAHCIPORT.KEXT

APPLIEAPIC.KEXT

APPLEAZALIAAUDIO.KEXT

APPLEGENERICPCATA.KEXT

APPLEINTELINTEGRATEDFRAMEBUFFER.KEXT

APPLENFORCEATA.KEXT

APPLESMBIOS.KEXT

APPLEVIAATA.KEXT

 

ATTANSICL1ETHERNET.KEXT

GEFORCE.KEXT

INTELCPUPMDISABLE.KEXT

NVDANV50HAL.KEXT

NVDARESMAN.KEXT

NVINJEXT.KEXT

SMBIOSENABLER.KEXT

DSMOS.KEXT

 

These files are saved in Extensions in the EFI partition. If you want, you can use them in the Boot 132 INITRD.dmg image file when you first install by this method

 

In Geforce.kext I am using this insert:

 

<key>IOPCIMatch</key>

<string>0x039310de</string>

 

In NVDResman.kext I am using this:-

 

<key>IOPCIPrimaryMatch</key>

<string>0x039310de</string>

 

 

 

In NVInjext.kext:

 

<key>NVCAP</key>

<data>

BAAAAAAACQAGAAAAAAAAAAAAAAA=

</data>

<key>NVPM</key>

<data>

AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==

</data>

 

 

which translates as an NVCAP value of 04000000 00000900 06000000 00000000 00000000 if you insert it using plist pro

 

 

 

In an earlier post I was having difficulty with the 7300GT. I am not sure, but since putting back the AppleAPIC.kext into the boot disk it all worked again - I don't know what this kext does though.

 

 

I hope all that helps someone out! Took me ages to collate all the info.

 

Cheers

Link to comment
Share on other sites

Great work Munky. Thanks for pulling all of this together. :D

 

I am a relative newbie to retail installs. I had a little trouble figuring out what kexts to install to my EFI partitions. But I eventually realized I could extract the kexts out of one of the boot disks people have been putting together. So I used sonotones ep35-ds3r iso.

 

I have been reading up on gptsync, and explanations of the default behavior of the graphical mac disk utility. It sounds like the gpt and mbr entries would be synched correctly to support dual booting from the drive. But I have not been able to figure out how to get this boot loader to point at anything but the first partition.

 

I am confused as to why we can't dual boot to another partition on the same drive as this EFI partition. Can someone explain what the issue is? Is it just more trouble than it is worth to make it work, or is it a bug introduced to get EFI partition booting to work?

 

-----------------------

10.5.5 retail on ep35c-ds3r with Q6600 Quad Core - 4GB ram

Link to comment
Share on other sites

Great work Munky. Thanks for pulling all of this together. :(

 

I am a relative newbie to retail installs. I had a little trouble figuring out what kexts to install to my EFI partitions. But I eventually realized I could extract the kexts out of one of the boot disks people have been putting together. So I used sonotones ep35-ds3r iso.

 

I have been reading up on gptsync, and explanations of the default behavior of the graphical mac disk utility. It sounds like the gpt and mbr entries would be synched correctly to support dual booting from the drive. But I have not been able to figure out how to get this boot loader to point at anything but the first partition.

 

I am confused as to why we can't dual boot to another partition on the same drive as this EFI partition. Can someone explain what the issue is? Is it just more trouble than it is worth to make it work, or is it a bug introduced to get EFI partition booting to work?

 

-----------------------

10.5.5 retail on ep35c-ds3r with Q6600 Quad Core - 4GB ram

 

The issue is not that you can't dual boot to a second partition on the same drive, it's that the loader doesn't currently see mon-HFS+ partitions. I have two OS X partitions on the same drive and I am currently running from the second one. I have a Timeout set in my Boot.plist. During the timeout I see listed all three HFS+ partitions on that drive.

 

If there was a WinXX or Linux system partition on this drive it would not be seen because the boot loader is not built on the Chameleon base. That may come in the future, but there is no published plan at the moment.

Link to comment
Share on other sites

This is for sure a great solutions, thanks for all work...

 

I just miss two things for a complete solution ;)

 

1) I had to use Natit.kext to get my Nvidia GeFore Go 7300 to work with full CI/QE after i updated to 10.5.5, EFI string didnt work anymore but not a big deal becouse the install is still untouched with Natit on EFI Partition, the only uggly thing is that System Profiler display Unknown, still working 100% with all gfx apps ive tested etc.

 

2) Getting dual boot...

 

I did a fresh install (only got one 120gb hd in my laptop):

 

Boot with cd, made 2 partitions GUID one 30gb (FAT) for vista, and 80 gb (journaled) for OS X + the hidden 200 efi part, installed Leo Retail. Installed Vista. Used cd to boot and fixed the EFI partition to boot with all kext etc.

 

I can dual boot but to do it i have to flag ether EFI partiton or VISTA partition. Would be nice to be able to skip that step somehow? Anyone got some solution? Would an bootable USB help?

Link to comment
Share on other sites

Allright, i did the whole guide again and also followed your instructions, Bearcat (so i put the code in info.plist, etc..). When i boot the computer en select the partition (with -v -f), I see that all of my kexts are loading (my natit says it found an X1950 Radeon pro card, my alcinject is starting, etc...)! But then the most fatal error of all: "Still waiting for root device"... ;)

 

I tried adding the boot-uuid (manually and with com.apple.boot.plist) of my partition but that didn't work :s. Do I need to add a kext or something to let it work? Set an Bios option?

 

Also, the HDD is formatted with 2 (if you add EFI, 3) partitions:

- Data and Backup (for time machine backups and normal data)

- Macintosh (the retail installation)

- EFI

 

Can the problem be that the drive has more than one (with EFI, 2) partition(s)?

Link to comment
Share on other sites

This is for sure a great solutions, thanks for all work...

 

I just miss two things for a complete solution ;)

 

1) I had to use Natit.kext to get my Nvidia GeFore Go 7300 to work with full CI/QE after i updated to 10.5.5, EFI string didnt work anymore but not a big deal becouse the install is still untouched with Natit on EFI Partition, the only uggly thing is that System Profiler display Unknown, still working 100% with all gfx apps ive tested etc.

 

2) Getting dual boot...

 

I did a fresh install (only got one 120gb hd in my laptop):

 

Boot with cd, made 2 partitions GUID one 30gb (FAT) for vista, and 80 gb (journaled) for OS X + the hidden 200 efi part, installed Leo Retail. Installed Vista. Used cd to boot and fixed the EFI partition to boot with all kext etc.

 

I can dual boot but to do it i have to flag ether EFI partiton or VISTA partition. Would be nice to be able to skip that step somehow? Anyone got some solution? Would an bootable USB help?

 

Nebuluz: Have you tired the SMBIOSresolver.kext by superHi? It cleared up several items for me and allowed me to use the vanilla AppleSMBIOS.

 

The dual boot you want, like the one in Chameleon, may come later but I don't think there is an active effort underway at the moment.

 

Allright, i did the whole guide again and also followed your instructions, Bearcat (so i put the code in info.plist, etc..). When i boot the computer en select the partition (with -v -f), I see that all of my kexts are loading (my natit says it found an X1950 Radeon pro card, my alcinject is starting, etc...)! But then the most fatal error of all: "Still waiting for root device"... ;)

 

I tried adding the boot-uuid (manually and with com.apple.boot.plist) of my partition but that didn't work :s. Do I need to add a kext or something to let it work? Set an Bios option?

 

Also, the HDD is formatted with 2 (if you add EFI, 3) partitions:

- Data and Backup (for time machine backups and normal data)

- Macintosh (the retail installation)

- EFI

 

Can the problem be that the drive has more than one (with EFI, 2) partition(s)?

 

Windows04: I had the same problem you describe. I had to install an older copy of IOATAFamily.kext to access my ATA drives. I don't know if that is your problem or not - not sure what your hardware is.

Link to comment
Share on other sites

I had the same problem you describe. I had to install an older copy of IOATAFamily.kext to access my ATA drives. I don't know if that is your problem or not - not sure what your hardware is.

 

Well, i have two IDE DVD burners, but all my HDD (I have 3) are all SATA, so I don't think that's the problem :s. I will try to add the IOATAFamily.kext to EFI ;).

Link to comment
Share on other sites

Nebuluz: Have you tired the SMBIOSresolver.kext by superHi? It cleared up several items for me and allowed me to use the vanilla AppleSMBIOS.

 

The dual boot you want, like the one in Chameleon, may come later but I don't think there is an active effort underway at the moment.

Windows04: I had the same problem you describe. I had to install an older copy of IOATAFamily.kext to access my ATA drives. I don't know if that is your problem or not - not sure what your hardware is.

 

I thought SuperHi's SMBIOSresolver.kext was the same as SMBIOSEnabler.kext, are there any big diffrents... And what about AppleSMBIOSEFI by Chun-nan, do they all work from EFI partition?

Link to comment
Share on other sites

Mmmmmmm..... Dual Boot...... mmmmmmmmm..... same drive......

 

(homer simpson in chocolate land)

 

So is this an indication you figured out how to successfully dual boot to Win/Linux volume on your GPT Drive???

If so, how ? :D

 

If not, what about the other bootloaders out their people mention, BootBCD (sp?), anyone have experience with those in our GPT Setup?

Link to comment
Share on other sites

I thought SuperHi's SMBIOSresolver.kext was the same as SMBIOSEnabler.kext, are there any big diffrents... And what about AppleSMBIOSEFI by Chun-nan, do they all work from EFI partition?

 

I am sure they are all aimed at the same basic problem. However they do use different methods of reaching their goal. I tried all three. The only one that did not give me a kernel panic was the SMBIOSresolver by SuperHi. Also, it allowed me to modify some settings by changing the Info.plist. I think that at least one of the others requires a re-compile and I thought that was a bit cumbersome.

 

I guess the idea is to try each and pick the one that works best for you. That's what I did. :(

Link to comment
Share on other sites

So is this an indication you figured out how to successfully dual boot to Win/Linux volume on your GPT Drive???

If so, how ? :P

 

If not, what about the other bootloaders out their people mention, BootBCD (sp?), anyone have experience with those in our GPT Setup?

 

Nah that is me dreaming in dual boot land, once the developers see the need to add it :)

 

Btw I tried the grub way and the NT boot selector, but I cant get past the boot1h error.

 

Maybe someone could enlighten me. I don't care what dual boots my machine as long as it dual boots. I am open to suggestions.

 

Rightnow I am doing the swap the active partition trick. Even made a script. But this is a subpar solution

since I have to boot to the current os to make the switch

Link to comment
Share on other sites

Allright Bladerunner: I've added IOATAFamily.kext to the EFI and yes yes! Got Boot Device! I see that everything is loading (ethernet card gets an ethernet adress, login window application started,etc...) but then i get this weird error:

 

"Couldn't read local hostname; using default bMacintosh.(and then a lot of numbers)"

"Couldn't read Computer name; using default bMacintosh.(and then a lot of numbers)"

 

And then nothing, it just sits there. Can this be because i'm starting Leopard for the first time (so with the intro movie and the first-startup-procedure?)?

Link to comment
Share on other sites

Allright Bladerunner: I've added IOATAFamily.kext to the EFI and yes yes! Got Boot Device! I see that everything is loading (ethernet card gets an ethernet adress, login window application started,etc...) but then i get this weird error:

 

"Couldn't read local hostname; using default bMacintosh.(and then a lot of numbers)"

"Couldn't read Computer name; using default bMacintosh.(and then a lot of numbers)"

 

And then nothing, it just sits there. Can this be because i'm starting Leopard for the first time (so with the intro movie and the first-startup-procedure?)?

 

I don't know. I have never seen that error. I know some people have needed to add an older version of IONetworkingFamily.kext to get there networking to function. It's worth a try, but I really am at a loss to say what is happening in your case.

Link to comment
Share on other sites

".. Wait for someone to turn these set of instructions into an easy-to-use installer or something. "

 

First things first -

  1. Thankyou all so very much for everything so far, I know all your efforts are truly appreciated.
  2. Yes, I am a fat lazy noob and really should read a bit more before I get my fingers burnt!
  3. How close is the OSx86 / hackintosh community getting to having something as easy to use as nLite?

I posted months ago thinking something like this would just be an impossible dream -

http://forum.insanelymac.com/index.php?showtopic=118414

 

but now its feels like there is really something just like this special 'nirvana' tool just around the corner ...

 

I think if it should come to light it would be truly useful not just for our community but for all mac users?

 

[EDIT] - This looks like we're getting much closer -

http://forum.insanelymac.com/index.php?s=&...st&p=934112

Link to comment
Share on other sites

I followed through Phase 5 and on the test boot I get the following error:

 

boot0: GPT

boot0: HFS+

boot0: booting

boot0: done

HFS+ partition error

 

Now, if I use my previous Boot132 ISO I can boot through to the point where I choose my hard disk and load OSX and all is fine.

 

Suggestions?

 

Phase 5: Test boot!

 

So this differs slightly depending on whether you have a Core cpu or not - that is, whether you can (or choose to) run the vanilla kernel or a patched kernel.

 

If you boot the vanilla kernel, you should just have to press Return, as the bootloader should find your installed OS.

 

If you boot a patched kernel, the magic you need is this:

 

bt(0,0)/mach_kernel.voodoo -v boot-uuid=<the install's uuid you wrote down earlier>.

 

With a bit of luck, you'll boot up into your nice shiny new Leopard install, and be able to use Software Update without worrying.

Link to comment
Share on other sites

my bad.

10.5.5 did NOT overwrite bootloader.

but disabler did not prevent loading of some overwritten kexts, and the while sleep 1... loop did not prevent the updater from writing a new appleintelcpupowermanagment.kext, so the update crashed and on reboot i had hpet errors until re-installed from a hackintosh distro.

this has happened twice.

i don't think i can try this a third time yet.

 

so - question -

what kexts can load from /efi/extensions, and which must be put in /s/l/e?

thanks, i've read and re-read, it just hasn't clicked totally for me.

Link to comment
Share on other sites

my bad.

10.5.5 did NOT overwrite bootloader.

but disabler did not prevent loading of some overwritten kexts, and the while sleep 1... loop did not prevent the updater from writing a new appleintelcpupowermanagment.kext, so the update crashed and on reboot i had hpet errors until re-installed from a hackintosh distro.

this has happened twice.

i don't think i can try this a third time yet.

 

so - question -

what kexts can load from /efi/extensions, and which must be put in /s/l/e?

thanks, i've read and re-read, it just hasn't clicked totally for me.

 

It looks to me like something is wrong with your basic setup. You should not be needing much, if anything, in /S/L/E to make your system run. And, you should NOT need the sleep loop.

 

Can you show me what your /Volumes/EFI directory looks like? Including /Volumes/EFI/System/Booter.

 

Are you using Munkys' update.sh script to build the Extensions.mkext?

 

Which kernel is being used?

 

Oh, and what about your system specs. CPU type etc. It's not in your signature. It may help to know that as well.

Link to comment
Share on other sites

 Share

×
×
  • Create New...