1

I installed openSUSE Leap 15 alongside my Windows 10 on same hard drive but in an allocated free space. I expected the dualboot option, but the Windows 10 item doesn't show up in GRUB menu at all. All partitions (including windows EFI system partition) are still there. but I don't know how to recover windows boot. How can I re-boot my windows again (without loosing openSUSE)?

Here is hard drive's current state:

Device: /dev/sda
Size: 232.89 GiB
Encrypted: No
Device Path: pci-0000:00:1f.2-ata-1
Device ID 1: ata-Samsung_SSD_850_EVO_250GB_S21NNXAG700322J
Device ID 2: scsi-0ATA_Samsung_SSD_850_S21NNXAG700322J
Device ID 3: scsi-1ATA_Samsung_SSD_850_EVO_250GB_S21NNXAG700322J
Device ID 4: scsi-35002538d4028bcda
Device ID 5: scsi-SATA_Samsung_SSD_850_S21NNXAG700322J
Device ID 6: wwn-0x5002538d4028bcda

and a picture:

enter image description here

2

Please verify the name of the GRUB packages you currently have installed. If they include something like grub2-i386-pc (or directory /boot/grub2/i386-pc exists), you've accidentally booted the SuSE installer in legacy BIOS mode, and so it has installed a legacy BIOS version of GRUB bootloader, which naturally cannot boot any operating system that uses the newer UEFI boot scheme.

To fix this:

First, find out how to boot your system to Linux in UEFI mode and gain access to your OpenSUSE installation. A openSUSE installation media in Rescue System mode, or a LiveCD/USB could be suitable from this. Here's a link to the relevant instructions from openSUSE documentation

Verify that you're in fact in UEFI mode by running efibootmgr -v. If it responds with EFI variables are not supported on this system you are not managed to boot in UEFI mode, but in legacy BIOS mode. (Booting in legacy BIOS mode disables the UEFI runtime services, which is the mechanism used to access the EFI NVRAM variables.)

You may need to change your UEFI BIOS settings to prefer UEFI boot over legacy BIOS, or to outright disable the legacy compatibility (often known as CSM = Compatibility Support Module). The actual procedure at this point is specific to your hardware and UEFI BIOS. Consult your hardware documentation.

Once you've managed to boot the system in UEFI mode and are accessing your openSUSE installation, remove any current GRUB bootloader packages. Then mount your EFI system partition as /boot/efi and fully reinstall GRUB2. If the package management requires you to pick the actual version of GRUB2 hardware-dependent package, pick grub2-x86_64-efi instead of grub2-i386-pc.

Usually, the full reinstallation of GRUB includes a script that will automatically update the EFI NVRAM variables using the efibootmgr tool. With efibootmgr -v, you should see a list of boot options, similar to what is available in UEFI BIOS settings. After the (re)installation of an UEFI version of GRUB, the list should include a new entry for OpenSUSE, specifying the location of the grubx64.efi bootloader file within the EFI system partition. If that does not happen for some reason, you can use a command like the following to create it manually:

efibootmgr -c -d /dev/sda -L "openSUSE" -l '\EFI\opensuse\grubx64.efi'

Note that the efibootmgr -d option specifies the whole-disk device that contains the EFI system partition, not the partition itself.

The EFI system partition is not exclusive to Windows: in UEFI systems, all the installed operating systems are supposed to put their primary bootloaders in there. There is even a standardized directory schema for avoiding conflicts between bootloaders: each vendor is supposed to put their bootloader in \EFI\<vendor name>\ directory, and both openSUSE and Microsoft comply with this.

1

You could try something similar to the solution found here.

  1. Boot into SUSE and mount the Windows partition.
  2. From a shell run:

    sudo os-prober
    
  3. If windows is found, run:

    grub2-mkconfig -o /boot/grub2/grub.cfg
    
  • 1
    Thaks to help. I'm using openSUSE Leap. The update-grub command doesn't exist. Has this any alternative? – javad amiry Jan 18 at 8:11
  • Sorry about that, update-grub is a debian thing, you need grub2-mkconfig – user1794469 Jan 18 at 12:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.