When os-prober detects another install on a system with a shared /boot, it sets up a menu to boot that install, but passes the kernel a root= argument directing it to mount the root partition of the install running os-prober instead of the partition on which the other system was found. Example:
menuentry '<name of first linux OS> (on /dev/sda2)' [...] {
[...]
set root='(hd0,msdos1)' # <- this is the boot partition, /dev/sda1
search --no-floppy --fs-uuid --set=root <UUID of /dev/sda1>
linux /vmlinuz-x.x.x root=UUID=<UUID of /dev/sda2> [...]
initrd [....]
}
menuentry '<name of second linux OS> (on /dev/sda3)' [...] {
[...]
set root='(hd0,msdos1)' # <- this is the boot partition, /dev/sda1
search --no-floppy --fs-uuid --set=root <UUID-of-/dev/sda1>
linux /vmlinuz-y.y.y root=UUID=<UUID of /dev/sda2 (!!!)> [...]
initrd [....]
}
I think this bug is still there with maverick.
I have a fresh lucid and maverick installation sharing a boot partition. When I do a grub-update in maverick, the script which runs linux-boot-prober apparently got the uuid wrong for the lucid partition.