When the PC was designed the sequence was supposed to be:
MBR - choose a partition to boot from (the one marked active in the partition table).
Boot from that partition.
There are a couple of problems with this on your machine:
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.
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:
Mark the Windows XP partition as active (using disk management or fdisk on your live CD).
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.
Mark the Windows 7 partition as active.
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).
Use the Ubuntu CD to install Grub on /(sda1). This ensures that any further messing about with Windows does not necessitate overwriting Grub.
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.
I think it's quite similar to this (Deleted a partition, now getting 'Gave up waiting for suspend/resume device' message during boot).
I gave the answer below as it worked for me.
In my case, the boot message looked like this. The swap partition was deleted.
Gave up waiting for suspend/resume device
/dev/sda4 ... ...
[***] A start job is running for dev-disk-by\...\...\...\.device
...
...
...
First, look at the content of your fstab file,
cat /etc/fstab
will return this kind of output
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda4 during installation
UUID=8c1977eb-ac90-426b-bc9b-a7fb2ec8d760 / ext4 errors=remount-ro 0 1
# swap was on /dev/sda3 during installation
UUID=00fd67-123DE-4b98-aa17-2d4025aed54 none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
Then you notice , "swap was on /dev/sdax during installation".
Recreate the deleted partition (fdisk or Gparted for instance), then
use this command to find the new uuid of the partition.
ls -l /dev/disk/by-uuid/
This outputs:
total 0
lrwxrwxrwx 1 root root 10 févr. 19 07:18 00151dcd-2bf5-4b98-aa17-8f40ef4cfd86 -> ../../sda4
lrwxrwxrwx 1 root root 10 févr. 19 07:18 6C5A1AC45A1A8B4A -> ../../sda2
lrwxrwxrwx 1 root root 10 févr. 19 07:18 8c1977eb-ac90-426b-bc9b-a7fb2ec8d760 -> ../../sda3
lrwxrwxrwx 1 root root 10 févr. 19 07:18 C064106664106188 -> ../../sda1
Update your fstab with the correct uuid that were displayed by the last command by copy/pasting the adequate uuid of the swap in the fstab file.
Then reboot, It should correct the problem.
Best Answer
Type
exit
at the prompt and the system should boot. You should then edit your /boot/grub/menu.lst to wait longer for the root device.http://ubuntuforums.org/showthread.php?t=981159