BladeRunner Posted September 29, 2008 Share Posted September 29, 2008 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 More sharing options...
munky Posted September 29, 2008 Author Share Posted September 29, 2008 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 More sharing options...
samhannan Posted September 30, 2008 Share Posted September 30, 2008 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 More sharing options...
munky Posted September 30, 2008 Author Share Posted September 30, 2008 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 More sharing options...
samhannan Posted September 30, 2008 Share Posted September 30, 2008 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 More sharing options...
psychonaut Posted September 30, 2008 Share Posted September 30, 2008 who wants to be guinea pig? Works perfect. Link to comment Share on other sites More sharing options...
Ziggar Posted September 30, 2008 Share Posted September 30, 2008 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 More sharing options...
samhannan Posted September 30, 2008 Share Posted September 30, 2008 So for future installs can I just put the new 'boot' in with my usual efi_boot directory, then instead of cp boot2-turbo.bin /Volumes/EFI/boot i can now do cp boot /Volumes/EFI will that work? - I have a few machines to get leopardised this way now Link to comment Share on other sites More sharing options...
munky Posted September 30, 2008 Author Share Posted September 30, 2008 yes thats right. i'll go ahead and update the zip file on the first post now that we have some confirmed working examples Link to comment Share on other sites More sharing options...
BladeRunner Posted September 30, 2008 Share Posted September 30, 2008 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 More sharing options...
munky Posted September 30, 2008 Author Share Posted September 30, 2008 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? Link to comment Share on other sites More sharing options...
Big Kahuna Posted September 30, 2008 Share Posted September 30, 2008 I'm up and running with an EFI string for video. Grats Munky.. lots of work went into this.. you and team chameleon are the best. Link to comment Share on other sites More sharing options...
munky Posted September 30, 2008 Author Share Posted September 30, 2008 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 Link to comment Share on other sites More sharing options...
chiliMac Posted September 30, 2008 Share Posted September 30, 2008 yes thats right. i'll go ahead and update the zip file on the first post now that we have some confirmed working examples 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 More sharing options...
BladeRunner Posted September 30, 2008 Share Posted September 30, 2008 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 More sharing options...
Big Kahuna Posted September 30, 2008 Share Posted September 30, 2008 snag EFI Studio or the OSX86 tools, those will help determine the EFI strings. Link to comment Share on other sites More sharing options...
samhannan Posted September 30, 2008 Share Posted September 30, 2008 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 More sharing options...
samhannan Posted September 30, 2008 Share Posted September 30, 2008 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 More sharing options...
AlainTox714 Posted September 30, 2008 Share Posted September 30, 2008 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 More sharing options...
munky Posted September 30, 2008 Author Share Posted September 30, 2008 yes, sadly EFI strings must be on the actual install. Link to comment Share on other sites More sharing options...
samhannan Posted September 30, 2008 Share Posted September 30, 2008 I just tried again with update.sh but no cheese! I am happy with the way it is for now - nothing wrong with a working system! Link to comment Share on other sites More sharing options...
munky Posted September 30, 2008 Author Share Posted September 30, 2008 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 More sharing options...
B612 Posted September 30, 2008 Share Posted September 30, 2008 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. 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 More sharing options...
BladeRunner Posted September 30, 2008 Share Posted September 30, 2008 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 More sharing options...
samhannan Posted September 30, 2008 Share Posted September 30, 2008 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 More sharing options...
Recommended Posts