Bug#666750: [debian-installer] grub-installer prompt mentions other operating systems like Windows, but only Debian actually offered after install
Package: debian-installer, grub-installer
This is a fake bug to document a particularly bad scenario caused by
#650819 for users and ease finding it.
When the installer installs a Linux image of a different flavour than
the flavour it uses, the GRUB installed does not offer booting other
operating systems. For example, if installing Debian wheezy i386 on a PC
that came with Windows 7, Windows 7 will not be bootable using a GRUB
entry if the Linux flavour installed is 686-pae. However, when
debian-installer asks whether GRUB should be installed, the list of
operating systems detected is fine, so the user has no idea he's going
to "lose" other operating systems.
A rare exception to that is if os-prober is not installed to the target
This bug obviously does not affect squeeze.
If you hit this bug, your other operating systems are still there.
All you need to do to recover them is to boot Debian and run the
update-grub command, as the root user (assuming your Debian install
succeeeds to boot...) You should then see other operating systems in
GRUB when you reboot.
Although fixing #650819 will get rid of this issue, grub-installer could
do better to avoid this deceptive scenario. As explained in #650819,
grub-installer typically calls os-prober twice, once to ask if all other
OS-es were detected, and once to actually generate grub.cfg. Instead, if
os-prober was called once to generate grub.cfg (by moving update-grub
before grub-install), the list of other operating systems that were
detected could be presented to the user after analyzing update-grub's
Unfortunately, I'm afraid update-grub doesn't return a list of other
OS-es it detected, and parsing its generated grub.cfg may need some
effort. But it would be much more reliable.
Alternatively, we could at least have the 2 calls to os-prober run both
in the target or outside the target (presumably inside). Or, if
os-prober (deb) is installed, run both inside (and if not, keep having a
single call running outside, as is currently happening).