Edit of BIOS doesn't hold

I have an old Lenovo desktop with Windows 10 installed. I installed opensuse the way I have done many times before with a pc having Windows pre-installed. When I have done this in the past, on a reboot, the grub menu comes up and I can select which OS. This did not happen here.

Pressing F12 during boot brings up the menu for boot order. The menu has Windows, opensuse, opensuse uefi ; in that order. I have tried to edit this menu, moving opensuse to the top or opensuse uefi to the top. Once done moving the boot order, the option to save is “Save and reset” or “Cancel.” In this case, the save and reset always resets the boot order back to Windows on top.

I have tinkered with uefi settings but the results are always the same as above. If I press F12 during boot, then select opensuse uefi, the normal grub menu comes up and works as expected. Is there any other way to edit the bios so Windows is not the first choice for booting?

Which? Show the following:

3400G:~ # inxi -zaM
  Type: Desktop Mobo: ASUSTeK model: PRIME B450-PLUS v: Rev X.0x
    serial: <filter> UEFI: American Megatrends v: 2409 date: 12/02/2020
3400G:~ # 
  Type: Desktop System: LENOVO product: 90EDZ1DQUS v: ideacentre 700-25ISH
    serial: <superuser required>
  Mobo: LENOVO model: SKYBAY v: SDK0J40700 WIN 3258025833907
    serial: <superuser required> UEFI: LENOVO v: FWKT05A date: 09/11/2015

They have a nice manual: https://download.lenovo.com/consumer/desktop_pub/ic_700_hmm_20150924.pdf

Go to page 16, section “Selecting or changing the startup device sequence” and perform all of the six steps given.

@Prexy just use efibootmgr to change the order, look at the output “BootOrder”, then use the efibootmgr -o xxxx,yyyy,zzzz to set the order your wanting from the hex code output.

That does not work for my Lenovo box. On reboot, the BIOS sets the boot order back to where it was set via the BIOS settings.

@nrickert evil BIOS indeed!!!

I’ve long given up with Dual-Boot on an old Lenovo (Windows 8) Laptop –

  • Once the BIOS/UEFI updates had died away (need Windows to apply the BIOS/UEFI updates – I even resorted to an additional Windows-only HDD to work around the issue … ) –
    The box became “Linux-only” with Windows running in a VM …

I’ve been tinkering. Nothing I did with secureboot or CSM made a difference. It might have been my tinkering or a BIOS update, but startup has changed. Pressing F12 gives me a menu with a new appearance but essentially the same options as before. I use that menu to enter BIOS setup. Now, the start sequence menu does not even give an option to select the OS. It gives only the option which drive to select (all options: usb, CD etc). Returning back to restart and holding the F12 key, I get the option of Windows, opensuse and opensuse secure boot. All are listed as UEFI. There is a legacy option which I didn’t try.

I select opensuse secure boot and the grub menu comes up. That works as expected, including booting to windows if I choose. That’s the way I’ll have to go!

The above procedure is described in section “Selecting a temporary startup device” of the user manual on page 16 of the manual.

For making a permanent change refer to

Selecting or changing the startup device sequence

To view or permanently change the configured startup device sequence, do the following:

  1. Start the Lenovo BIOS Setup Utility program (see “Starting the Lenovo BIOS Setup Utility program” on page 13).

  2. From the Lenovo BIOS Setup Utility program main menu, select the Startup option.

  3. Press the Enter key, and select the devices for the Primary Boot Sequence. Read the information displayed on the right side of the screen.

  4. Use ↑ and ↓ arrows to select a device. Use the <+> or <-> keys to move a device up or down. Use the
    <×> key to exclude the device from or include the device in the boot sequence.

  5. Return to the Lenovo BIOS Setup Utility program menu and select the Exit option.

  6. Select Save changes and Exit from the menu.

I followed this procedure 10 or 12 times as soon as you directed to the manual. In fact, I accidentally did it the right way before referring to the manual. Each time, I tried a variation to see if something would allow for a change. Nothing did. So, I followed your procedure and wrote down the results of each step:
1 - I entered the BIOS Setup Utility by restarting and holding F1
2 - Selected Startup and pressed enter. The primary boot sequence appears.
I selected SATA1: ST1000DX001-SSHD-8GB
The 3 OS options no longer appear. There are usb options, DVD & Network options
3 - Selected EXIT from the main menu
Selected Save Changes & Exit
Pressed Enter and selected Save Configuration & Reset - Yes
Upon exit, it restarts. Holding the F12 key brings up the Startup Device Menu. Under SATA1 the options are
uefi Windows Boot Manager
uefi opensuse
uefi opensuse secureboot
I am unable to move the boot sequence selection and I accidentally boot opensuse. I restarted and changed the Startup option to uefi-only from legacy. I tried legacy to force the choice to be opensuse but that failed. Now that it was set to uefi-only, I restarted and went back to the procedure labeled 1, 2,3, above. This time, the BIOS Setup Utility shows the 3 OS options again. I move opensuse secureboot to the top of the list, saved changes and exit.

Rebooting fails to boot opensuse. Windows boots automatically again. If I hold down the F12 while booting, I can select opensuse secureboot. It brings up the grub menu and that works as expected, including booting to Windows if I select that option.

The bottom line is that I can’t edit the boot sequence. I also tried editing via efibootmgr. I made the changes and saved but upon rebooting, it returned to booting Windows. Sorry for the long post, but I wanted to be sure you could see I wasn’t ignoring recommendations or taking incorrect steps.

IIRC this behavior was a “feature” of early uefi bios to prevent wrong user settings, in a windows-only world. I still have an old (circa 2015) HP Pavilion that I could never set to boot to grub, had to press F9 at boot to choose the boot partition. Eventually the windows install in it became superfluous (and slow as molasses - thanks, windows 8) and was promoted to a very usable linux-only laptop, after a memory and ssd upgrade.

Thanks for the detailed feedback. Your version of UEFI is

UEFI: LENOVO v: FWKT05A date: 09/11/2015

A newer version is available at Lenovo 700 25ISH Drivers - Lenovo Drivers Download

See also Understanding Drivers, BIOS, UEFI, and Firmware - Lenovo Support VN

If the 700-25ISH was mine I would give it a try. Upgrading the UEFI of a Lenovo ThinkPad W530 was a smooth experience.

What about finally posting efibootmgr -v output. At least for the sake of others, to help identify such issues.

Thanks for the link. The file was the same as was already installed. I tried running the .exe file (from Windows) and it would not run. It gave a yes/no prompt about changing the BIOS file but did not respond to either choice. Just to be sure, I rebooted (twice, actually) to see if the file had changed silently. It did not and the problem persists. Perhaps it is because the pc is so far out of warranty that Lenovo has abandoned it. I will just watch the reboots to catch the place to press F12. opensuse boots normally from there.

I assume the -v stands for verbose, because it really was! Here is the output in a little easier to read form. If the verbose version would be more help, I will post.

BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0000,0008,0001,000A,0009,0003,0004
Boot0000* Windows Boot Manager HD(1,GPT,08a99c79-6fa8-4d0e-b6cf-d518821f8ca9,0x800,0x82000)/File(\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI)57494e444f5753000100000088000000780000004200430044004f0042004a004500430054003d007b00390064006500610038003600320063002d0035006300640064002d0034006500370030002d0061006300630031002d006600330032006200330034003400640034003700390035007d000000aa3a0100000010000000040000007fff0400
Boot0001* opensuse-secureboot HD(1,GPT,08a99c79-6fa8-4d0e-b6cf-d518821f8ca9,0x800,0x82000)/File(\EFI\OPENSUSE\SHIM.EFI)
Boot0003 Generic Usb Device VenHw(99e275e7-75a0-4b37-a2e6-c5385e6c00cb)
Boot0004 CD/DVD Device VenHw(99e275e7-75a0-4b37-a2e6-c5385e6c00cb)
Boot0008* opensuse HD(1,GPT,08a99c79-6fa8-4d0e-b6cf-d518821f8ca9,0x800,0x82000)/File(\EFI\OPENSUSE\GRUBX64.EFI)0000424f
Boot0009* UEFI: IPV4 Intel(R) Ethernet Connection (H) I219-LM PciRoot(0x0)/Pci(0x1f,0x6)/MAC(d8cb8ab24f55,0)/IPv4(,0,0)0000424f
Boot000A* UEFI: IPV6 Intel(R) Ethernet Connection (H) I219-LM PciRoot(0x0)/Pci(0x1f,0x6)/MAC(d8cb8ab24f55,0)/IPv6([::]:<->[::]:,0,0)0000424f

The verbose version adds that long string that follows Boot0000 to each of the other boot entries.

I extracted the FWJY47USA.exe:

6700k:~ # ll /mnt/SWTOOLS/FLASH/FWJY47USA/
total 9157
-rwxrwxrwx 1 root root  341616 Jul  1  2015 AFUWIN.EXE
-rwxrwxrwx 1 root root  313968 Aug 25  2014 AMIDEWIN.exe
-rwxrwxrwx 2 root root   14032 Dec  5  2014 AMIFLDRV32.SYS
-rwxrwxrwx 2 root root   17616 Dec  5  2014 AMIFLDRV64.SYS
-rwxrwxrwx 1 root root      49 Jul 24  2015 Flash.cmd
-rwxrwxrwx 1 root root   18680 Mar 19  2015 LeCrud.sys
-rwxrwxrwx 1 root root   21240 Mar 19  2015 LeCrud64.sys
-rwxrwxrwx 1 root root  102512 Feb 24  2012 Ucoredll.dll
-rwxrwxrwx 1 root root   15432 Nov 12  2010 Ucoresys.sys
-rwxrwxrwx 1 root root   14632 Nov 12  2010 Ucorew64.sys
-rwxrwxrwx 1 root root    4319 Apr 20  2016 changes.txt
-rwxrwxrwx 1 root root 8388608 Apr 20  2016 imagefw.rom   #################
-rwxrwxrwx 1 root root   10645 Dec 16  2015 readme.txt
-rwxrwxrwx 1 root root   84992 Jul 13  2015 wflash2.exe
6700k:~ # 

imagefw.rom has a newer date. You may refer to readme.txt and try a manual install. See also English Community-Lenovo Community

Thank you for this link. I will work on it.

@Prexy if it we me, I would just be deleting the windows and openSUSE entries and adding back in manually (with efibootmgr) to ensure openSUSE was in the 0000 location in NVRAM…

Good luck doing it. How do you add binary string using efibootmgr? Are you sure this string is always the same? How is this string computed if not?