I have a 500GB SATA HDD (the only one in the system) running Ubuntu.
I've derided to replace it with a new 1TB SATA drive, so I backed up the whole old HDD on an external drive using fsarchiver.
Then I partitioned the new drive (one primary partition with nearly all the space and one swap partition) and restored the whole backup from the old drive on it - no problems.
Then I reinstalled GRUB:
grub-install --recheck /dev/sda
No problems at all.
Now, when I have both HDDs connected, no matter how I set them up and which one is sda and primary it always boots from the old (500Gb) drive. However, when I disconnect the old drive and leave only the new one in the system it boots from it with no problems. Why?