Jump to content

GUID, dual boot from MBR XP Disk to GUID Mac OS X


32 posts in this topic

Recommended Posts

This is the scenario

 

Disk 1 has XP (MBR scheme)

Disk 2 has Mac OS X (GUID scheme)

maybe another disks (like me :P )

 

1- reduce XP partition just enough to allow a 50 to 100 MB HFS partition

 

2- make a HFS partition (you can make a Fat32 and then with Disk Utility erase to a HFS)

 

3- use any method to install a boot loader and make this partition the active one, OSX86 Tools is an easy way to do it (you can install any of them, I choose chameleon)

 

4- copy your actual kernel to that partition (i name it boot)

 

5- make this folders System/Library and Library/Preferences/SystemConfiguration (you can change ownership to root:wheel if you want)

 

6- copy your /System/Library/Extensions.mkext to the new HFS partition (same path)

 

7- copy your /Library/Preferences/SystemConfiguration/com.apple.Boot.plist to the new HFS partition (same path)

 

8- download hfsdebug from http://www.osxbook.com/software/hfsdebug/ and extract it

 

9- see what is your diskXsY with any method ("diskutil -list" on Terminal do the work).

 

A- extract your Disk UUID with this command on Terminal "./hfsdebug -d /dev/diskXsY -v | grep UUID" (run it from where you extract it).

 

B- copy the result to the new com.apple.Boot.plist below Kernel Flags key with this prefix "boot-uuid=".

 

EXAMPLES:

 

# diskutil list
/dev/disk0
  #:					   TYPE NAME					SIZE	   IDENTIFIER
  0:	 FDisk_partition_scheme						*76.3 Gi	disk0
  1:			 Windows_FAT_32 DISKD				   76.3 Gi	disk0s1
/dev/disk1
  #:					   TYPE NAME					SIZE	   IDENTIFIER
  0:	 FDisk_partition_scheme						*76.3 Gi	disk1
  1:			   Windows_NTFS NTFS				   76.3 Gi	disk1s1
/dev/disk2
  #:					   TYPE NAME					SIZE	   IDENTIFIER
  0:	  GUID_partition_scheme						*149.0 Gi   disk2
  1:						EFI						 200.0 Mi   disk2s1
  2:				  Apple_HFS WD					  148.7 Gi   disk2s2
/dev/disk3
  #:					   TYPE NAME					SIZE	   IDENTIFIER
  0:	 FDisk_partition_scheme						*149.0 Gi   disk3
  1:			   Windows_NTFS DiskC				  148.9 Gi   disk3s1
  2:				  Apple_HFS boot					102.0 Mi   disk3s2

 

# ./hfsdebug -d /dev/rdisk2s2 -v | grep UUID
   # File System Boot UUID
			  UUID = F3B54462-4BED-30F6-971D-BF37173E795E

 

/Volumes/boot/Library/Preferences/SystemConfiguration/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>boot-uuid=F3B54462-4BED-30F6-971D-BF37173E795E</string>
 <key>Boot Graphics</key>
 <string>Yes</string>
 <key>Timeout</key>
 <string>5</string>
 <key>device-properties</key>
 <string>0d040000010000000A-VERY_LONG-GFX-STRING-HERE</string>
</dict>
</plist>

 

view of the contents of the new HFS partition (boot).

boot.png

 

When you boot you will see the two Partitions of the XP disk,

if you select XP partition it will boot onto XP

if you don't make a selection (leave the timeout counter) or select the Mac partition it will boot form the UUID specified disk

 

Things to take care, any moment you change your extensions or kernel you need to copy again the Extension.mkext file or the kernel whichever is the case.

 

Other option is to make the XP partition active, use the chain0 method in the boot.ini but when you select the mac partition you need to select the mac partition from the Darwin bootloader menu again (since the XP partition is the active one Darwin will select as boot OS and if you don't select other you will end in the XP bootloader again, that is Why I prefer the other option Darwin as 1st boot an just one selection).

 

This method is similar to RAID setups.

 

I don't know if other SystemConfiguration Files are needed, you can add them since they are not really big ones.

Link to comment
Share on other sites

THANKS - last week i decided to make EXCAT such a procedure and searched around - nothing really good solution found.

I have MBR/EFIs and want to "switch to GUID/EFI.

Good timing :tomato:

 

Question:

 

Kernel Flags

boot-uuid=F3B54462-4BED-30F6-971D-BF37173E795E

 

What happens if i clone my Boot-Volume to an BackupVolume.

I make that every 1-2 weeks or before major Systemupdates. BackupVolume is after that bootable.

 

I ask because until now i didnt used/needed the boot-uuid flag.

Has the BackupVolume not an other boot-uuid than my BootVolume ?

 

If my normal BootVolume is damaged and i try to boot from the Backupvolume (has same uuid= as BootVolume! because cloning) i maybe have no bootsystem ?

So i must change the uuid= after every cloning back to the individual (right) uuid of the Backupvolume ?

Link to comment
Share on other sites

UUID = Universally Unique Identifier see http://en.wikipedia.org/wiki/UUID

 

I didn't try it, I will test later if I reformat a HFS partition gives the same UUID, posibly yes, but never NEVER on different disks or cloned partitions/volumes.

 

Yeah, UUID are differnet,

 

but i meaned, that if i use an fixed UUID (getting from Disk Utility of Volume1) in the boot.plist on Volume1 and i clone that Volume1 to Volume2 (now has also bootflag uuid of Volume1), the boot flag uuid of Volume2 is same as Volume1 , what

is wrong (must be an other uuid).

Thats what i mean with the cloneing + no change of boot.plist = boot problem? vs cloning + change of boot.plist(clone) = booting

Link to comment
Share on other sites

  • 1 month later...

Thanks for this guide macgirl. Got it working although I have to say that some things could be a bit more clear and I had to read this guide more than a few times to wrap my mind around it as I am not used to working so "technically" on computers.

 

This is the scenario

 

Disk 1 has XP (MBR scheme)

Disk 2 has Mac OS X (GUID scheme)

maybe another disks (like me :) )

 

This means that they should be installed and working already.

 

For myself, I had it so that I would press F12 at system boot and then select which hard drive I wanted to start up with.

 

1- reduce XP partition just enough to allow a 50 to 100 MB HFS partition

 

2- make a HFS partition (you can make a Fat32 and then with Disk Utility erase to a HFS)

 

I did this all before installing since I was doing a clean install of both OS X and Win XP.

 

I have two HDs. On one, I formatted as HFS with GUID for OSX and on the other I made 3 partitions with MBR. The first of these was Fat32 (which I later formatted to NTFS when I installed XP) and the other two were a 1 GB partition (the smallest I could make in Disk Utility) for the boot files and another for file storage; both were also HFS.

 

Don't think that it matters but I installed XP first.

 

3- use any method to install a boot loader and make this partition the active one, OSX86 Tools is an easy way to do it (you can install any of them, I choose chameleon)

 

I also did this and installed Chameleon.

 

In case it's not clear, the boot loader is to be installed on the small boot partition that was created earlier.

 

4- copy your actual kernel to that partition (i name it boot)

 

First problem (for me anyway). This file, named mach_kernel, was hidden.

 

I used the following command in Terminal to unhide it

 

"defaults write com.apple.Finder AppleShowAllFiles YES"

 

To hide the files again, type the same command with NO instead of YES.

 

A- extract your Disk UUID with this command on Terminal "./hfsdebug -d /dev/diskXsY -v | grep UUID" (run it from where you extract it).

 

If you look at the example, that the macgirl gives below, this should actually be

 

"./hfsdebug -d /dev/rdiskXsY -v | grep UUID"

 

The r before diskXsY is missing.

 

I also had to type "sudo -s" first to get root access.

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "[url="http://www.apple.com/DTDs/PropertyList-1.0.dtd"]http://www.apple.com/DTDs/PropertyList-1.0.dtd[/url]">
<plist version="1.0">
<dict>
  <key>Kernel</key>
  <string>mach_kernel</string>
  <key>Kernel Flags</key>
  <string>boot-uuid=F3B54462-4BED-30F6-971D-BF37173E795E</string>
  <key>Boot Graphics</key>
  <string>Yes</string>
  <key>Timeout</key>
  <string>5</string>
  <key>device-properties</key>
  <string>0d040000010000000A-VERY_LONG-GFX-STRING-HERE</string>
</dict>
</plist>

 

I didn't have the Timeout option default:

 

<key>Timeout</key>
 <string>5</string>

 

So I just added it in myself. No problem.

Link to comment
Share on other sites

  • 3 weeks later...

If I'm not mistaking, this way should work for any M$ OS boot, including all vistas. Right?

 

Q.: Can someone please explain a bit in more detail on how to actually install the bootloader, like the chameleon? I have iAtkas v4i and it only contains the darwin bootloader. WHat are other, shorter ways to install bootloaders, say w/o booting to the patched OSX86 CD?

 

Much appreciated.

Link to comment
Share on other sites

  • 1 month later...

Is there a way to make this work using a single HDD? The scenario:

 

GPT disk:

1st partition: Vista x64

2nd partition: MacLoader

3nd partition: Macintosh retail

 

Right now, if I flag partition 2, I can get MacLoader and Macintosh partition in the Darwin list but NO Vista! if i flag partition 1 I can boot Vista. How can I make Darwin "sees" my Vista partiton in a GPT disk? I'm using Chameleon 1.0.11.

 

TIA,

 

M.

Link to comment
Share on other sites

where did you get the boot-uuid= string from? I mean, is there a list of these commands somewhere? The reason I ask is because I need to hide an entry that chameleon picks up for my second partition on my windows drive.

 

Currently it looks like

d0, s0 windows

d0, s1 windows

d0, s2 osxboot

 

I need to get rid of the second windows option, does anyone know how to do this?

Link to comment
Share on other sites

You mention that chain0 method....I was wondering if you had verified it as working when you have vista/xp on an MBR-based drive and OSX on a GPT-based drive please?

 

I currently have that setup and want to boot from the Vista loader but no matter what I do, I get "Chain booting error".

 

I am not sure if this complicates matters but both of these drives are logical units on an areca array, one is defined as MBR and contains all my Windows partitions, the other is defined as GPT as has all my OSX and linux partitions (linux is having issues as well!).

 

It seems to me (after having this working fine when I never used GPT) that GUID drives really throw a spanner in the works ;)

Link to comment
Share on other sites

You mention that chain0 method....I was wondering if you had verified it as working when you have vista/xp on an MBR-based drive and OSX on a GPT-based drive please?

 

I currently have that setup and want to boot from the Vista loader but no matter what I do, I get "Chain booting error".

 

I am not sure if this complicates matters but both of these drives are logical units on an areca array, one is defined as MBR and contains all my Windows partitions, the other is defined as GPT as has all my OSX and linux partitions (linux is having issues as well!).

 

It seems to me (after having this working fine when I never used GPT) that GUID drives really throw a spanner in the works ;)

chain0 does not work directly on GPT disk, what you need is something like this:

 

Disk 1: MBR boot manager could be XP's or Vista's

 

Partition 1: NTFS Windows XP

Partition 2: NTFS Windwos Vista

Partition 3: HFS Very small partition just to acomodate the boot and necessary files to allow the boot-uuid flag.

 

Disk 2: GPT

Parition 1: HFS Mac OS

 

You need to use chain0 in order to boot the 3rd partition of disk 1, then like a second boot manager it allows you to boot to you 2nd disk with the boot-uuid flag.

 

Here are guide to solve the "Chain booting error" bot those apply to chain0 method on MBR disks.

Link to comment
Share on other sites

Hmms scratching my head atm... Need some ides, maybe its to late for me to think clear but....

 

This is my current situation...

Using this method http://forum.insanelymac.com/index.php?showtopic=127330

 

120 GB HD

 

GUID

Partition 1: 200 MB Hidden EFI (with EFIBoot and kext)

Partition 2: 30 GB NTFS Windows Vista

Partition 3: 80 GB Mac OS X Leopard

 

This way i get a nice vanilla Leopard. But the only way for me to "dual boot" is to flag ether part 1 or part 2 active and reboot.

 

Know your method uses 2 hard disks, could i use my 1gb usb flash memory to boot from or are the uuid from separate hds needed?

 

I thought one solution was to use usb for booting Leo and flag vista partition active, but that way i need to pull the usb flash in and out.

 

Any ides are welcome :D

Link to comment
Share on other sites

The method you are using should work to boot Vista too, review that your com.apple.plist doesn't have Timeout parameter as 0

 

Yes uuid method can be used with USB disks, CDs, etc.

Link to comment
Share on other sites

Hmms scratching my head atm... Need some ides, maybe its to late for me to think clear but....

 

This is my current situation...

Using this method http://forum.insanelymac.com/index.php?showtopic=127330

 

120 GB HD

 

GUID

Partition 1: 200 MB Hidden EFI (with EFIBoot and kext)

Partition 2: 30 GB NTFS Windows Vista

Partition 3: 80 GB Mac OS X Leopard

 

This way i get a nice vanilla Leopard. But the only way for me to "dual boot" is to flag ether part 1 or part 2 active and reboot.

 

Know your method uses 2 hard disks, could i use my 1gb usb flash memory to boot from or are the uuid from separate hds needed?

 

I thought one solution was to use usb for booting Leo and flag vista partition active, but that way i need to pull the usb flash in and out.

 

Any ides are welcome :thumbsup_anim:

 

You can make it with just one HDD, as I'm doing right now! Here it's my configuration:

 

HDD 320 GB - GUID:

1. NTFS Partition for Vista x64

2. NTFS Partition for Data

3. HFS+ Partition for MacLoader (look here)

4. HFS+ Partition for Mac Vanilla

 

Now, if you follow this method you can have everything working using Vista Bootloader. Follow the steps of this post from MACinized and have your mac working. After that you flag Vista Partition as active and install Vista. When you boot Vista, use EasyBCD to get Mac support for the Vista bootloader. It's working like a charm for me!

Link to comment
Share on other sites

You need to use chain0 in order to boot the 3rd partition of disk 1, then like a second boot manager it allows you to boot to you 2nd disk with the boot-uuid flag.

 

Here are guide to solve the "Chain booting error" bot those apply to chain0 method on MBR disks.

 

Thanks, finally got it installed and everything is working great, can patch the OS from Apple (sometimes requires 2 files to be copied from the update to my boot partition).....really nice to finally have a vanilla install :)

 

Now, I need to resolve my "Quad booting with Linux on a GPT partition" issue :P But that's for another day, sick of bootloaders for the time being ;)

Link to comment
Share on other sites

You can make it with just one HDD, as I'm doing right now! Here it's my configuration:

 

HDD 320 GB - GUID:

1. NTFS Partition for Vista x64

2. NTFS Partition for Data

3. HFS+ Partition for MacLoader (look here)

4. HFS+ Partition for Mac Vanilla

 

Now, if you follow this method you can have everything working using Vista Bootloader. Follow the steps of this post from MACinized and have your mac working. After that you flag Vista Partition as active and install Vista. When you boot Vista, use EasyBCD to get Mac support for the Vista bootloader. It's working like a charm for me!

 

Yep, but that method is with chameleon... I use Munkys EFI boot method for using the Hidden EFI partition with kext etc, still dont think dual boot work with that method.

Link to comment
Share on other sites

Can't seem to get this method to work. I have:

Disk 1. Windows XP (NTFS, MBR)

Disk 2. iDeneb install (HFS, GUID, uses Chameleon)

 

I followed all the steps but when it attempts to boot the new HFS partition (I used Chameleon) on the XP disk I get the following messages:

 

boot0: MBR

boot0: done

 

then it just stops.

 

If I make the XP partition active and try to use chain0, I can boot XP but I just get a blank screen with cursor if I select Leo.

 

Did I miss something?

Link to comment
Share on other sites

chain0 only work with MBR disks.

Right. My XP disk is MBR and that's where the 100 MB HFS partition is located, as you specified in your first post. I just tried it as a test because I couldn't get it to work the other way.

 

Edit 1: Installed PC EFI on the boot partition on the XP disk and that seems to be working. Am going to try Chameleon again as a test...

Edit 2: Chameleon still not working (installed form OSX86 Tools). Guess I'll stick with PC EFI or maybe try installing Chameleon manually.

 

Question:

Is there a way to specify the default partition to load in the Darwin Bootloader? I'd rather have XP be the default for now. If not, I guess I could use the chain0 method.

Link to comment
Share on other sites

Did you installed Chameleon in that partition too?

I installed Chameleon in the HFS partition on the XP disk, yes. That doesn't seem to work for me. But if I install PC EFI into that partition, it works.

 

As for the Darwin bootloader default, I seem to remember reading that it always uses the active partition as the default. No problem. I'm using the chain0 method and that's working for me. I just have to select the OS X partitions twice. :blink:

 

Thanks macgirl.

Link to comment
Share on other sites

 Share

×
×
  • Create New...