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

Hi, I have followed this guide and I have managed to install osx.. al is nice, but I have a problem ... the kexts from efi partition are not used .. at all... efi string is working, but I have no sound and apple smbiosefi.. is not working also.. any sugestions or any clue ?, as I have say, I have copy the instruction line by line, I am under osx now, but no idea what's happened ! and, after I have read the forum, it seem that I am the only one with this problem !

Link to comment
Share on other sites

Hi, I have followed this guide and I have managed to install osx.. al is nice, but I have a problem ... the kexts from efi partition are not used .. at all... efi string is working, but I have no sound and apple smbiosefi.. is not working also.. any sugestions or any clue ?, as I have say, I have copy the instruction line by line, I am under osx now, but no idea what's happened ! and, after I have read the forum, it seem that I am the only one with this problem !

 

It sounds like your kext are not loading. Did you make sure they have this sequence in the Info.plist - at the very end?

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

Link to comment
Share on other sites

Hi all,

Forgive me for not reading all 27 pages in-depth, but I have a quick question. I understand the concept behind this great Tutorial. I would like to know if the same idea can be re-implemented except using MBR instead of GPT?? For example, create a small hidden HFS partition with extra KEXT's located before Vanilla OS X or Windows and install ISOLINUX.BIN to that partition as a bootstrap to do the same magic it does in this tutorial.....? I need to use Windows as well, and my research has shown its not possible to boot XP OR Vista from a GPT disk (can boot Vista on GPT from an EFI PC tho).

 

If using MBR instead of GPT wouldn't work, is it because the OS X Retail DVD wont allow you to choose a MBR partition to install OS X?

 

Short of always using a CD, any other ideas to keep a disk MBR and get the spirt of this Tutorial working (separate KEXT from vanilla install)?

 

 

Thanks for any guidence,

Link to comment
Share on other sites

I made this installer script back at v3. All you have to do is "diskutil info" to get the disk number for where you want to install, insert that into the script, then run the script from Munky's folder.

 

Cheers!

 

P.S. It's not my fault if you b0rk your computer. Read the script.

 

#!/bin/bash
# Automated installer based on instructions from Munky and the OSx86 crew.

# Find boot disk number found via `diskutil list`
# Define disk number here ( /dev/disk# for boot disk)
# Note: YOU MUST CHECK THIS AT EVERY REBOOT, /dev/disk* get rearranged
# all the time.

disk_num=10

########## Nothing below this line should need changed.

echo "Did you REALLY check that /dev/disk${disk_num} is the right disk? I won't ask or warn you again. (y/n)"
read ans

case $ans in
    Y|y) ;;
[Yy][Ee][ss]) ;;
    N|n) exit ;;
[Nn][Oo]) exit ;;
      *) echo "Invalid command"
esac

if [ `diskutil info /dev/disk${disk_num}s1 | awk '/Partition Type/ {print $3}'` != EFI ]; then
   echo "Error ==> No EFI partition found for specified disk."
   echo "  Use 'diskutil list' to find the correct disk."
   exit
else
   echo Found EFI on /dev/disk${disk_num}s1
fi

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

echo Erasing /dev/disk${disk_num}s1
diskutil eraseVolume "HFS+" "EFI" /dev/disk${disk_num}s1
if [ "$?" -ne 0 ]; then echo "diskutil eraseVolume command failed"; exit 1; fi

echo "Puting the stage 0 bootloader onto the target disk."
if [[ -e boot0 ]]; then
   ./fdisk -f boot0 -u -y /dev/rdisk${disk_num}
   if [ "$?" -ne 0 ]; then echo "./fdisk -f boot0 command failed"; exit 1; fi
else
  echo "Error, couldn't find boot0 ==> This script must be run from inside Munky's efi_boot folder."
  exit 1
fi

Echo "Puting the stage 1 bootloader onto the EFI partition."
if [[ -e boot1h ]]; then
   dd if=boot1h of=/dev/rdisk${disk_num}s1
   if [ "$?" -ne 0 ]; then echo "dd if=boot1h command failed"; exit 1; fi
else
   echo "Error, couldn't find boot1h ==> This script must be run from inside Munky's efi_boot folder."
   exit 1
fi

if [[ -d /Volumes/EFI ]]; then
   echo "Found EFI folder..."
else
   mkdir /Volumes/EFI
fi

mount_hfs /dev/disk${disk_num}s1 /Volumes/EFI
if [ "$?" -ne 0 ]; then echo "mount_hfs command failed"; exit 1; fi

# This helps some of the fsevent UUID weirdness of the bootloading from this partition
mkdir /Volumes/EFI/.fseventsd
touch /Volumes/EFI/.fseventsd/no_log

cp boot-turbo-munky.bin /Volumes/EFI/boot

chmod +x update.sh

cp update.sh /Volumes/EFI/

#automate this?
#1) ./fdisk -e /dev/rdiskX (NB: Ignore any fdisk: could not open MBR file 
# /usr/standalone/i386/boot0: No such file or directory error)
#2) f 1
#3) w
#4) q

mkdir -p /Volumes/EFI/System/Booter

mkdir /Volumes/EFI/Extensions

echo "Installation complete! Resume at Munky's guide at Phase 4, Step 3."
echo "Cheers, inc."

Link to comment
Share on other sites

is anybody able to run VMware from an EFI Vanilla installation with different kernel?

 

In my case, it instantly gets a kernel panic, as soon as I start a Virtual Machine. I think it depends on the fact it looks for the kernel in the root, and of course the one I have there is the Vanilla, which would cause my PC to panic.

is there a way to solve this issue without eliminating the vanilla kernel?

Link to comment
Share on other sites

is anybody able to run VMware from an EFI Vanilla installation with different kernel?

 

In my case, it instantly gets a kernel panic, as soon as I start a Virtual Machine. I think it depends on the fact it looks for the kernel in the root, and of course the one I have there is the Vanilla, which would cause my PC to panic.

is there a way to solve this issue without eliminating the vanilla kernel?

 

I had a similar problem with VMware fusion 2.0 loading the IOUSBFamiliy.kext. I have the original modified by one line in order to load the EHCHSleepEnabler by Superhai (in order to get sleep) Both of them load from my EFI partition. When VMware gets to the point where it tries to upload the its own IOdriver, it fails. It gives me an error that the requested module and the current module do not match (UUIDs differ). Something like that. I guess it is looking at the unmodified vanilla IOUSBFamily.kext from the Vanilla SYstem and not liking what it sees. Or it doesn't like that the driver loads out of another disk.

 

I've searched around and the only other people that have the UUIDs differ problem are people that have two Partitions with OSX system in it (maybe for backup) and loads one instead of the other and the have different versions of the kext in each. I have to investigate more.

 

Hey Munky, any progress with the multiboot from the same drive different partition? I so need to dual boot on my laptop.

Link to comment
Share on other sites

I had a similar problem with VMware fusion 2.0 loading the IOUSBFamiliy.kext. I have the original modified by one line in order to load the EHCHSleepEnabler by Superhai (in order to get sleep) Both of them load from my EFI partition. When VMware gets to the point where it tries to upload the its own IOdriver, it fails. It gives me an error that the requested module and the current module do not match (UUIDs differ). Something like that. I guess it is looking at the unmodified vanilla IOUSBFamily.kext from the Vanilla SYstem and not liking what it sees. Or it doesn't like that the driver loads out of another disk.

 

I've searched around and the only other people that have the UUIDs differ problem are people that have two Partitions with OSX system in it (maybe for backup) and loads one instead of the other and the have different versions of the kext in each. I have to investigate more.

 

I am not using a modified IOUSBFamily.kext. Mine is the Vanilla one. Also, I don't have 2 OSX partitions on the same HDD. So it must be for other reasons... let's look further!

 

 

EDIT: look here. Maybe we could make a try to change com.apple.boot.plist on the vanilla partition. Now I don't have VMWare installed. If someone does, please try and let us know!

Link to comment
Share on other sites

I agree, but its either VMware, or the dual booting thing, asi of right now I am 0 for 0. No dice.

 

:D

 

p.s. Paralles is more teh suck

 

Well, I'm using Parallels, but the new version of it would not work on my P4. I have downloaded Parallels 4 Beta2 and it tells me I cannot run it on my mac. On my macbook pro, Parallels runs so well. On my PC, since the CPU is much weaker, I would rather run VMWare, because it is a bit faster.

Link to comment
Share on other sites

Sorry if the question was already put in this topic, but I was too lazy to read the whole topic (lol :().

 

Can this work if you installed leopard from within another leopard installation? Wait, let me explain it better:

 

I have 3 HDD:

- Vista (128 GB)

- A leopard installation (Kalyway), 500 GB

- A blank HDD (partitioned as guid and called "Test Mac"), 500 GB

 

I have the Retail DVD only as image and have installed a retail leopard on Test Mac using these commandos in Terminal:

cd /Volumes/Mac\ OS\ X\ Install\ DVD/System/Installation/Packages

open OSInstall.mpkg

 

AND after that installation I changed NOTHING of my Test Mac drive (I didn't even open it in the finder, lol ;)).

Can I use this method (with EFI) to let this retail installation work? I already know which kexts to install and I already checked that my Test Mac drive has an EFI partition.

 

So, to be short: Can you use this guide if you installed a retail leopard WITHOUT boot-132?

Link to comment
Share on other sites

Sorry if the question was already put in this topic, but I was too lazy to read the whole topic (lol :)).

 

Can this work if you installed leopard from within another leopard installation? Wait, let me explain it better:

 

I have 3 HDD:

- Vista (128 GB)

- A leopard installation (Kalyway), 500 GB

- A blank HDD (partitioned as guid and called "Test Mac"), 500 GB

 

I have the Retail DVD only as image and have installed a retail leopard on Test Mac using these commandos in Terminal:

cd /Volumes/Mac\ OS\ X\ Install\ DVD/System/Installation/Packages

open OSInstall.mpkg

 

AND after that installation I changed NOTHING of my Test Mac drive (I didn't even open it in the finder, lol :wacko:).

Can I use this method (with EFI) to let this retail installation work? I already know which kexts to install and I already checked that my Test Mac drive has an EFI partition.

 

So, to be short: Can you use this guide if you installed a retail leopard WITHOUT boot-132?

 

yes, if you put the right files and kexts in your EFI partition. good luck! ;)

Link to comment
Share on other sites

K thanks :) First backing up the drive and I will post as soon as it's done :D.

 

Also, 2 other questions.

 

1) Can you load other things than kernels and kexts from your EFI drive?

 

I need to edit Networkinterfaces.plist and the OpenGL.framework folder to let my network and graphic card fully work. Can I load this from an EFI partition or do I need to edit this in the system files of macintosh (but wouldn't that break the system with an update like 10.5.6 or higher?).

 

2) Can this work if you partitioned your drive in 2 partitions: One for Mac OS X and one for Time Machine Backups?

So:

disk0s1= EFI

disk0s2= Test Mac

disk0s3= Time Machine Backup

Link to comment
Share on other sites

1) no support as yet for loading those things from there, not sure how it would be done.

 

2) yes, but then you're backing up to the same disk. its fine to do, and gives you the 'rollback' ability, but realise your data is still susceptible to the hard disk dying. in short, its not backup.

Link to comment
Share on other sites

Munky,

 

I made a kext cache the other day which didn't work as hoped. I had to boot one of my other partitions to make repairs. It occurred to me then that it might be very useful if you could provide a boot parameter to select the previous cache file. e.g., cache=Extensions.mkext.previous

 

Is something like that doable without unreasonable effort?

Link to comment
Share on other sites

1) no support as yet for loading those things from there, not sure how it would be done.

 

2) yes, but then you're backing up to the same disk. its fine to do, and gives you the 'rollback' ability, but realise your data is still susceptible to the hard disk dying. in short, its not backup.

 

For that second one, it's actually the backup of my Kalyway hackintosh, not the retail installation. I'm using kalyway for a little while now and just wanted to have backups. Anyway, i'm now making an image of those backups to my external drive. But thanks for answering my questions :).

Link to comment
Share on other sites

Ok, this is what I've done.

 

1.- Installed Leopard retail

2.- Installed Windows Vista on 2nd partition

3.- Windows booted OK

4.- Leopard booted OK using CD.

5.- Followed instructions on 1st post.

6.- Leopard booted OK without CD.

7.- Windows didnt show up as an option

8.- Used Windows CD to restore boot area

9.- Booted Windows.

10.- Installed EasyBCD and created a MAC boot.

11.- Windows boots OK but MAC gives a "Chain booting error"

12.- Booted leaopard using Boot-132 disk, mounted /Volumes/EFI and all my information is still there.

 

Anybody have any idea how to avoid this "Chain booting error" ??

 

Thanks

Link to comment
Share on other sites

Allright, this is weird. Followed all steps on first page and booted with -f -v and the boot-uuid= and i get this error:

"Package 0 didn't get an HPET".

 

The error repeats itself every 2 seconds.. :s.

 

I used this kexts:

ATIRNDRV.kext

IONetworkingFamily.kext

RealtekR1000.kext

ALCinject.kext

AppleHDA.kext

ATIRadeonX1000.kext

ATIRadeonX1000GA.plugin

natit.kext

ATIRadeonX1000GLDriver.bundle

ATIRadeonX1000VADriver.bundle

 

And i also used a modified com.apple.boot.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Kernel</key>
<string>mach_kernel</string>
<key>Kernel Flags</key>
<string>-f boot-uuid=9CE7EA21-CE4B-3E5B-939B-ACD629C4D411</string>
</dict>
</plist>

Link to comment
Share on other sites

Allright, this is weird. Followed all steps on first page and booted with -f -v and the boot-uuid= and i get this error:

"Package 0 didn't get an HPET".

 

The error repeats itself every 2 seconds.. :s.

 

I used this kexts:

ATIRNDRV.kext

IONetworkingFamily.kext

RealtekR1000.kext

ALCinject.kext

AppleHDA.kext

ATIRadeonX1000.kext

ATIRadeonX1000GA.plugin

natit.kext

ATIRadeonX1000GLDriver.bundle

ATIRadeonX1000VADriver.bundle

 

And i also used a modified com.apple.boot.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Kernel</key>
<string>mach_kernel</string>
<key>Kernel Flags</key>
<string>-f boot-uuid=9CE7EA21-CE4B-3E5B-939B-ACD629C4D411</string>
</dict>
</plist>

 

When you boot the system, look at the very first messages. Check to see that the kext are actually loading. It sounds like they are not. I have had this condition in the past. But only when the loader couldn't unpack the kext cache and failed to load the kext.

Link to comment
Share on other sites

MMM... I also see now that when i do the command ./update.sh it says that the file extensions.mkext doesn't exist :s.

 

Can I manually add this :s?

It should create one.

 

But not knowing what type of system/cpu/motherboard you have, it's hard to tell, although from your list of kexts, it appears you are missing a couple to allow booting on an x86 machine, like:

 

dsmos.kext

IntelCPUPMDisabler.kext

 

I think IntelCPUPMDisabler will get rid of the HPET error, and without dsmos.kext you won't boot either. Or do you have these on your installed volume?

Link to comment
Share on other sites

 Share

×
×
  • Create New...