Linux dual-boot fails unless open bios first

I'm having a problem with a linux/windows dual boot system. If power on the system or do a system restart, my grub menu disappears and I am left just at this Grub screen:

enter image description here

However, if I boot and open the bios....and don't change anything, just exit...It works...

enter image description here

enter image description here

I'm at the limits of linux-fu so any help would be greatly appreciated.

**** Update ****

I've run

sudo update-grub

and no effect. Here is the contents of my /etc/default/grub file:

GRUB_DEFAULT="0"
GRUB_TIMEOUT_STYLE="hidden"
GRUB_TIMEOUT="10"
GRUB_DISTRIBUTOR="`lsb_release -i -s 2> /dev/null || echo Debian`"
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL="console"

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
GRUB_GFXMODE="640x480"

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID="true"

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
~ 


                           

Thye easiest way to fix would likely be simply running the following command:

$  sudo update-grub

This obviously runs the grub updater. That should reset so thyat the intended defaults are restored.

If this does not work, another way of getting the Grub menu to show on startup is to explicitly define the behaviour. In the file /etc/defaults/grub there may or may not be a line that reads

$  GRUB_HIDDEN_TIMEOUT= N

where N is a number. This defines that the grub menu should be displayed on boot for exactly N seconds. Once that iime elapses, the default will be loaded.

The behavior that you described is as if it were set to zero. Check the defaults/grub to see if the line

$  GRUB_HIDDEN_TIMEOUT=0

is present. if it is, then change the 0 to a number between 45 and 90 (or however many seconds you prefer it to be displayed for.) After it is changed, save the file and reboot. Remember, if you pull it up in a command line editor like nvim, nano, emacs, or gedit, you will need to use sudo or else you will not be able to save.


I don't think I have an answer for that But I had a kind of similar issue but I got it fixed by using REfind as my boot manager instead and then went into the bios and made it the first in the boot order then went back to my xubuntu and made it first in the uefi boot order then went back again to windows and used an efi tool editor to make it again the first in the boot order and at the last I did another bios boot order change to make it at top again, then it just worked fine I am sure this might not help but I thought it might be related