Boot device not found , dual booting Win 10 and openSUSE tumbleweed with EFI

Hi, I’m dual booting Win 10 and openSUSE tumbleweed plasma on a HP laptop HDD.
I previously had dual booting working with linux Mint 17 for over a year, so I know it’s possible, but after distro hopping to debian and then openSUSE, some errors occurred with GRUB.
First it would no longer boot to the GRUB2 graphical menu to select linux or windows 10 boot manager, only to the GRUB command line.
Now it no longer even loads GRUB, instead I receive a HP error 3F0 telling me no boot device was detected.

I’ve been able to boot opensuse and windows 10 using a opensuse install USB and a Super Grub2 bootcd separately and they both still work great.
I’ve confirmed I don’t have secure or legacy boot enabled and have tried putting the hdd to the top of the boot order without success.
When I open the “YaST2 - Boot Loader” menu, it has "GRUB2 for EFI enabled, and in the “Default Boot section” it can actually see opensuse Tumbleweed and windows 10 as valid options to be selected.
From the openSUSE bootUSB, if I select “Boot from HDD” it gives the error code “error no such device: /efi/boot/fallback.efi” but when I go “more options”->“boot linux” it happily boots into tumbleweed after selecting the default kernel options.

Details requested by this FAQ: https://forums.opensuse.org/showthread.php/423389-Grub-All-about-Grub-and-Multi-Boot-Windows

fstab -l results

Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 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
Disklabel type: gpt
Disk identifier: 94766E73-4511-4585-B296-9445BA6F508B

Device          Start        End   Sectors   Size Type
/dev/sda1        2048     534527    532480   260M EFI System
/dev/sda2      534528     796671    262144   128M Microsoft reserved
/dev/sda3      796672  210511871 209715200   100G Microsoft basic data
/dev/sda4   210511872  781658111 571146240 272.4G Microsoft basic data
/dev/sda5   986458112 1865363455 878905344 419.1G Microsoft basic data
/dev/sda6  1910016000 1911513087   1497088   731M Windows recovery environment
/dev/sda7  1911513088 1953523711  42010624    20G Windows recovery environment
/dev/sda8   781658112  785866751   4208640     2G Linux swap
/dev/sda9   785866752  859959295  74092544  35.3G Linux filesystem
/dev/sda10  859959296  986458111 126498816  60.3G Linux filesystem

Partition table entries are not in disk order.




Disk /dev/loop0: 83.8 MiB, 87896064 bytes, 171672 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Any advice on how to actually be able to choose tumbleweed or win10 at boot would be useful please. Thought I’d ask for advice before making any drastic changes.

A few weeks ago i wrote this guide:

https://forums.opensuse.org/showthread.php/528400-Repair-a-broken-UEFI-GRUB2-openSUSE-boot-scenario

It might help to solve your problem.

As far as i can tell by your post you can skip step 8. to 13. and in case you can’t setup a working network connection you can omit step 14. and 15. as well.

/dev/sda1 seems to be your “EFI system partition” and either “/dev/sda9” or “/dev/sda10” your Tumbleweed root partition.

Regards

susejunky

Since you have cycled several OS through the EFI boot you may wish to clean up unneeded Flash entries and unneeded entries in the EFI boot partition

Hey, slow reply here, thanks for the suggestions.

I’ve tried the steps in your linked thread Susejunky, both form my Tumbleweed install and a rescue terminal form the bootUSB, without success.

An interesting result was that “blkid | grep EFI” did not list anything. When i listed my partitions using another command (can’t remember/find it right now) I saw that my EFI partition (sda1) had the “Partlabel = EF” property, where the other partitions had the names I was familiar with (example: SDA4 had “Label = Programs” which was the label that partition had under windows. Could this not being labeled as EFI be a problem?

I’ve done steps 18-19 2ish times twice now (testing with reboots once finished without sucess). I’ve reinstalled Tumbleweed again and see that the “openSUSE” entry has been removed again. I’d really prefer for my HDD to even detect there’re OS’s or GRUB before i go through that entire process again.

I’m at my wit’s end, thanks for any help you can give.

@gogalthrop
How would I do that?

In fdisk EFI boot shows as type EF00

It is not unknown for some model computers to force a Windows boot. Even to the extent of removing Windows from the UEFI boot table. However since you have run other Linux OS on the hardware I doubt that is the problem but also you may have reached the limit of the UEFI flash boot table so be sure you clean out both the flash (see man efibootmgr for details) and the EFI boot partition of all references to prior OS installs.

Hey, I just wanted to post this here as I just posted it to reddit. Hope this helps you, I just got a HP Envy laptop and was struggling with dual boot. It would just go straight into Windows. However, it sounds like your issue may be a little different. Broken boot loaders all together maybe?

I just wanted to share what I did to fix my “new” HP Envy laptop not booting into grub with my dual boot configuration as all information I found researching was rather confusing and included more steps than necessary.

So first thing, the HP Envy laptop bios only seems to allow you to reorder between USB and OS Boot Manager boot priority, and not actually choose between boot partitions. You can spam F9 when the laptop starts and it will bring up the Boot Partition Chooser. There you can choose fedora/opensuse/ubuntu, and OS Boot Manager (bootmgrfw.efi). From the information I found, HP has started creating their bios firmware to only look for and boot Windows’ bootmgrfw.efi. Pretty shady imo.

First thing, I booted into opensuse and used efibootmgr to check my boot order. Windows Boot Manager was listed as the default first boot. The odd thing, I could use efibootmgr -n 000X to set next boot to opensuse and after rebooting it would go straight to grub. When using efibootmgr -o X, X, X to change the boot order it accepted the changes but on reboot it still went directly into Windows. After returning back into opensuse and checking efibootmgr, the order had reset to Windows as the default.

The actual fix then comes down to making edits to the Windows Boot Manager since HP will only search for bootmgrfw.efi. First time I discovered this was with a Fedora/Windows dual boot system. The only step that was necessary was as such:[INDENT]• Open an elevated (Administrator) command prompt.
• Type: bcdedit /set {bootmgr} path \EFI\fedora\shimx64.efi

  • The above changes the Windows Boot Manager to use fedora’s secure boot (shimx64.efi) boot loader instead of Windows default \EFI\Microsoft\Boot\bootmgrfw.efi]
  • bcdedit /enum firmware will show you other boot operators found.

Now it seems that with Fedora it added the shimx64.efi to Windows boot partition and was able to find it. I never checked this when I had Fedora installed as it worked fine with just the path change. For me, sda2 was my Windows boot partition. Fedora’s boot partition was sda5.

With opensuse, only grubx64.efi copied to Windows boot partition. So the above fix using opensuse instead still resulted in the laptop booting directly to Windows. When you run bcdedit, you notice a line under bootmgr showing [device] which was set to [partition=HarddiskVolume2]. So for opensuse, you also had to make this change:• bcdedit /set {bootmgr} device partition=HarddiskVolumeX

  • X being whatever partition your opensuse /boot/efi partition is, 5 in my case.

So to summarize:• Log into Windows, open an elevated cmd prompt
• Type: bcdedit /set {bootmgr} path \EFI\opensuse\shim.efi (or grubx64.efi if not using secure boot)
• Type: bcdedit /set {bootmgr} device partition=HarddiskVolumeX (X being your /boot/efi partition for opensuse)

[/INDENT]

@mil1i Thanks for the response here as well, but I don’t think our problems are the same. When I first got this laptop ~3 years ago I had to diasble secureboot and a few other things in BIOS but got it to load in to Grub eventually. My problem is nothing boots on startup, I just receive a “Boot device not found” error.

@gogalthorp

bklid was the command I used to look up labels, I’ll include the reuslts of that at the end.
Default efibootmgr results:


BootCurrent: 0000
Timeout: 5 seconds
BootOrder: 2001,2002,2004
Boot0000* USB Hard Drive (UEFI) - SanDisk
Boot2001* EFI USB Device
Boot2002* EFI DVD/CDROM

Here’s the command from susejunky’s guide’s step 18 I used to add opensuse to the boot order

efibootmgr --create --disk /dev/sda --part 1 --label "openSUSE" --loader \\EFI\\opensuse\\grubx64.efi

And the results after:

BootOrder: 0001,2001,2002,2004
Boot0000* USB Hard Drive (UEFI) - SanDisk
Boot2001* EFI USB Device
Boot2002* EFI DVD/CDROM
Boot0001* openSUSE

If this is the “flash boot table” you mentioned, there don’t seem to be any superfluous entries that I can see, no leftovers from previous installations. Worringly there doens’t seem to be on for “Windows” like I can see in Susjunky’s, is this a concern? I’ll check back in with how it goes after a reboot.

blkid results

/dev/sda9: UUID="5a8201be-34f5-434f-892f-3ab0650762d0" UUID_SUB="cc1798e9-3723-4b12-8fc4-c9836a9d1bd2" TYPE="btrfs" PARTLABEL="primary" PARTUUID="2e75c1a6-769a-4e07-9e7a-09cd89ad5f0e"   
/dev/sda1: UUID="E270-7FE2" TYPE="vfat" PARTLABEL="EF" PARTUUID="bbac2286-2c50-483e-ae05-c3518f002123"                                                                                    
/dev/sda8: UUID="667ba421-fb74-4243-acbd-4c20cee13adf" TYPE="swap" PARTLABEL="primary" PARTUUID="e2b8d0f9-fbfc-4af0-9e7a-1f3f191ba97b"                                                    
/dev/sda11: UUID="f594920a-7300-4922-907a-5d19a884ffa7" TYPE="swap" PARTUUID="67ca7129-4515-481f-9fa9-48183baae5fd"                                                                       
/dev/sda3: LABEL="Windows" UUID="B6C82D0CC82CCD05" TYPE="ntfs" PARTUUID="6fb3f1be-b6e8-4219-a6f9-bf5b9d4a3e8e"                                                                            
/dev/sda4: LABEL="Programs" UUID="01D148BD7183FFF0" TYPE="ntfs" PARTUUID="47964551-b0b1-abef-8093-9415755a8d80"                                                                           
/dev/sda5: LABEL="Files" UUID="01D148BD75340FA0" TYPE="ntfs" PARTUUID="3623eba2-29f9-cde2-f62d-22627534c1ac"                                                                              
/dev/sda6: LABEL="WINRE" UUID="A46C73066C72D292" TYPE="ntfs" PARTLABEL="Ba" PARTUUID="596844d7-1a96-4c28-9336-d04f0ef613e3"                                                               
/dev/sda7: LABEL="RECOVERY" UUID="2688A5D388A5A233" TYPE="ntfs" PARTLABEL="Ba" PARTUUID="c09feac3-304b-403e-9a54-b57640ac3e8f"
/dev/sda10: UUID="336d1044-53b3-498a-893f-823cf1f0d0bd" TYPE="xfs" PARTLABEL="primary" PARTUUID="d1c20e4d-cbdc-4fc7-9134-bef5c36d79e5"


And now that I’ve rebooted, the results of efibootmgr seems to have regressed to

BootCurrent: 0000
Timeout: 5 seconds
BootOrder: 2001,2002,2004
Boot0000* USB Hard Drive (UEFI) - SanDisk
Boot2001* EFI USB Device
Boot2002* EFI DVD/CDROM