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

In addition to the EFI Boot Partition i made a USB Flashdrive with Grub4Dos to Boot into my Windows installation. Does anyone know how to tell Grub to boot from the EFI Partition?

I'd like to always boot from the USB Flash Drive and make a Grub entry in the menu.lst where i can choose to boot either Windows or from the EFI Partition.

 

EDIT: i found it out myself :rolleyes:

 

title OS X

chainloader (hd1)+1

rootnoverify (hd1,0)

savedefault --wait=2

 

Works fine.

Link to comment
Share on other sites

Hi,

 

I've started new topic in multi-boot forum but there are no replies. Since my problem is tightly connected to this guide I repost it here:

 

Here is my osx86 experience: I have single hard drive and I want to have MacOsX and Vista on it. I formatted the disk using GUID partition table with this scheme:

1: EFI partition (created automatically)

2: FAT32 (windows partition)

3: HFS+ (macosx partition)

4: FAT32 (misc data)

 

Then I installed Vista 64-bit (as it supports GUID partitions) onto 2nd partition and OsX (from retail dvd) to 3rd partition. In order to boot retail OsX I chose munkey's excellent guide which allows to use this 1st EFI partition (which is otherwise unused) to store the loader. But now I have a big problem: I can't use neither bootloader (vista's and osx's) to dual-boot both OSes. Vista's bootloader can't boot darwin bootloader from the 1st partition (even using boot0 file) and darwin bootloader don't recognize vista installation (as I know it isn't supposed to do it). Though I can boot both OSes using "f 1" or "f 2" in fdisk but that isn't solution.

 

Now I have to ruin my setup and install everything from the scratch because I really need to use both systems very frequently. So here I got some questions concerning MBR and GPT:

 

1. Is there still any way to dual-boot Vista and OsX on single GPT-partitioned drive (without using cdrom/usb bootloaders)? May be using some other bootloader like GRUB? GPT is technologically superior and I'd like to stick with it...

 

2. As I understand the only advantage of GPT over MBR is ability to resize partitions without data loss. But PartitionMagic/Acronis/Gparted programs can do this also.. So wha't the point?

 

3. rEFIt's "Myths and Facts" section mentions that if I choose "MBR" on partitioning (Disk Utility on retail DVD) I won't even be able to install OsX there. Is that true?

 

What is the best solution for my case? Any help appreciated.

Link to comment
Share on other sites

Hi,

 

I've started new topic in multi-boot forum but there are no replies. Since my problem is tightly connected to this guide I repost it here:

 

Here is my osx86 experience: I have single hard drive and I want to have MacOsX and Vista on it. I formatted the disk using GUID partition table with this scheme:

1: EFI partition (created automatically)

2: FAT32 (windows partition)

3: HFS+ (macosx partition)

4: FAT32 (misc data)

 

Then I installed Vista 64-bit (as it supports GUID partitions) onto 2nd partition and OsX (from retail dvd) to 3rd partition. In order to boot retail OsX I chose munkey's excellent guide which allows to use this 1st EFI partition (which is otherwise unused) to store the loader. But now I have a big problem: I can't use neither bootloader (vista's and osx's) to dual-boot both OSes. Vista's bootloader can't boot darwin bootloader from the 1st partition (even using boot0 file) and darwin bootloader don't recognize vista installation (as I know it isn't supposed to do it). Though I can boot both OSes using "f 1" or "f 2" in fdisk but that isn't solution.

 

Now I have to ruin my setup and install everything from the scratch because I really need to use both systems very frequently. So here I got some questions concerning MBR and GPT:

 

1. Is there still any way to dual-boot Vista and OsX on single GPT-partitioned drive (without using cdrom/usb bootloaders)? May be using some other bootloader like GRUB? GPT is technologically superior and I'd like to stick with it...

 

2. As I understand the only advantage of GPT over MBR is ability to resize partitions without data loss. But PartitionMagic/Acronis/Gparted programs can do this also.. So wha't the point?

 

3. rEFIt's "Myths and Facts" section mentions that if I choose "MBR" on partitioning (Disk Utility on retail DVD) I won't even be able to install OsX there. Is that true?

 

What is the best solution for my case? Any help appreciated.

 

re: item #3 - the short answer is yes, OS X won't install to an MBR partitioned drive using the retail dvd. The longer, more complicated, answer is that it can be done if you modify an installer mpkg on the retail dvd and burn the updated iso.

 

Some people are solving your basic problem by creating a bootable usb stick and using it as a pre-boot for Vista. Do some searching for the correct thread in this forum.

Link to comment
Share on other sites

BladeRunner

Thank you, I've found this modified mpkg! So, as I understand, with MBR disk I'll be able to use normal chameleon+chain0 setup in order to dual-boot both OSes from vista's bootloader?

 

That's my understanding. Although, I have never done it. All my disks are GUID and I run WinXP under Parallels.

Link to comment
Share on other sites

Heres my setup, using this guide, if someone is interested. I´m using Ubuntus GRUB as the main bootloader, but any GRUB would do, for example from a minimum Linux installation. Note that I´m using MBR partition scheme, not GPT.

 

Four partitions, MBR partition scheme:

 

1: Windows NTFS

2: 250 MB HFS+(Used as "EFI" partitition)

3: Leopard HFS+

4: Ubuntu ext3

 

Well. Windows was installed first. Then Ubuntu, which installed grub to the MBR, and automatically added Windows to the boot menu.

 

Then I installed retail Leopard from an ext. USBHDD, using a USB boot stick w/chameleon. Any retail method will do here. Booted into Leopard, I followed this guide for setting up the EFI partition, _omitting_ the installation of the boot0 MBR, i.e. "./fdisk -f boot0 -u -y /dev/rdiskX"

 

Added this to /boot/grub/menu.lst(not the comments):

 

title			   Mac OS X Leopard
root			   (hd0,1)				 #EFI-boot partition, number two in the list above.
makeactive								#This had to be the active partition, or the chainloader would fail.
chainloader	+1

 

This would work, except I wanted to boot straight to OS X after I selected it from GRUB. As it was, I had to select the Leopard partition from the Darwin boot loader, as it defaults to the active partition, which in this case was the EFI partition.

 

So, after some trial and error, this is the custom com.apple.Boot.plist I created and placed in the root of the "EFI" partition:

 

<key>Kernel</key>
<string>hd(0,3)/mach_kernel</string>
<key>Kernel Flags</key>
<string> boot-uuid=DE7A5F7D-4969-3C28-8E2F-C46ADD93549A</string>
<key>Quiet Boot</key>
<string>Yes</string>

 

Here, hd(0,3) is the Leopard partition, containing the install. The boot-uuid option has to match the UUID of the actual Leopard install; This can be found in Disk Utility by looking at the info window of the Leopard partition.

 

(I also added an EFI string to allow my GMA950 to work w/o natit.kext. Worked flawlessly.)

 

Hope this is of some help to people struggling with a streamlined boot!

I also imagine this can be done with any bootloader capable of chainloading and setting the active partition. I might try w/SYSLINUX, I just have to investigate its capabilities some more.

Link to comment
Share on other sites

THANK YOU munky for the good post, i have tried to update 10.5.5 way too much times from a certain post and pre update patch intended for newbies and all and the thread starter only intends on insulting people there!!, anywho this looks very promising and i dont have to worry about updates no more too ;) thank you very much.. much appreciated

Link to comment
Share on other sites

EP35-DS3R ISO:

 

Extensions.mkext contents:

- AppleACPIPS2Nub

- AppleAHCIPort

- AppleDecrypt

- ApplePS2Controller

- Disabler

- HDAEnabler

- IOAHCIFamily

- IOATAFamily

- IONetworkingFamily

- JMicronATA

- OpenHaltRestart

- LegacyHDAController

- LegacyHDAPlatformDriver

- Natit

- RealtekR1000

- SMBIOSEnabler

 

Working: NV Graphics - Sound - Time Machine - PS2 devices - Sata/IDE/AHCI - Sleep - Restart/Shutdown with Vanilla kernel - Bonjour

Not working: ---

 

EP35-DS3R ISO's Menu:

p1010489pi8.th.jpgthpix.gif

 

http://www.mediafire.com/download.php?0gtttex5czn

 

 

Hi all,

I'm using this iso image and following munky's guide to install retail Leoopard.

during the procedure we should copy kext files from the iso(CD) to the EFI partition: how can I extract kext files from the mkext file in this iso?

 

thanks in advance

 

UPDATE:

I've figured it out: Mkextunpack

Link to comment
Share on other sites

Use my little app - mkextMaker.app.

 

thanks cVaD, I've already solved with mkextunpack.

 

 

However now I get a "waiting for root..." during the boot without the 132CD.

It seems that it freezes as soon as it find an USB device: I've a bluetooth dongle and during the boot with -v I can see it says something about "usbbluetoothsomething" then "still waiting for root..."

 

I've unplugged the bluetooth dongle but now the boot stops when it find the Apple Keyboard

 

Maybe I've missed some kext???

There aren't usb related kext in the boot 132 cd image (see my previous post)

 

advice?

thanks in advance

Link to comment
Share on other sites

Hey,

 

Just a quick thanks, i've just got my system all setup using this method, works awesome.

 

One little thing, not sure if it's possible, or if there's a reason as to why it's not done.

 

But is it possible to have a timeout on the boot: prompt? ie. so it'll load OS X in say 5 seconds if you dont tap the keyboard or somthing like that?

 

Just so it doesn't require user interaction that's all...

 

Cheers,

 

SiriX

Link to comment
Share on other sites

thanks cVaD, I've already solved with mkextunpack.

However now I get a "waiting for root..." during the boot without the 132CD.

It seems that it freezes as soon as it find an USB device: I've a bluetooth dongle and during the boot with -v I can see it says something about "usbbluetoothsomething" then "still waiting for root..."

 

I've unplugged the bluetooth dongle but now the boot stops when it find the Apple Keyboard

 

Maybe I've missed some kext???

There aren't usb related kext in the boot 132 cd image (see my previous post)

 

advice?

thanks in advance

 

Update: I've tried adding IOUSBFamily.kext from my current Leopartd (other HD) to the EFI partition, but it doesn't solved the issue.

 

these are the error I get:

 

com.apple.driver.AppleHIDKeyboard has no explicit dependency
com.apple.iokit.IOBluetoothFamily has immediate dependency on both com.apple.kernel and com.apple.kpi component use only one style

E:[AppleUSBBluetoothHCIController][FindInterfaces]

still waiting for root.....

 

if I unplug the bluetooth dongle obviously I get only the "keyboard thing"

Link to comment
Share on other sites

Hey,

 

Just a quick thanks, i've just got my system all setup using this method, works awesome.

 

One little thing, not sure if it's possible, or if there's a reason as to why it's not done.

 

But is it possible to have a timeout on the boot: prompt? ie. so it'll load OS X in say 5 seconds if you dont tap the keyboard or somthing like that?

 

Just so it doesn't require user interaction that's all...

 

Cheers,

 

SiriX

I asked the same question and have had no response....

Link to comment
Share on other sites

I asked the same question and have had no response....

 

The easiest way is to place a modified com.apple.Boot.plist file in /Volumes/EFI.

 

You modify the Boot.plist to contain the TimeOut you want, the kernel you are booting and the boot-uuid of the partition you are booting. Use my Boot.plist an an example.

 

<?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.voodoo-b1</string>
	<key>Kernel Flags</key>
	<string>-v boot-uuid=0802587B-4CBE-3E24-9A92-09AD0D296CE2</string>
	<key>Timeout</key>
	<string>7</string>
	<key>device-properties</key>

 

Hope this helps.

Link to comment
Share on other sites

Update: I've tried adding IOUSBFamily.kext from my current Leopartd (other HD) to the EFI partition, but it doesn't solved the issue.

 

these are the error I get:

 

com.apple.driver.AppleHIDKeyboard has no explicit dependency
com.apple.iokit.IOBluetoothFamily has immediate dependency on both com.apple.kernel and com.apple.kpi component use only one style

E:[AppleUSBBluetoothHCIController][FindInterfaces]

still waiting for root.....

 

if I unplug the bluetooth dongle obviously I get only the "keyboard thing"

 

I'm continuing to add kexts to the EFI partition but the problem is still there :P

 

I hope someone can give me a hint.

Link to comment
Share on other sites

I'm continuing to add kexts to the EFI partition but the problem is still there :D

 

I hope someone can give me a hint.

 

I looked back for several of your posts and didn't find what I was looking for. So, if you already provided this data, I apologize for asking again.

 

How are you identifing the partition you are booting? Do you have a com.apple.Boot.plist file in the root of your /Volumes/EFI partition? If so, does it contain the boot-uuid kernel flag?

Link to comment
Share on other sites

I looked back for several of your posts and didn't find what I was looking for. So, if you already provided this data, I apologize for asking again.

 

How are you identifing the partition you are booting? Do you have a com.apple.Boot.plist file in the root of your /Volumes/EFI partition? If so, does it contain the boot-uuid kernel flag?

 

Hi bladerunner.

I've the com.boot.plist file in /Volumes/EFI. I've copied the one that I'm using in my current installation (on another disk), but it's only for the grafik card (EFI strings).

 

I'm using Vanilla kernel, so I didn't think I should use the boot-uuid kernel flag, as written in the guide.

Link to comment
Share on other sites

Hi bladerunner.

I've the com.boot.plist file in /Volumes/EFI. I've copied the one that I'm using in my current installation (on another disk), but it's only for the grafik card (EFI strings).

 

I'm using Vanilla kernel, so I didn't think I should use the boot-uuid kernel flag, as written in the guide.

 

Actually, the kernel you use and the boot-uuid are two different things.

 

<?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</string>
	<key>Kernel Flags</key>
	<string>-v boot-uuid=0802587B-4CBE-3E24-9A92-09AD0D296CE2</string>
	<key>Timeout</key>
	<string>7</string>
	<key>device-properties</key>

 

In the example above, the kernel string points to the kernel to use. However, the "Kernel Flags" string points to the specific partition to boot from. Even if you use the vanilla kernel, you still need to identify the partition to boot.

 

Give it a try. What do you have to loose? I hope it helps.

Link to comment
Share on other sites

hey, just wanted to clarify something about 10.5.6, Chameleon, DSDT and the future of EFI partition booting...

 

basically, the next Chameleon release will replace this booter, and will add a LOT more functionality and bugfixes. im hoping it comes out before 10.5.6 does, because 10.5.6 is a bit of a doozy, insofar as it basically requires a patched DSDT. this fix is already in chameleon.

 

the EFI partition booter here doesnt yet have the patch. if Chameleon comes out before 10.5.6, no problem, everyone should just migrate to it. if, however, 10.5.6 looks like its coming before the team get the new build out there, then i'll add the DSDT patch to this booter and release v6 which, combined with a patched and compiled DSDT file (see: http://forum.insanelymac.com/index.php?showtopic=133683) should boot 10.5.6 without problems.

Link to comment
Share on other sites

hey, just wanted to clarify something about 10.5.6, Chameleon, DSDT and the future of EFI partition booting...

 

basically, the next Chameleon release will replace this booter, and will add a LOT more functionality and bugfixes. im hoping it comes out before 10.5.6 does, because 10.5.6 is a bit of a doozy, insofar as it basically requires a patched DSDT. this fix is already in chameleon.

 

the EFI partition booter here doesnt yet have the patch. if Chameleon comes out before 10.5.6, no problem, everyone should just migrate to it. if, however, 10.5.6 looks like its coming before the team get the new build out there, then i'll add the DSDT patch to this booter and release v6 which, combined with a patched and compiled DSDT file (see: http://forum.insanelymac.com/index.php?showtopic=133683) should boot 10.5.6 without problems.

 

Munky, does the DSDT complement EFI strings, replace them, or is there no direct relationship?

 

If the DSDT replaces the EFI strings, is there any way planned to migrate the EFI string values to DSDT format?

 

Inquiring minds want to know :P

Link to comment
Share on other sites

Actually, the kernel you use and the boot-uuid are two different things.

 

<?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</string>
	<key>Kernel Flags</key>
	<string>-v boot-uuid=0802587B-4CBE-3E24-9A92-09AD0D296CE2</string>
	<key>Timeout</key>
	<string>7</string>
	<key>device-properties</key>

 

In the example above, the kernel string points to the kernel to use. However, the "Kernel Flags" string points to the specific partition to boot from. Even if you use the vanilla kernel, you still need to identify the partition to boot.

 

Give it a try. What do you have to loose? I hope it helps.

 

Thanks for the help.

I've tried adding the kernel flag for uuid, but i still get "still waiting for root device" after applehdikeyboard etc...

 

I think I'll wait for the new chameleon release.

thanks anyway.

Link to comment
Share on other sites

 Share

×
×
  • Create New...