UEFI quest with already installed Windows 8.1 in legacy mode.

Sorry if this has been answered again but I was unable to find a similar situation…

I had 42.1 (upgraded from 13.2) installed on my system, on my primary SSD disk (/dev/sda) with an additional disk for home (dev/sdb). Also a Windows 8.1 installation was leaving on a separate disk (/dev/sdd). I made a clean install of Tumbleweed with grub-efi (same setup with separate home on /dev/sdb, all formated, /dev/sda was converted to gpt during installation) and it works as expected but the windows installation was not detected. I have to say that my previous 42.1 installation was not UEFI (was with grub2 although) and I was able to boot windows through a classic grub menu entry that was created automatically.

So my problem is how to add the already existing installation of Windows 8.1 on Tumbleweed grub which hasn’t discovered them. os-prober returns nothing. Windows disk holds the usual 2 windows partitions (the system reserved and the real windows partition).

Any help is appreciated. I’m new to UEFI concepts.

As far as I know, that cannot be done.

Booting depends on using the firmware provided functions to access the disks, etc. The firmware system calls for legacy booting are not compatible with the firmware system calls for UEFI. You cannot change from one kind of interface to another halfway through booting.

Ok, I figured it out. I had to convert the Windows installation to gpt and UEFI boot from legacy.

First from inside opensuse I converted the partitions on the Windows disk to gpt and then after booting with the Windows 8.1 installation disc, I selected “Repair” and followed the instructions after step 7 here:

http://social.technet.microsoft.com/wiki/contents/articles/14286.converting-windows-bios-installation-to-uefi.aspx

After rebooting to opensuse and updating grub, windows can boot and the entry appeared on grub menu. I’m facing some minor issues with secondary services failing on windows, after this operation (usual windows behavior…) but in general it worked.