Triple Boot Problem – How to Fix XP, Windows 7, and Ubuntu Boot Issues

bootmulti-bootUbuntuwindows 7

This was my HD setup one week ago:

sda1: EXT4 => / (Ubuntu root)
sda2: NTFS => Windows XP C:
sda5: EXT4 => /home
sda6: SWAP
sda7: NTFS => All my files like music videos etc
sda4: Blank

All was nice and shiny. Then I updated my XP to Seven.
Good! Almost working 100%, but my webcam didn't managed to work as it did on XP.
So I thought: "time to install XP in that last partition!"
And so I did.

sda2: NTFS => Windows 7 C:
sda4: NTFS => Windows XP G:

Of course I know XP would wipe out my GRUB.
And here starts my war.

I tried 2 times to restore my GRUB by the way I know (liveCD > chroot > grub-install), but they didn't work. So I read at Ubuntu-wiki about, instead of using grub-install, type grub and do things manually… Something like root (hd0) and setup (hd0,0).
And so grub came up. Fine, then.
I made my menu.lst like this:

[ubuntus]
hd(0,1) Windows 7
hd(0,3) Windows XP

By some reason when I tried to open the second entrie it started WXP. And if I tried the third, it gives me an erros about something like "NTDLR missing".

So I thought "if the best way to do this from the scratch is XP > 7 > Ubuntu, so lets fix XP boot, then 7, then GRUB.

Went to the XP Setup CD Command-line, did fixboot and fixmbr.
It booted to the XP just fine.
Went to the Seven Rescue options, but it didn't recognized XP when I asked to rebuild the bootloader. There was a text like this "if it didn't work, you can try again". And so I tried. Restarted.
There was an strange Seven bootloader giving me the options:

  • Ubuntu 9.04 (wtf is ubuntu doing here at Windows bootloader?!)
  • Windows 7
  • Windows XP

Final results:

  • Windows 7 booting
  • Windows XP throwing me the same NTDLR error
  • Ubuntu saying something about an strange bootloader from 2005 that was starting my partition. But I think that, if it really worked, wouldn't do it with my EXT4 partition.

Any ideas about how to get my GRUB with those 3 options (or anything like that)?

[UPDATE]
After much trouble between using Ubuntu Live CD, SuperGrub CD, Windowses CDs and trying to use EasyBCD, I ended up 2 days after that with a Grub with options for Ubuntuses and "Windows Menu", that loads EasyBCD menu. Better than nothing…
But my ubuntu is not loading correctly.
It says Boot from (hd0,0) ext4 <<uuid of sda1>>
After some time it loads the Ubuntu graphic loader.. All normal until now. It's bar keeps bouncing, and after some time it throws this on a black screen:

Gave up waiting for root device. Common problems:
– Boot args (cat /proc/cmdline)
* Check rootdelay=
* Check root=
– Missing modules
ALERT! /dev/disk/by-uuid/<<same uuid as before>> does not exist. Dropping to a shell!

And then it opens busybox…
I tried to create a file with that uuid on the right place (/dev/disk/by-uuid from my sda1) just like the other were: symlinks. After that I tried booting ubuntu again… Same problem; and I couldn't find the new uuid there, inside busybox.
o.O

Whats happening now? =(

Best Answer

When the PC was designed the sequence was supposed to be:

  1. MBR - choose a partition to boot from (the one marked active in the partition table).

  2. Boot from that partition.

There are a couple of problems with this on your machine:

  1. Windows is a bit rubbish at choosing which partition to boot from. As such both Windows XP and Windows 7 are trying to boot from the Windows 7 partition. The XP boot files should be copied from the Windows 7 partition to the Windows XP partition.

  2. GRUB does not follow the standard, ignoring active partitions.

I would try to get each operating system booting from its own partition, then set up Grub so that you have a nice menu for choosing which partition to boot from. To solve your problem I think you will have to:

  1. Mark the Windows XP partition as active (using disk management or fdisk on your live CD).

  2. Run the fixboot and fixmbr commands from Windows XP CD. Ensure there are now boot.ini, ntdetect.com and ntldr files in the root folder of this partition.

    You should now have XP booting nicely.

  3. Mark the Windows 7 partition as active.

  4. Run the Windows 7 boot recovery stuff from the Windows 7 CD.

    Windows 7 should pick up XP this time (or it may not because of having sda3 as the extended partition and sda4 after it - don't worry about it).

  5. Use the Ubuntu CD to install Grub on /(sda1). This ensures that any further messing about with Windows does not necessitate overwriting Grub.

  6. While still on the Live CD, use fdisk to mark sda1 as active.

You can now boot into Ubuntu and sort out menu.lst

Or use EasyBCD.

Related Question