Triple boot Windows 7/Ubuntu/Mac OS X

#1
Hi everyone,

I used to have the following setup:

C: Windows Vista 64.
External USB drive:
1st partition: Linux swap
2nd partition: Ubuntu 9.04 (upgraded from 8.04 - not sure if Grub was also upgraded). Grub sits on the same partition, therefore not installed on windows MBR.
3rd partition: Mac OS X (the bootloader's "boot" file is placed within the Grub boot folder, so that it is located automatically on startup).

It was working fine, until I decided to replace Vista 64 with Windows 7, 64 (clean install - wiped the MBR).

I reinstalled EasyBCD, but version 2.0 will not work. BootGrabber hangs with CPU usage at 50%. I installed EasyBCD 1.7.2 and added the grub entry without selecting "grub not installed in MBR". Not sure if it was the right thing to do.

Now I get an error about a bad boot configuration or something when selecting the Grub option, from the dual boot menu at startup.

Any ideas?

Thanks in advance!:scared:

This is the BCD output:

Windows Boot Manager
--------------------
identifier {9dea862c-5cdd-4e70-acc1-f32b344d4795}
device partition=\Device\HarddiskVolume1
description Windows Boot Manager
locale en-US
inherit {7ea2e1ac-2e61-4728-aaa3-896d9d0a9f0e}
resumeobject {8804db80-3f43-11de-8849-bd65fe79c62a}
displayorder {8804db81-3f43-11de-8849-bd65fe79c62a}
{8804db89-3f43-11de-8849-bd65fe79c62a}
toolsdisplayorder {b2721d73-1db4-4c62-bf78-c548a880142d}
timeout 10
Windows Boot Loader
-------------------
identifier {8804db81-3f43-11de-8849-bd65fe79c62a}
device partition=C:
path \Windows\system32\winload.exe
description Windows 7
locale en-US
inherit {6efb52bf-1766-41db-a6b3-0ee5eff72bd7}
recoverysequence {8804db82-3f43-11de-8849-bd65fe79c62a}
recoveryenabled Yes
osdevice partition=C:
systemroot \Windows
resumeobject {8804db80-3f43-11de-8849-bd65fe79c62a}
nx OptIn
Real-mode Boot Sector
---------------------
identifier {8804db89-3f43-11de-8849-bd65fe79c62a}
device partition=\Device\HarddiskVolume1
path \NST\nst_grub-0254B633836D8B12CF6A053B4829CD57.mbr
description Linux
 
Last edited:

mqudsi

Mostly Harmless
Staff member
#2
Well, since BootGrabber is hanging there's no way EasyBCD 2 will run for you... Let me get back to you on this.
 
#3
Hello Sanctimon, welcome to NST.
Are you using the [thread=642]latest beta build[/thread] (61) of EasyBCD? If not, then make sure to get it, and to use it to re-add the Linux entry.

Cheers.

Jake
 
#4
Thank you very much! Looking forward to getting back to my Mac OS X!

Addendum:

Hello Sanctimon, welcome to NST.
Are you using the [thread=642]latest beta build[/thread] (61) of EasyBCD? If not, then make sure to get it, and to use it to re-add the Linux entry.

Cheers.

Jake
Hi Jake,

Indeed that is what I am using.

My Windows 7 build is 7100 (the RC).

The moment EasyBCD launches, a window pops up, asking me to send a report to Microsoft as to the behaviour of BootGrabber. After doing that, I monitor BootGrabber from within the TaskManager, but it does not seem to be doing much other than use around 49-50% CPU. EasyBCD shows (not responding) if clicked on and both processes need to be manually shut down.
 
Last edited:
#5
OS X is the OS you're having trouble with booting? I thought you said it was Ubuntu?
 
#6
Let me try to make this clearer:

On the same external USB drive, there are three partitions: Ubuntu, Ubuntu swap and OS X.

Boot up goes like this:

First Windows boots its MBR, there I get to select between Windows or Grub (two choices only). If I select Grub, then I am led to the Grub screen, which has Mac OS X as one of its options (the others being the usual Ubuntu list).

Does the above make sense?
 
Last edited:
#7
Ahh...you're using NeoGrub.
You must have chosen to configure it manually.
 
#8
Not sure if I was formerly using NeoGrub. Linux GRUB is actually installed on the Linux partition, not on the windows Hard Drive, as described above. The idea is to get the Windows Bootloader to see the Linux bootloader. But currently this is impossible...

Addendum:

Also, please let me know if you need the dump files from the BootGrabber error.
 
Last edited:
#9
While CG works on the BootGrabber-hanging problem, I think we may be able to get your boot to work with 1.7.2. Just add a Linux entry in EasyBCD, under the Linux tab in the Add/Remove Entries section, and this time check the box that says "Grub isn't installed to the bootsector". Now, boot from a LiveCD, and post the following two things:


  1. The contents of your Grub menu.lst, located at /boot/grub/menu.lst on your Ubuntu partition.
  2. The output of the "sudo fdisk -l" command (without the quotes; the last letter is a lowercase "L") run from Appplications>Accessories>Terminal
Note: The reason I'm suggesting that you boot from a LiveCD is because you still have not clarifyed whether or not you can boot into Ubuntu. Obviously, if you can boot into Ubuntu normally, then you can access your menu.lst that way, and post the contents, as well as the output of the command.
 
#10
Hi, sorry for the delayed reply. Just to clarify - I cannot boot into Ubuntu. If I could access the Ubuntu Grub, I could boot into any of its options. The point is that the WIndows 7 bootloader fails to find the Ubuntu Grub and load it, in spite of the fact that EasyBCD is pointing it to the correct drive/partition (see above).

Here is the content of the menu.lst:

title Ubuntu 9.04, kernel 2.6.28-11-generic
root (hd2,1)
kernel /boot/vmlinuz-2.6.28-11-generic root=UUID=7b517d2f-bca7-427f-9dc7-cc7490704e38 ro quiet splash
initrd /boot/initrd.img-2.6.28-11-generic
quiet

title Ubuntu 9.04, kernel 2.6.28-11-generic (recovery mode)
root (hd2,1)
kernel /boot/vmlinuz-2.6.28-11-generic root=UUID=7b517d2f-bca7-427f-9dc7-cc7490704e38 ro single
initrd /boot/initrd.img-2.6.28-11-generic

title Ubuntu 9.04, kernel 2.6.27-11-generic
root (hd2,1)
kernel /boot/vmlinuz-2.6.27-11-generic root=UUID=7b517d2f-bca7-427f-9dc7-cc7490704e38 ro quiet splash
initrd /boot/initrd.img-2.6.27-11-generic
quiet

title Ubuntu 9.04, kernel 2.6.27-11-generic (recovery mode)
root (hd2,1)
kernel /boot/vmlinuz-2.6.27-11-generic root=UUID=7b517d2f-bca7-427f-9dc7-cc7490704e38 ro single
initrd /boot/initrd.img-2.6.27-11-generic

title Ubuntu 9.04, kernel 2.6.24-22-generic
root (hd2,1)
kernel /boot/vmlinuz-2.6.24-22-generic root=UUID=7b517d2f-bca7-427f-9dc7-cc7490704e38 ro quiet splash
initrd /boot/initrd.img-2.6.24-22-generic
quiet

title Ubuntu 9.04, kernel 2.6.24-22-generic (recovery mode)
root (hd2,1)
kernel /boot/vmlinuz-2.6.24-22-generic root=UUID=7b517d2f-bca7-427f-9dc7-cc7490704e38 ro single
initrd /boot/initrd.img-2.6.24-22-generic

title Ubuntu 9.04, memtest86+
root (hd2,1)
kernel /boot/memtest86+.bin
quiet

### END DEBIAN AUTOMAGIC KERNELS LIST

# This is a divider, added to separate the menu items below from the Debian
# ones.
title Other operating systems:
root


# This entry automatically added by the Debian installer for a non-linux OS
# on /dev/sdb1
#title Windows Vista/Longhorn (loader)
#root (hd1,0)
#savedefault
#map (hd0) (hd1)
#map (hd1) (hd0)
#chainloader +1

title Mac OS X (loader)
kernel /boot/grub/boot
boot
This is the output of the fdisk -l:

Disk /dev/sda: 500.1 GB, 500107862016 bytes
16 heads, 63 sectors/track, 969021 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Disk identifier: 0xa1589556

Device Boot Start End Blocks Id System
/dev/sda1 * 1 969018 488385040+ 7 HPFS/NTFS

Disk /dev/sdb: 82.3 GB, 82348277760 bytes
255 heads, 63 sectors/track, 10011 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x36853685

Device Boot Start End Blocks Id System
/dev/sdb1 * 1 13 102400 7 HPFS/NTFS
Partition 1 does not end on cylinder boundary.
/dev/sdb2 13 10012 80313344 7 HPFS/NTFS

Disk /dev/sdc: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xdebdd5a3

Device Boot Start End Blocks Id System
/dev/sdc1 1 622 4996183+ 82 Linux swap / Solaris
/dev/sdc2 623 6701 48829567+ 83 Linux
/dev/sdc3 * 6702 19457 102462570 af Unknown

WARNING: GPT (GUID Partition Table) detected on '/dev/sdh'! The util fdisk doesn't support GPT. Use GNU Parted.


Disk /dev/sdh: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

Device Boot Start End Blocks Id System
/dev/sdh1 1 121602 976762583+ ee GPT

Disk /dev/sdi: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x29ad3b0f

Device Boot Start End Blocks Id System
/dev/sdi1 1 56667 455177646 af Unknown
/dev/sdi2 * 56668 60801 33206355 af Unknown
Thanks for letting me know how to deal with this!:S
 
Last edited by a moderator:
#11
Ok, so because you can't boot into Ubuntu either, just copy over the following entries into the menu.lst located at /NST/menu.lst (if NeoGrub has been installed) on your Windows partition, and save the changes:
title Ubuntu 9.04, kernel 2.6.28-11-generic
root (hd2,1)
kernel /boot/vmlinuz-2.6.28-11-generic root=UUID=7b517d2f-bca7-427f-9dc7-cc7490704e38 ro quiet splash
initrd /boot/initrd.img-2.6.28-11-generic
quiet

title Ubuntu 9.04, kernel 2.6.28-11-generic (recovery mode)
root (hd2,1)
kernel /boot/vmlinuz-2.6.28-11-generic root=UUID=7b517d2f-bca7-427f-9dc7-cc7490704e38 ro single
initrd /boot/initrd.img-2.6.28-11-generic

title Ubuntu 9.04, kernel 2.6.27-11-generic
root (hd2,1)
kernel /boot/vmlinuz-2.6.27-11-generic root=UUID=7b517d2f-bca7-427f-9dc7-cc7490704e38 ro quiet splash
initrd /boot/initrd.img-2.6.27-11-generic
quiet

title Ubuntu 9.04, kernel 2.6.27-11-generic (recovery mode)
root (hd2,1)
kernel /boot/vmlinuz-2.6.27-11-generic root=UUID=7b517d2f-bca7-427f-9dc7-cc7490704e38 ro single
initrd /boot/initrd.img-2.6.27-11-generic

title Ubuntu 9.04, kernel 2.6.24-22-generic
root (hd2,1)
kernel /boot/vmlinuz-2.6.24-22-generic root=UUID=7b517d2f-bca7-427f-9dc7-cc7490704e38 ro quiet splash
initrd /boot/initrd.img-2.6.24-22-generic
quiet

title Ubuntu 9.04, kernel 2.6.24-22-generic (recovery mode)
root (hd2,1)
kernel /boot/vmlinuz-2.6.24-22-generic root=UUID=7b517d2f-bca7-427f-9dc7-cc7490704e38 ro single
initrd /boot/initrd.img-2.6.24-22-generic

title Ubuntu 9.04, memtest86+
root (hd2,1)
kernel /boot/memtest86+.bin
quiet

title Mac OS X (loader)
root (hd2,1)
kernel /boot/grub/boot
chainloader +1
If you haven't installed NeoGrub yet, you will need to, in order for this to work. You can do this, by going to the Add/Remove Entries section of EasyBCD, and clicking on "Install NeoGrub". Now, that install button should change to say "Configure" instead, which you can then click on to open up your NeoGrub menu.lst, and add the entries I quoted above.
Note: If I left your OS X entry the way you had it, it will not work, because you haven't told it where to find the OS X bootloader. Simply specifying "kernel /boot/grub/boot" is useless without a "root (hdx,y)" line where "x" is the drive", and "y" is the partition. If I understand correctly, you copied the OS X bootloader into your /boot/grub directory of your Ubuntu partition? If not, then you will need to change the "kernel" line as well.
So,
Code:
root (hd2,1)
should work in your OS X entry.

Jake

EDIT: And if the OS X entry doesn't work (chances are it wont), you should be able to add a "normal" OS X entry to your BCD with the option under the Mac tab in the Add/Remove Entries section of EasyBCD, which should work.
 
Last edited:
#12
Hi,

Thank you for your recommendation. I have just tried this, but I am afraid the error remains the same.

"Windows has failed to start. A recent software or hardware change might be the cause. Please attempt to repair your installation etc, etc. Error: 0xc000000f". This error appears only when selecting the Neogrub option - Windows 7 boots up normally. Also, I have tried repairing startup from the install DVD as advised and the error persists.

I am really getting worried now...


Addendum:


Just one point of concern, which has occurred to me now:

When manually adding the entry for the Linux Grub (Not NeoGrub) in 1.7.2, it reads:

Real-mode Boot Sector
---------------------
identifier {8804db92-3f43-11de-8849-bd65fe79c62a}
device partition=\Device\HarddiskVolume1
path \NST\nst_grub-CDEF39B8BE43C9B656A7AD71E9F8284A.mbr
description NeoSmart Linux

Now, I am pretty certain that Windows does not "see" that drive as Volume1, but as Volume2. At least, this is how it appears under disk management. In fact, even on the EasyBCD drop-down, it appears as Disk 2. To further test my conclusion, I removed that entry and added another (invalid) entry from Disk 1 time. Again, it read the same: device partition=\Device\HarddiskVolume1. So, no matter what disk I choose, EasyBCD is pointing Windows to the same (wrong) disk to look for the Linux Grub!

How can we change that?

Thanks.
 
Last edited:
#13
So, no matter what disk I choose, EasyBCD is pointing Windows to the same (wrong) disk to look for the Linux Grub MBR!
I thought you installed Linux Grub to the bootsector of the Ubuntu partition (NOT the MBR)? :S
 
#14
So I did. So wouldn't you expect Windows to be looking at that partition to find it? Apologies, I did not mean to use "MBR". Wrong terminology.:??
 
Last edited:
#15
You've got this wrong. The BCD entry is not what is supposed to point back at the Linux partition. Rather, it points at the partition that contains NeoGrub (namely, your Windows partition), and NeoGrub is what points at your Linux partition and drive. :wink: Of course, though, if you don't check the box called "Grub isn't installed to the bootsector", it will use Bootpart instead of NeoGrub to (attempt to) boot Linux.
Try uninstalling NeoGrub (under the NeoGrub tab in EasyBCD's Add/Remove Entries section), delete any and all existing Linux entries in your BCD, and then re-adding a Linux entry, this time remembering to check the box that says "Grub isn't installed to the bootsector". Then open up your NeoGrub menu.lst, and append the entries in my second to last post, to the end of the file, and save the changes.
In the first entry you see in the menu.lst (which will be the one added by the "Grub is not installed..." option), simply add a "title boot ubuntu" line.
And you will also need to add these two lines to your menu.lst (right after the commmented out '#' section):

Code:
timeout 10
default 0
Now, reboot, and test all entries you see when selecting the Grub entry in Win 7's menu.

Addendum:

BTW, try disconnecting all disks (except for your Win 7 and Linux disks), and try using 2.0 Beta again, and see if still hangs. Guru just suggested in your bug thread that the reason it was hanging was because of the GPT disk, so I'm wondering if disconnecting it (and the other disks) will solve the hanging problem.

Jake
 
Last edited:
#16
OK, so that did help (and many many thanks for that!), but...

Whereas booting Linux works fine - NeoGrub takes me directly into Linux, selecting the Mac OS X option from the loader, actually loads the Linux Grub! How did we manage that?

If we can do that, then perhaps, we could abolish all options from NeoGrub, leaving just one with 0 seconds wait time, which will take us to the Linux Grub.

Any thoughts on this?
 
#17
Ok, so just remove the OS X entry completely from both your Ubuntu grub menu.lst, and your NeoGrub menu.lst. Next, simply open up EasyBCD in Win 7, go to the Add/Remove Entries section of EasyBCD, and under the Mac tab, add an entry to boot OS X to your Win 7 BCD.

Jake
 
#18
Perhaps I was misunderstood. I was talking of possibly keeping the Ubuntu Linux Grub (which also has the Mac OS X entry). I just did not think it would be possible to access it. Now that NeoGrub can reroute the bootloader to it (I still haven't figured out how it does it via the Mac OS X option), if I leave the Mac OS X option "alive", it should now take me to the Linux Grub. In order to avoid having to see two Grub menus, I'll set the Mac OS X option as default and the time as 0. This way, NeoGrub becomes invisible and I still have my old Grub to play with. How does that sound?
 
Last edited:
#19
Perhaps I was misunderstood. I was talking of possibly keeping the Ubuntu Linux Grub (which also has the Mac OS X entry). I just did not think it would be possible to access it. Now that NeoGrub can reroute the bootloader to it (I still haven't figured out how it does it via the Mac OS X option).
It does it via the first entry in your NeoGrub menu.lst (if you followed my instructions) which is not a Mac OS X entry. Rather, it has a "find --set-root" line which finds the menu.lst on the Ubuntu partition, and another line which tells it the config file is the menu.lst, and that is how it chainloads the Linux grub on the Linux partition.
If I leave the Mac OS X option "alive", it should now take me to the Linux Grub. In order to avoid having to see two Grub menus, I'll set the Mac OS X option as default and the time as 0. This way, NeoGrub becomes invisible and I still have my old Grub to play with. How does that sound?
The Mac OS X option has nothing to do with it, really. In fact, it probably doesn't even work at all. I said the "kernel /boot/grub/boot" line simply because you said basically in the first post that the OS X bootloader was called "boot", and you copied it into the boot/grub directory. But, to be honest, that really doesn't sound likely...:wink:
I don't know much about the OS X bootloader, but I highly doubt it works that way. That is why I suggested adding a "normal" OS X entry to your BCD menu using the Mac option in EasyBCD, which should work a hell of a lot better.
And now that you can use 2.0 Beta again, due to the GPT disk being disconnected, you should be able to use the latest version, which should work even better.
If you want only one menu, then uninstall NeoGrub completely (that option is available under the NeoGrub tab), and add a normal Linux entry, and a normal Mac OS X entry with EasyBCD 2.0 Beta build 61.
Then it will work a treat.

Note: Since Ubuntu is on a different disk than Windows, you will want to select the "Grub is not installed..." option under the Linux tab in the Add/Remove Entries section of EasyBCD.

Jake
 
#20
It does it via the first entry in your NeoGrub menu.lst.
Not really, if I select the first entry in the NeoGrub menu, it boots directly into Linux, completely bypassing the Linux GRUB (or so it seems).

Here's what happens:

Computer starts up
Windows 7 Bootloader shows up with two options: Windows 7 and NeoGrub
If I select NeoGrub, then the whole array of options we inserted comes up, with Mac OS X as the last one.
If I select the first one (Ubuntu 9.04), Linux loads immediately, bypassing the GRUB which is already installed on its bootsector (or so it seems - at any rate, the options do not show up).
If I select the last option (Mac OS X), then what actually loads is the good old Ubuntu GRUB menu (which at this point is identical to the NeoGrub, the only difference being, I had set up my Linux GRUB to have Mac OS X as default and to time out in 2 seconds, hence I recognise it). I repeat, the old Linux GRUB will not be evoked via any other option from NeoGrub, apart from the last one, which is Mac OS X. All other options boot directly into Linux, as, of course, expected.

Within the Ubuntu /boot/grub folder, I have pasted the "boot" file from the Mac OS X bootloader. Once launched by Grub, this file will start "looking" for the rest of the bootloader in all available partitions. Once it finds it, it will ask for confirmation and, depending on the timeout, it will start loading.

Back to EasyBCD 2.0, r. 61:

When I remove NeoGrub and I attempt to add Linux from the menu, I have two options:

1) I can check the "GRUB isn't installed to the MBR/bootsector" option. If I do that, EasyBCD always installs NeoGRUB, which then needs to be configured.
2) I can leave the "GRUB isn't installed to the MBR/bootsector" unchecked. If I do that, and select Linux on startup, the screen just shows "GRUB" and hangs. (in my opinion, this should work, because the Linux GRUB is installed to the bootsector).

Installing Mac OS X via EasyBCD gives the message that it requires NeoGrub to be installed for EFI mode. The MBR mode gives me "Chain Loading Error".
 
Last edited: