Check if the os-prober package is installed in Ubuntu with dpkg -l os-prober.
If it isn't installed, then:
sudo apt-get install os-prober
sudo update-grub
BTW, Ubuntu 12.04 does some horrible things to the grub menu with /etc/default/grub. You might want to edit it to comment out these lines:
GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
and add these in their place:
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
GRUB_TIMEOUT=5
This will stop the grub menu from being hidden at boot and will make whatever you choose from the menu be the next default. It also allows grub-set-default and grub-reboot to work (they don't when GRUB_DEFAULT is hard-coded to 0).
Don't forget to run sudo update-grub after editing it, and then sudo grub-set-default 0 to make sure it has a sane default.
Also, if you don't like the submenu that it hides old kernels with, then patch /etc/grub.d/10_linux like this:
--- 10_linux.orig 2012-05-17 07:07:17.000000000 +0000
+++ 10_linux 2012-08-27 03:46:54.803088897 +0000
@@ -254,12 +254,12 @@
list=`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '`
- if [ "$list" ] && ! $in_submenu; then
- echo "submenu \"Previous Linux versions\" {"
- in_submenu=:
- fi
done
-if $in_submenu; then
- echo "}"
-fi
and, again, run sudo update-grub.