Triple Boot: XP, OSX, Ubuntu

#1
Right now I have three separate HDDs. Each drive contains an OS. To launch OS, I plug in the drive I want to use. This really bites. I hope I can use EasyBCD to have all three drives installed in my machine, and then have a nice menu to select which OS I want to launch at startup.

Is EasyBCD the right tool to do this? I'm not sure, because I do not run Vista. Any suggestions on how to proceed?
 

mqudsi

Mostly Harmless
Staff member
#2
Hi Joe, welcome to NeoSmart Technologies.

EasyBCD would be the perfect tool to use, except you don't have the Windows Vista bootloader installed - instead you have the XP Bootloader, the OS X (Darwin) Bootloader, and GRUB... Unfortunately, no Vista bootloader.

If you get the Vista bootloader installed (see http://neosmart.net/blog/2007/how-to-install-the-vista-bootloader-on-a-windows-xp-machine/) we can help you get the triple-boot going right away.
 
#3
OK. I copied the vista boot files off my laptop and used easyBCD to install it. It worked. When I restart my computer, I get into WindowsXP still.

I plugged in my Linux drive, and booted into WindowsXP. I started easyBCD 1.7 and added a new entry for Linux like this:

Type: Grub
Name: Ubuntu 7.1.0 (Gutsy)
Drive: Drive 0 - Partition 0 (Linux Native - 65GB)

I then restart the computer and I see the new entry for Ubuntu. But, when I select it I get thrown right back to the vista bootmenu. I'm guessing this is because I was using a separate drive for Linux before, so Grub is installed in the MBR of drive 0 rather than in the partition.

So, I boot into windows, startup up easybcd, remove my linux entry, then re-add it, only this time selecting the "grub is not installed" option. I rebooted, selected linux, and grub started up with several entries for ubuntu. The problem is, when I select one to boot, I get an error.

error 17: file not found

My HDDs are setup like this:

Drive 0 - Linux
Drive 1 - Data
Drive 2 - Windows XP (also the default boot drive)

Edit: Ok, so I played with it some more. I uninstalled neogrub, and installed grub to the partition as described in the wiki. I then re-added my ubuntu, but I get the same thing at the boot menu... it just comes right back to the boot menu instead of booting ubuntu.
 
Last edited:

mqudsi

Mostly Harmless
Staff member
#4
Hi Joe,

Sounds like because Linux was installed under a different configuration your menu.lst has been messed up.

Your best option would be to remove the Linux entry in EasyBCD, and add a NeoGrub entry instead. Make the NeoGrub configuration file look something like this:

Code:
# NeoSmart NeoGrub Bootloader Configuration File
#
# This NeoGrub menu.lst file should be located at \NST\menu.lst of the boot drive.
# Please see the EasyBCD Documentation for information on how to create/modify entries

find --set-root /boot/vmlinuz-2.6.17-10-generic
kernel /boot/vmlinuz-2.6.17-10-generic ro root=/dev/hdb2
initrd /boot/initrd.img-2.6.17-10-generic
boot
Just replace the 2.6.17-10-generic with the correct version number from your linux, and replace /dev/hdb2 with what linux calls its root drive.
 
#5
I finally go this working after a long time, and thought I'd report what worked. The main problem is for some reason Ubuntu keeps changing the device numbers around, probably because sometimes I have an external HDD or a USB key plugged in. Because of this, sometimes /dev/hdb2 wouldn't exist.

I needed to find the UUID of the partition that had Ubuntu installed on it. I could find this by booting with the Linux live cd, selecting the partition and viewing it's properties. On one of the tabs, it lists the UUID.

I finally got everything working with neogrub by changing the kernel command like this:
Code:
kernel /boot/vmlinuz-2.6.22-14-generic ro root=UUID=85a14224-4809-430d-98d0-d626816c03d0 quiet splash
 

mqudsi

Mostly Harmless
Staff member
#6
Thanks for sharing that, Joe. Glad you got it to work.