Grub2 not finding Windows 10


I just installed openSUSE Leap 42.1 with the default bootloader settings (seems to be Grub2-EFI w/ secureboot on).

I had an existing Windows 10 BIOS MBR drive setup.

Windows 10 still boots just fine if I select it from my motherboard UEFI boot menu, however I wanted to add it to the grub2 menu. This drive has my main windows partition at sda2 and a windows “System Reserved” partition at sda1.

I’ve run os-prober and grub2-mkconfig and it doesn’t find the drive. I tried mounting it re-running and still nothing. I also tried adding to the 40_custom file new menu entries, with root set to ‘(hd0, msdos1)’, ‘(hd0, msdos2)’, ‘(hd1, msdos1)’, and so on, and for each item, grub2 says it can’t find the partition.

Why can’t it find the drive on its own? Is there some way to list all the drives/partitions it does find and which numbers it has assigned to them (like hd1, hd2, etc). Does Grub2-EFI even support BIOS/MBR drives?

Thanks for any help.

Two possible reasons
One you installed Linux in a different mode (legacy/EFI) then Windows… You can not chain between boot methods. No option but to reinstall in the ssame mode as Windows

Two you have Windows Fastboot on . This leaves the Windows file system in a dirty state If so turn it off then in Yast - bootloader scan for foreign OS

I had tried turning off fastboot but it was still no go.

Windows is legacy and opensuse is EFI. I didn’t realize grub couldn’t handle both simultaneously. I’m not sure if I’d rather re-install windows as EFI or linux as legacy but I guess that’s what I need to do… Thanks!

You can not mix boot modes they don’t see one another So that is the problem the only solution other then using the EFI boot menu os to reinstall both in the same mode.


The issue is more basic. That is to say, it is at the BIOS level.

A boot loader calls on the firmware to handle the I/O activity for loading a system.

The way this is done with UEFI is incompatible with way that this is done for legacy booting.

Grub2-efi uses the UEFI interface with the firmware (or BIOS). Loading your legacy Windows 10 requires using the legacy (compatibility) interface with the firmware.

Thanks, got it working. If anyone else reads this thread, I was able to resolve this issue by converting my windows drive to UEFI using this guide: