I’m looking for help to test whether legacy BIOS Windows bootlader that is sometimes present on EFI installation actually works if system is switched into legacy mode. To remind - multiple people reported that on EFI systems grub menu contains Windows entry that is not bootable. This Windows entry is generated because legacy bootloader is still present on Windows partition. What I am would like to know - is it actually possible to boot Windows in legacy BIOS mode using this bootloader. If you have such system and are open to experiment - I appreciate your help. I do not have and hardware and under Vmware I do not see this. So my theory is, Windows somehow detects that system is legacy BIOS capable and installs second bootloader besides EFI one.
Well, i own a new DELL XPS 15 with a nonworking grub2 menu entry for Windows. However this entry definitely doesn’t try to boot a legacy bios windows bootloader:
### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Boot Manager (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-efi-9CD4-1334' {
insmod part_gpt
insmod fat
set root='hd0,gpt1'
if x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 9CD4-1334
else
search --no-floppy --fs-uuid --set=root 9CD4-1334
fi
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
This is exactly what os-prober finds and /EFI/Microsoft/Boot/bootmgfw.efi exists on the EFI system partition. But there is another bootmgfw.efi in the root of the EFI system partition.
A file -s /dev/sda2 ( this is the windows partition on that system) indeed says: DOS/MBR boot sector. The Windows 8.1 on that system wasn’t installed from a clean Microsoft Installation DVD, but from the Dell Image. So I think this is Dell problem, not a Windows Problem.
I still can boot to Windows, if I use the BIOS bootmanager ( F12) .
I have a similar entry in my grub menu. However, it does work. This is on a Dell Inspiron 660, with the Dell preinstalled Windows 8 (later upgraded to Windows 8.1).
What opensuse version are you using? I recall a similar problem when 12.3 was released, but I have not seen that problem with 13.1.
Currently os-prober checks for EFI during generation of grub.cfg. I consider moving this check into grub.cfg itself, so both menu entries would be present and one hidden by grub if platform does not match. Could you test the following - comment out check in /usr/lib/os-probes/mounted/20microsoft:
# This script looks for legacy BIOS bootloaders only. Skip if running UEFI
if -d /sys/firmware/efi ]; then
debug "Skipping legacy bootloaders on UEFI system"
exit 1
fi
(simply removing “exit 1” is enough) and regenerate grub.cfg. You may now have two menuentries for Windows - one for legacy, another for EFI. Try if you can actually boot Windows with legacy menu entry.
I still can boot to Windows, if I use the BIOS bootmanager ( F12) .
As EFI or as legacy BIOS? Of course you can select Windows in EFI boot menu, that’s not what I asked