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 need to ask a favour...

 

can people please send me reports of patches which are *working* from EFI partition? i know there are lots of problems getting certain things to work, but for a project im working on, i need to get a handle on which patches ARE working.

 

for example, my gfx card is working 100% with Natit on my EFI booter... my Wifi works if I put IONetworkingFamily and IO80211Family on the EFI booter, but only if i bump the versions so they are 'preferred'.

 

thanks

Link to comment
Share on other sites

I need to ask a favour...

 

can people please send me reports of patches which are *working* from EFI partition? i know there are lots of problems getting certain things to work, but for a project im working on, i need to get a handle on which patches ARE working.

 

for example, my gfx card is working 100% with Natit on my EFI booter... my Wifi works if I put IONetworkingFamily and IO80211Family on the EFI booter, but only if i bump the versions so they are 'preferred'.

 

Here are the kexts I have on my EFI boot partition:

 

AppleACPIPlatform.kext

AppleAHCIPort.kext

AppleAPIC.kext

AppleGenericPCATA.kext

AppleIntelIntegratedFramebuffer.kext

AppleSMBIOS.kext

IntelCPUPMDisabler.kext

NVkush.kext

SMBIOSEnabler.kext

dsmos.kext

 

Not sure if all are needed, I think so. Any of them stand out to you as unnecessary? Any obvious things I'm missing?

 

Perfectly functioning 10.5.5 system as far as I can tell except for my stated non-existent QE problem with NVkush.

Link to comment
Share on other sites

AppleAPIC.kext

AppleGenericPCATA.kext

AppleIntelIntegratedFramebuffer.kext

 

these look a bit out of place on such a modern machine...

 

AppleAPIC is i think for supporting older chipsets

AppleGenericPCATA.kext is the generic ATA support - this will run v slowly if used... i doubt its being used by your machine

AppleIntelIntegratedFramebuffer is for GMA950 / GMAX3100 type things.

 

but im NOT an expert on these things... if u want u can give it a try without these, but please dont shout at me if it all breaks horribly :)

Link to comment
Share on other sites

Munky:

 

These are the kext files in my efi boot partition.

 

bash-3.2# ls -l /Volumes/EFI/System/Booter/Extensions*
total 0
drwxr-xr-x  3 root  wheel  102 Sep 28 10:38 AppleACPIPlatform.kext
drwxr-xr-x@ 3 root  wheel  102 Sep 28 10:38 AppleAHCIPort.kext
drwxr-xr-x  3 root  wheel  102 Sep 28 10:38 AppleDecrypt.kext
drwxr-xr-x@ 3 root  wheel  102 Sep 28 10:38 ApplePS2Controller.kext
drwxr-xr-x@ 3 root  wheel  102 Sep 28 10:38 AppleSMBIOS.kext
drwxr-xr-x@ 3 root  wheel  102 Sep 28 10:38 Disabler.kext
drwxr-xr-x  3 root  wheel  102 Sep 28 11:51 IOATAFamily.kext
drwxr-xr-x  3 root  wheel  102 Sep 28 10:38 IONetworkingFamily.kext
drwxr-xr-x@ 3 root  wheel  102 Sep 28 10:38 Natit.kext
drwxr-xr-x@ 5 root  wheel  170 Sep 28 10:38 System.kext

 

If we had the use of efi strings I would not need IONetworkingFamily or Natit.

 

If you see anythihng you think I don't need, let me know and I will test without it.

Link to comment
Share on other sites

I have tried Natit 0.2 and I just tried it again to make sure. It just hangs.

 

last thing on screen is: /usr/sbin/ocspd[83]: starting

Then it just hangs there.

 

Image attached.

 

Any ideas?

 

edit the plist inside natit.kext

 

I bet you need to change the OSBundleRequired to Root. It looks like Natit wasn't even loading

Link to comment
Share on other sites

Just a short update - I had reported MANY problems the first time I tried to use an efi Extensions.mkext. Based on a previous post from Munky, I removed the GenericATA kext and tried again with a different IOATAFamily kext.

 

It worked. And, I don't need the "-f" kernel flage anymore. ;)

 

I am using the Voodoo Alpha13 (9.5.0) kernel, an Extensions.mkext and no Extensions folder.

 

bash-3.2# ls -l   /Volumes/EFI/System/Booter/*
-rw-r--r--  1 root  admin  1795249 Sep 28 19:08 /Volumes/EFI/System/Booter/Extensions.mkext
bash-3.2# uname -a
Darwin Rainbow 9.5.0 Darwin Kernel Version 9.5.0: Thu Sep 25 05:59:23 IST 2008; Voodoo; based on ToH:xnu-1228.7.58/BUILD/obj/RELEASE_I386 i386

 

At this point, the only "adjustment" to the vanilla install partition on my P4 based system is the com.apple.Boot.plist. The entries I made allow the system to boot without any manual intervention - i.e., no typing rd= etc..

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Graphics Mode</key>
	<string>"1280x1024x24"</string>
	<key>Kernel</key>
	<string>bt(0,0)/mach_kernel.voodooa13</string>
	<key>Kernel Flags</key>
	<string>-v boot-uuid=F1CA3099-372A-396E-814A-64D4C4917CD0</string>
	<key>Timeout</key>
	<string>7</string>
</dict>
</plist>

 

As far as I can tell, the system is running better than it ever has. I am so grateful to Munky, 3dman, mercurysquad and many others for all the great work they put into my system.

 

-- Blade

Link to comment
Share on other sites

yay bladerunner, thats cool man :)

 

one thing, you can place the com.apple.Boot.plist on the EFI partition, but it wont be automatically picked up. the only thing you'd need to type would be something along the lines of:

 

config=bt(0,0)/com.apple.Boot.plist

 

i wonder if u can make the com.apple.Boot.plist on the actual install like so:

 

Kernel Flags

bt(0,0)/com.apple.Boot.plist

 

and put the actual params in a plist on the EFI partition.

 

That'd be about as minimal as you can get away with. I've no idea if it works, and tbh its probably not really worth it ;)

 

Note also that Boot.plist changes are only needed on pre-Core machines. All-vanilla setups require zero modifications. ;)

 

edit the plist inside natit.kext

 

I bet you need to change the OSBundleRequired to Root. It looks like Natit wasn't even loading

 

yes, always make sure kexts on the EFI partition have this property set. this applies to boot-132 discs too.

Link to comment
Share on other sites

edit the plist inside natit.kext

 

I bet you need to change the OSBundleRequired to Root. It looks like Natit wasn't even loading

 

YES! Success! Thanks so much for that! QE/CI are now working perfectly.

 

Only weird thing is card now is reporting only 256MB vram in System Profiler when it's really a 320mb card. Do you think it's just what it's reporting and is really using all 320mb? If that's the case I don't care.

 

 

And Munky,

You were right, I got rid of these 3 kexts you recommended and all is well.

AppleAPIC.kext

AppleGenericPCATA.kext

AppleIntelIntegratedFramebuffer.kext

 

 

Again, you guys rock! Now I just need to work on initializing my network card outside of the BIOS so I don't have to wait for Network boot rom in BIOS, it's way too slow booting that way.

Link to comment
Share on other sites

yay bladerunner, thats cool man :)

 

one thing, you can place the com.apple.Boot.plist on the EFI partition, but it wont be automatically picked up. the only thing you'd need to type would be something along the lines of:

 

config=bt(0,0)/com.apple.Boot.plist

 

i wonder if u can make the com.apple.Boot.plist on the actual install like so:

 

<key>Kernel Flags</key>

<string>bt(0,0)/com.apple.Boot.plist</string>

 

and put the actual params in a plist on the EFI partition.

 

That'd be about as minimal as you can get away with. I've no idea if it works, and tbh its probably not really worth it ;)

 

Note also that Boot.plist changes are only needed on pre-Core machines. All-vanilla setups require zero modifications. ;)

yes, always make sure kexts on the EFI partition have this property set. this applies to boot-132 discs too.

 

 

I will give this a try on my external USB drive and report back. I can't do it on the internal drive because I have 2 Leopard partitions - disk0s2 & disk0s3 - on the same drive. I need different boot-uuid values for them. The external drive has only one boot partition.

 

Edit: Well, I tried. No joy. by the time I got it to boot the L/P/S Boot.plist was not much different from the original. you were correct - it's not worth the trouble :)

/edit

Link to comment
Share on other sites

im working on it... problem is i cant seem to build turbo's patch, i seem to have a missing header.

 

i can build dfe's sources with my patch (for EFI strings) no problem. might need to wait until i can speak to turbo, unless i can figure out what the header file needs to be... should just be method prototypes...

 

will keep u posted :)

Link to comment
Share on other sites

im working on it... problem is i cant seem to build turbo's patch, i seem to have a missing header.

 

i can build dfe's sources with my patch (for EFI strings) no problem. might need to wait until i can speak to turbo, unless i can figure out what the header file needs to be... should just be method prototypes...

 

will keep u posted :)

Cheers. Looking forward to it.

Link to comment
Share on other sites

im working on it... problem is i cant seem to build turbo's patch, i seem to have a missing header.

 

i can build dfe's sources with my patch (for EFI strings) no problem. might need to wait until i can speak to turbo, unless i can figure out what the header file needs to be... should just be method prototypes...

 

will keep u posted :blink:

 

I'm in, just let me know when you're ready.

Link to comment
Share on other sites

another change i'd like to make is to get it to display the known bios devices, so no more guesswork on the 90,91,92...9f front :P

 

remains to be seen whether that's beyond me tho :)

 

That would be cool!

Link to comment
Share on other sites

im working on it... problem is i cant seem to build turbo's patch, i seem to have a missing header.

 

i can build dfe's sources with my patch (for EFI strings) no problem. might need to wait until i can speak to turbo, unless i can figure out what the header file needs to be... should just be method prototypes...

 

will keep u posted :)

 

EFI strings would be great, saves using extra kexts :)

Link to comment
Share on other sites

I need to ask a favour...

 

can people please send me reports of patches which are *working* from EFI partition? i know there are lots of problems getting certain things to work, but for a project im working on, i need to get a handle on which patches ARE working.

 

for example, my gfx card is working 100% with Natit on my EFI booter... my Wifi works if I put IONetworkingFamily and IO80211Family on the EFI booter, but only if i bump the versions so they are 'preferred'.

 

thanks

 

@ munky

 

You did a good job and your boot loader works very fine for me.

 

What i did:

 

1) Format a virgin disk as GPT with 3 partitions named TEST, SNOW and SPARE

 

2) With terminal command open, install iDeneb 10.5.4 on TEST.

 

Someone report Chameleon is not booting properly with D975XBX2, just had to flag partition using Chameleon fdisk command to boot TEST.

 

Otherwise everything works fine (system profiler report is right and complete, Serial-ATA report disk as unknown AHCI and disk shows up with orange icons on desktop.)

 

3) With terminal command open, vanilla install of Mac.OSX.10.5.4.dmg on SPARE

 

4) Format the EFI System Partition as HFS+ and copy several kexts from TEST in /Volumes/EFI/System/Booter/Extensions.

 

Natit.kext --> v0.02.

IOStorageFamily.kext --> 1.5.2 dependency of IOAHCIBlockStorage

IONetworkingFamily.kext --> 1.6.0

IOAHCIFamily.kext --> 1.0.4

IOAHCIBlockStorage.kext --> 1.0.9 modded info.plist to get grey icons for disks.

dsmos.kext

AppleIntel8254XEthernet.kext --> 1.1.4a5. old but working with D975XBX2.

IntelCPUPMDisabler.kext

AppleAHCIPort.kext --> 1.5.1 modded info.plist to get ICH7-R AHCI report.

 

kextcache these kexts

 

5) Boot SPARE vanilla 10.5.4 install

 

Got

- QE/CI full support for my nVidia GeForce 7300 GT.

- Networking fully fonctionning

- Serial-ATA report expected disk Intel ICH7-R AHCI

* Disks shows up with orange icons on desktop nothing to do try every combination, Root and Local-Root.

 

* System Profiler report:

 

Hardware Overview:

 

Model Name: Mac

Model Identifier:

Processor Speed: 4 GHz

Number Of Processors: 1

Total Number Of Cores: 4

L2 Cache: 8 MB

Memory: 2 GB

Bus Speed: 1.07 GHz

Boot ROM Version: BX97520J.2813.2008

 

CHAN A DIMM 0/J6H1:

 

Size: 1 GB

Type: DDR2 SDRAM

Speed: 800 MHz

Status: OK

Manufacturer: 0x7F98000000000000

Part Number: 0x393930353331362D3037362E4130304C4600

Serial Number: 0x7823013F

 

System Software Overview:

 

System Version: Mac OS X 10.5.5 (9F33)

Kernel Version: Darwin 9.5.0

Boot Volume: SPARE

Boot Mode: Normal

 

Not so bad for a vanilla install!

 

At this time i made a software update to 10.5.5 and reboot.

 

Get the same results and everything is working.

 

I just notice IOAHCIBlockStorage.kext version was not 1.0.9 but 1.1.1, so to check if version 1.0.9 is working, i delete 1.1.1 version of /S/L/E.

 

After reboot i get disks on desktop with grey icons as expected.

 

6) I also try Disabler.kext, working but i don't understand the necessity of disabling

- AppleEFINVRAM

- AppleEFIRuntime

- ACPI_SMC_PlatformPlugin

 

My question is why IOAHCIBlockStorage.kext version 1.1.1 is reloaded over version 1.0.9?

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.

Link to comment
Share on other sites

Earlier I had noted that I was using the built-in support for Realtek 8168/8111 under Leopard. However, I needed to enable the Onboard Lan Boot Rom to get the nic to see the ethernet cable (initialize). I have since added Psystar's latest version of RealtekR1000.kext (http://www.psystar.com/realtek_r1000_driver.html) which allows me to disable the Lan Boot Rom and thus have much faster boot times!

 

So, you can now add RealtekR1000.kext (psystar) to the list of working kexts with this boot method.

 

Well, after all it didn't really work. I mean, I think the kext is fine, but after a hard/cold boot my ethernet was showing as disconnected. So, it looks like for the time being I need to utilize my mobo's BIOS' Lan Boot Rom. :rolleyes:

Link to comment
Share on other sites

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 :)

 

EDIT: Do *NOT* use an Extensions.mkext in conjunction with efi strings with this build - it seems to cause instant kernel panic. Just use /System/Booter/Extensions directory. This was a user error on tester's part :P

 

EDIT2: Attachment removed - please use v2 zipfile on first post!

Link to comment
Share on other sites

 Share

×
×
  • Create New...