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

solved my build problem. who wants to be guinea pig? ;)

 

replace the 'boot' file on the EFI partition with the attached version, add some device properties (EFI strings) into your com.apple.Boot.plist in whatever format Chameleon expects them, cross your fingers and reboot ;)

 

Well, I tried it and there is some good news and some bad news :)

 

the good news is that my system is up and running using your boot and efi strings. I removed Natit.kext but still have my full changeable resolutions and hardware supported QE/CI.

GeForce FX 5500:

 Chipset Model:	GeForce FX 5500
 Type:	Display
 Bus:	PCI
 VRAM (Total):	256 MB
 Vendor:	NVIDIA (0x10de)
 Device ID:	0x0326
 Revision ID:	0x00a1
 ROM Revision:	"pc_efi_v8"
 Displays:
Display Connector:
 Status:	No display connected
IBM G96:
 Resolution:	1600 x 1200 @ 75 Hz
 Depth:	32-bit Color
 Core Image:	Hardware Accelerated
 Main Display:	Yes
 Mirror:	Off
 Online:	Yes
 Quartz Extreme:	Supported

 

Also, TimeMachine is now working without the patched IONetworkingFamely.kext. Also, the Parallels NIC entries are still working. My kext list is now:

bash-3.2# mkdir /Volumes/EFI
bash-3.2# mount_hfs /dev/disk0s1 /Volumes/EFI
bash-3.2# ls -l /Volumes/EFI/System/Booter/Extensions
total 0
drwxr-xr-x  3 root  wheel  102 Sep 29 19:27 AppleACPIPlatform.kext
drwxr-xr-x@ 3 root  wheel  102 Sep 29 19:27 AppleAHCIPort.kext
drwxr-xr-x  3 root  wheel  102 Sep 29 19:27 AppleDecrypt.kext
drwxr-xr-x@ 3 root  wheel  102 Sep 29 19:27 ApplePS2Controller.kext
drwxr-xr-x@ 3 root  wheel  102 Sep 29 19:27 AppleSMBIOS.kext
drwxr-xr-x@ 3 root  wheel  102 Sep 29 19:27 Disabler.kext
drwxr-xr-x  3 root  wheel  102 Sep 29 19:27 IOATAFamily.kext
drwxr-xr-x@ 5 root  wheel  170 Sep 29 19:27 System.kext

 

Oh, yes, I said there was bad news. I had to remove the kextchche because this new boot module would not load it. I got near instant kernel panic. The messages mentioned invalid CPU and intelcpupower, so I know the cache was not being used. Still, not bad progress.

 

Great job Munky. Thanks.

Link to comment
Share on other sites

hey bladerunner, thanks for the speedy response.

 

thats very bizarre, because my machine is booted using this bootloader and an mkext right now.

 

i dont use device properties ('efi strings'), but that shouldnt break it.

 

 

are you sure you corrected permissions etc before creating the mkext?

 

also, please note you should not have /System/Booter/Extensions directory and /System/Booter/Extensions.mkext at the same time - use one or the other.

 

i've moved my Extensions folder to the root of EFI (ie /Volumes/EFI/Extensions)

 

and to test a new kext, i do:

 

mv /Volumes/EFI/System/Booter/Extensions.mkext /Volumes/EFI/Extensions.mkext.old

chmod -R 644 /Volumes/EFI/Extensions

chown -R root:wheel /Volumes/EFI/Extensions

kextcache -a i386 -m /Volumes/EFI/System/Booter/Extensions.mkext /Volumes/EFI/Extensions

chmod 644 /Volumes/EFI/System/Booter/Extensions.mkext

chown root:wheel /Volumes/EFI/System/Booter/Extensions.mkext

 

before rebooting.

Link to comment
Share on other sites

haha...thats too funny munky ;) I was just coming over here to see if EFI strings would work qith your boot method (I have tried pc_efi and chameleon but I cant make them work without -f flag!) your way is so clean and simple - and now it support EFI strings without me asking!!! nice!

Link to comment
Share on other sites

heh nice one mate... lemme know if it works for you. try with an Extensions directory first, then if that works, try an Extensions.mkext ;)

 

can someone help a brother out here... i am using Natit... how do i turn my natit injection stuff into an efi string? is there an easy way?

 

efi studio doesnt have an entry for my X1800.... ;)

Link to comment
Share on other sites

I will let you know.....I am trying so hard to find an EFI string for my NVS 285 because EFI studio etc doesnt have this card....so its gonna be trial and error while I mod existing geforce .plists to see which one is compatible....have you got any idea if nvs 285 is like geforce 6600? There is so little info on this card around here!

 

Thanks again bud!

Link to comment
Share on other sites

Hopefully this will help you munky :

 

http://forum.netkas.org/index.php?topic=175.0

 

+

 

http://forum.netkas.org/index.php/topic,104.0.html

 

Cheers , will try this method soon was using something different but this appears to be better , now that it supports efi strings it's time for me to test it ;) .

 

If all works well all we lack is a shiny boot gui in relation to e-fix ;)

 

Thanks for the time put into this

Link to comment
Share on other sites

heh nice one mate... lemme know if it works for you. try with an Extensions directory first, then if that works, try an Extensions.mkext :)

 

can someone help a brother out here... i am using Natit... how do i turn my natit injection stuff into an efi string? is there an easy way?

 

efi studio doesnt have an entry for my X1800.... ;)

 

There were no strings for my card either. Well, I started before efi-studio existed :( I found that due to my specific hardware config the tools that should locate the video were locating the built-in card which I don't use and couldn't see the pci plugin.

 

On the netkas forum the eif thread has a tool that converts efi string to xml - plist - form. What I did was to use the xcode ioreg display tool, the efi to xml convert tool and some trial and error.

 

Get a string/xml for a card somewhat like yours, locate your card in the ioreg dump and then edit the xml to have your pci address and other values you want/need. convert the xml back to a hex string and use vi with copy/past to insert it into the Boot.plist.

 

I near wore out my system re-boot function getting it to work :(

 

I doubt this is much help, but that's the best I can do and it should point you in the correct direction.

 

the area of the netkas forum I mentioned ias at netkas forum - efi tools

 

-- Blade

 

hey bladerunner, thanks for the speedy response.

 

thats very bizarre, because my machine is booted using this bootloader and an mkext right now.

 

i dont use device properties ('efi strings'), but that shouldnt break it.

are you sure you corrected permissions etc before creating the mkext?

 

also, please note you should not have /System/Booter/Extensions directory and /System/Booter/Extensions.mkext at the same time - use one or the other.

 

i've moved my Extensions folder to the root of EFI (ie /Volumes/EFI/Extensions)

 

and to test a new kext, i do:

 

mv /Volumes/EFI/System/Booter/Extensions.mkext /Volumes/EFI/Extensions.mkext.old

chmod -R 644 /Volumes/EFI/Extensions

chown -R root:wheel /Volumes/EFI/Extensions

kextcache -a i386 -m /Volumes/EFI/System/Booter/Extensions.mkext /Volumes/EFI/Extensions

chmod 644 /Volumes/EFI/System/Booter/Extensions.mkext

chown root:wheel /Volumes/EFI/System/Booter/Extensions.mkext

 

before rebooting.

 

My bad. You are correct. I had a bad kextcache. This is me with my stupid face on ;)

 

Your test method is more organized than mine was - so I stole it. Thanks. Up and running with an mkext and efi strings.

 

-- Blade

Link to comment
Share on other sites

Just added one more tiny thing before bed...

 

On the first post, you'll see a new attachment called update.sh.zip. This is a tiny shell script which updates your mkext for booting (if ur kexts change), and should be placed in /Volumes/EFI. It expects to find kexts in /Volumes/EFI/Extensions and will create the /Volumes/EFI/System/Booter/Extensions.mkext file, after correcting all permissions and ownership. It also logs to a file called update.log.

 

Cheers and goodnight :blink:

Link to comment
Share on other sites

yes thats right. i'll go ahead and update the zip file on the first post now that we have some confirmed working examples :blink:

 

Great job, I am loving this. I set up Leopard on a friends system using this method. Couldn't use it on mine yet, since I use EFI strings, but now it supports EFI strings I am good to go. BTW, does converting the kexts into a Extensions.mkext allow the AppleHDA to load from EFI partition?

Link to comment
Share on other sites

hey blade... surely all i need is the stuff thats in the info.plist in my Natit kext?

 

shouldnt i be able to just somehow convert that into the necessary string?

 

Munky, No, it's not that simple. Natit works for you, me and many others. It needs code to do that. For your efi string to work it needs your specific PciRoot address and that is coded in hex in the string.

 

I am going to upload 3 files - gfxutil is the conversion program (bi-directional), gfx5500.hex is the hex string from my Boot.plist, and gfx5500.plist is the output of gfxutil if the following command is used:

./gfxutil -s -n gfx5500.hex gfx5500.plist

 

You can view the hex file using vi. Be careful of any text editor because they sometimes break the string into lines and then it won't work. view or change the plist file with xcode plist editor. Then, after changes, run it through gfxutil with the files reversed and copy the new hex into your boot.plist.

 

gfx.zip

 

-- Blade

Link to comment
Share on other sites

yeeeee f*^cking haaa! You rock munky! HARD!

 

I just modified a 7600GS hex string from HERE and boom, she works! No more NVinject for me!!!!

 

Now onto my onboard audio....not so important since Its my studio machine and I already have 56channels of IO - but its needed if i want to quicky listen to iTunes on crappy speakers while a session is open....plus an excuse for me to have some more fun!

 

Maybe next we have a way to have all kext, mkext and boot.plist contained secure in the EFI so the install is pure, unadultered vanilla? OK OK Ill settle down :(

 

I really like your booter munky - the others seem painful and dont work for me - maybe you could get ~pcwiz to include an installer in OSx86Tools for your way???? Or an installer of some kind next?

 

Well done mate....you da man!

Link to comment
Share on other sites

Hi munky,

 

I tried to use update.sh but it just gives me chinese writing at the apple logo and says I need to reboot....i boot my external backup to see what update.log says - it is not there and no mkext has been made in /Volumes/EFI/System/Booter

 

update.sh resides in /Volumes/EFI

 

I have my kexts in /Volumes/EFI/Extensions

 

Any ideas?

 

I will go back to the old way for now....

 

Cheers

Link to comment
Share on other sites

simply because it's a higher version.

 

One of the tricks u can do with this type of Extra extensions approach is to boost the version number of the kext u want loaded so it will be preferred.

 

Thanks munky works fine, kext is not reloaded anymore.

 

kextstat | grep AHCI

39 2 0x355bb000 0x6000 0x5000 com.apple.iokit.IOAHCIFamily (1.0.4) <6 5 4 2>

40 0 0x355d4000 0xa000 0x9000 com.apple.driver.AppleAHCIPort (1.5.1) <39 17 6 5 4 2>

49 0 0x35b14000 0x10000 0xf000 com.apple.iokit.IOAHCIBlockStorage (1.1.9) <48 39 6 5 4 2>

---------

Will try (EFI strings) and reports.

 

I guess i must use EFI strings in /Library/Preferences/SystemConfiguration/com.apple.Boot.plist

and not in /Volumes/EFI/Library/Preferences/SystemConfiguration/com.apple.Boot.plist.

Link to comment
Share on other sites

hmm maybe i made a mistake... i'll check update.sh :)

 

EDIT: compared the update.sh posted here to the one working on my system, they are identical.

 

the script does assume that the EFI partition is mounted as /Volumes/EFI ... are people calling it something different?

Link to comment
Share on other sites

hmm maybe i made a mistake... i'll check update.sh ;)

 

I have used successfully update.sh. For me it worked perfect.

 

I was able to take off the natit and the ionetworkingfamily extensions from my efi, thanks to the new boot.

 

lots of praising to munky for this!!! ;):)

 

Now my system seems to work very well. No Time Machine problems, perfect screen, etc.

 

The only thing that doesn't let me sleep well is that I need to load iousbmassstorageclass.kext every time I login, otherwise it wouldn't load my USB drives. :|:shock: I know I can make it with a simple file in Library/LaunchDaemons, but still it is not what I wanted.

I have tried to put system.kext of the same version of my kernel (modbin 9.4), but it wouldn't work anyway. So these are the FEW kexts I am loading now:

 

AppleACPIPlatform

AppleDecrypt

AppleIntelPIIXATA

ApplePS2Controller

IntelCPUPMDisabler

SMBIOSEnabler

 

I am not pre-loading System.kext, since even with that it would not change anything.

 

Any suggestions for a better USB fix?

Link to comment
Share on other sites

hmm maybe i made a mistake... i'll check update.sh :)

 

EDIT: compared the update.sh posted here to the one working on my system, they are identical.

 

the script does assume that the EFI partition is mounted as /Volumes/EFI ... are people calling it something different?

 

Munky: The update script works fine, but maybe it needs something like

#!/bin/sh

if [ $USER != "root" ]; then
  echo "Error ==> This script must be run as root"
  exit
fi

if [ ! -e "/Volumes/EFI" ]; then
 echo " Error ==> /Volumes/EFI does not exist"
 echo " Error ==> Your EFI partition must be mounted for this script to work"
fi

 

to catch the obvious.

Link to comment
Share on other sites

hmmmm....... I definately had update.sh in /Volumes/EFI

 

right next to 'boot'

 

I couldnt find any 'update.log' to see what was going on, and definately no mkext was created in /Volumes/EFI/System/Booter

 

It would get to the apple logo, afetr a few secs the grey curtain of doom would come down telling me to restart in 5 languages :)

 

Also in /Volumes/EFI is /Volumes/EFI/Extensions which contains my kexts

 

I just cant figure out what I am doing wrong :-{}

 

permissions error on update.sh maybe?????

Link to comment
Share on other sites

 Share

×
×
  • Create New...