The problem is there are several possible install modes. UEFI, EFI, and standard. Basically standard is what you get if you shift around your partitions so you can make the grub boot partition one of the first things on disk.
After much experimentation I have found the best way to get everything working is you need both a GPT and an MBR partition table. The reason being if you installed Windows without using UEFI, then it will only be able to read the MBR partition table while booting. While grub will need to read the GPT partition table. In this scenario, you must not install Linux using UEFI mode. With modern bioses, you will see the DVDRAM listed twice. Once with UEFI and once without UEFI. You want to use the without UEFI to install your Linux distribution. However, before installing you will need to prepare your disk. I am assuming you have already resized your partions to make room and created a recovery disk from Windows. Start off with just the standard MBR partition table. If and only if your install complains you need GPT then do the following:
- In a terminal run (Replace /dev/sda with whatever drive you are using.)
$ su -
# fdisk /dev/sda
print (Be sure to write this down, or take readable screenshot with your camera.)
# gdisk /dev/sda
# fdisk /dev/sda
Now the hard part, you need to delete the gpt partion recreate the partition table you saw above. Be sure your windows partition is active.
- It might not be necessary, but to be on the safe side, reboot.
- Using the live dvd/cd, go ahead and install.
- At this point your linux partition will boot. Windows should be recognized as well but probably won't boot yet...
- Once logged into linux, run fdisk to see if your partition table still exists. If not recreate it.
- Now take your windows recovery disk (the one created when you backed up your system). And boot from it.
- The windows recovery disk should find your windows system and offer you the option to repair the boot. Do so.
- Now you should find that both Windows and your Linux system boot normally.
Note: I have only tried this procedure using Fedora 17. It may well turn out that there are problems unique to Ubuntu.