windows 10 not present in GRUB 2 menu

Hi

I have two disk in my PC.

  1. Nvme PCI M.2 SSD, 240 GB with Windows 10 with MBR partition scheme.
  2. HDD 2TB with ntfs “Data” partition and OpenSuse Tumbleweed instalation. This disc has GPT patition table.

After installing OpenSuse, GRUB 2 only recognizes itself, and no Windwos entry in Boot menu.
However, if I choose from UEFI to boot from my NVME disk, I can boot into Windows.
If I choose to boot from HDD, I boot to OpenSuse.

I would like to add Windows to GRUB 2 menu.

How can I do this?

This is out from fdisk -l:

Disk /dev/nvme0n1: 238.49 GiB, 256060514304 bytes, 500118192 sectors
Disk model: ADATA SX6000PNP
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xf03b43dd

Device Boot Start End Sectors Size Id Type
/dev/nvme0n1p1 * 2048 1187839 1185792 579M 7 HPFS/NTFS/exFAT
/dev/nvme0n1p2 1187840 500115455 498927616 237.9G 7 HPFS/NTFS/exFAT

Disk /dev/sda: 1.84 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: TOSHIBA HDWD120
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 51208F04-0812-4535-8B39-E96103626C2F

Device Start End Sectors Size Type
/dev/sda1 34 32767 32734 16M Microsoft reserved
/dev/sda2 32768 3720224767 3720192000 1.7T Microsoft basic data
/dev/sda3 3720224768 3721248767 1024000 500M EFI System
/dev/sda4 3721248768 3907029134 185780367 88.6G Linux LVM

Partition 1 does not start on physical sector boundary.

Disk /dev/mapper/system-root: 35 GiB, 37580963840 bytes, 73400320 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Disk /dev/mapper/system-swap: 13.6 GiB, 14587789312 bytes, 28491776 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Disk /dev/mapper/system-home: 40 GiB, 42949672960 bytes, 83886080 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

some more outputs:


**parted -l**
Disk /dev/nvme0n1: 238.49 GiB, 256060514304 bytes, 500118192 sectors 
Disk model: ADATA SX6000PNP 
Units: sectors of 1 * 512 = 512 bytes 
Sector size (logical/physical): 512 bytes / 512 bytes 
I/O size (minimum/optimal): 512 bytes / 512 bytes 
Disklabel type: dos 
Disk identifier: 0xf03b43dd 
 
Device Boot Start End Sectors Size Id Type 
/dev/nvme0n1p1 * 2048 1187839 1185792 579M 7 HPFS/NTFS/exFAT 
/dev/nvme0n1p2 1187840 500115455 498927616 237.9G 7 HPFS/NTFS/exFAT 
 
 
Disk /dev/sda: 1.84 TiB, 2000398934016 bytes, 3907029168 sectors 
Disk model: TOSHIBA HDWD120 
Units: sectors of 1 * 512 = 512 bytes 
Sector size (logical/physical): 512 bytes / 4096 bytes 
I/O size (minimum/optimal): 4096 bytes / 4096 bytes 
Disklabel type: gpt 
Disk identifier: 51208F04-0812-4535-8B39-E96103626C2F 

**cat /etc/fstab**
/dev/system/swap  swap                    swap   defaults                      0  0
/dev/system/root  /                       btrfs  defaults                      0  0
/dev/system/root  /.snapshots             btrfs  subvol=/@/.snapshots          0  0
/dev/system/root  /var                    btrfs  subvol=/@/var                 0  0
/dev/system/root  /usr/local              btrfs  subvol=/@/usr/local           0  0
/dev/system/root  /tmp                    btrfs  subvol=/@/tmp                 0  0
/dev/system/root  /srv                    btrfs  subvol=/@/srv                 0  0
/dev/system/root  /root                   btrfs  subvol=/@/root                0  0
/dev/system/root  /opt                    btrfs  subvol=/@/opt                 0  0
/dev/system/home  /home                   btrfs  defaults                      0  0
/dev/system/root  /boot/grub2/x86_64-efi  btrfs  subvol=/@/boot/grub2/x86_64-efi  0  0
/dev/system/root  /boot/grub2/i386-pc     btrfs  subvol=/@/boot/grub2/i386-pc  0  0
UUID=B5C3-E9A2    /boot/efi               vfat   defaults                      0  0

**efibootmgr**
BootCurrent: 0000
Timeout: 10 seconds
BootOrder: 0001,0000,0004
Boot0000* opensuse-secureboot
Boot0001* Hard Drive
Boot0004* opensuse


The basic problem is that you are booting openSUSE with UEFI and you are booting Windows with traditional BIOS booting (also known as CSM or Compatibility Support Module).

The two don’t mix.

The easiest solution is to keep doing what you are doing. That is, use the BIOS boot menu to get to Windows.

Other choices: reinstall Windows to use UEFI
or: switch openSUSE to use BIOS booting.

You can switch openSUSE to use BIOS booting, but there’s no guarantee that your BIOS will cooperate.

My honest advice would be to go with the easy solution.

Thank you.

One thing is not clear to me:

When I install Win10 on first GPT disk in UEFI mode, it will create seperate boot partition for UEFI.

Then I install OpenSuse on second GPT disk.
Do I point GRUB2 to /boot/efi on second disk, or I have to point it to Windows boot partition on first disk?

Efi system partitions can be safely shared between drives and OSs. But you can also have one on each drive. Independent drives obviously have some advantages: If one of them fails, you can use the other one without experiencing annoyances.

You can do it either way. In most cases, it is better to use the same EFI partition for both systems. However, if you do reinstall that way, then if the Windows installer allows, you should try to make that EFI partition at least 256M in size. The openSUSE installer does not like smaller EFI partitions.

Note you can use less then 256M the installer just wines about it.

Yes, but you have to use the expert partitioner for that.