Grub wait time 10 seconds after editing to "0" in /etc/default/grub?
Solution 1
This is a bug. The problem is in the file /etc/grub.d/30_os-prober
.
As presented here, a workaround is to add the files /etc/grub.d/25_pre-os-prober
and /etc/grub.d/35_post-os-prober
.
The two files must also be marked as executable to work.
After adding this two files, your modifications to the variable GRUB_TIMEOUT
in /etc/default/grub
should work as expected.
If you are not dual booting, another workaround is to uninstall os-prober
.
25_pre-os-prober:
#! /bin/sh
# file: /etc/grub.d/25_pre-os-prober
set -e
# Save the $timeout and $timeout_style values set by /etc/grub.d/00_header
# before /etc/grub.d/30_os-prober messes them up.
cat << EOF
set timeout_bak=\${timeout}
set timeout_style_bak=\${timeout_style}
EOF
35_post-os-prober
#! /bin/sh
# file: /etc/grub.d/35_post-os-prober
set -e
# Reset $timeout and $timeout_style to their original values
# set by /etc/grub.d/00_header before /etc/grub.d/30_os-prober messed them up.
cat << EOF
set timeout=\${timeout_bak}
set timeout_style=\${timeout_style_bak}
EOF
Solution 2
There is an override in grub for when the timeout is 0 seconds to replace it with 10 seconds. Rather than editing grub scripts as other answers recommend you can simply use:
GRUB_HIDDEN_TIMEOUT="0.0"
GRUB_TIMEOUT="0.0"
This will work because the grub overrides will not find "0"
to be equal to "0.0"
.
Solution 3
If you read the documentation at info -f grub -n 'Simple configuration'
, it is said that GRUB_HIDDEN_TIMEOUT_*
is deprecated.
Could you try using instead in /etc/default/grub
:
GRUB_TIMEOUT=0
GRUB_TIMEOUT_STYLE=hidden
#GRUB_HIDDEN_TIMEOUT="0"
#GRUB_HIDDEN_TIMEOUT_QUIET="true"
# rest of file unchanged
Run
sudo update-grub
and see if it works or not.
You could double-check in /boot/grub/grub.cfg
looking for timeout that the update has correctly been done.
Related videos on Youtube
Comments
-
RCF over 1 year
Using all of the solutions described on this site, setting the Grub menu wait time to zero does not work.
I did the following:
sudo cp /etc/default/grub /etc/default/grub.old sudo gedit /etc/default/grub
Uncommented this line, per instruction.
GRUB_HIDDEN_TIMEOUT="0"
Set this line, per instruction.
GRUB_TIMEOUT="0"
/etc/default/grub now looks like this:
# If you change this file, run 'update-grub' afterwards to update # /boot/grub/grub.cfg. # For full documentation of the options in this file, see: # info -f grub -n 'Simple configuration' GRUB_DEFAULT="0" GRUB_HIDDEN_TIMEOUT="0" GRUB_HIDDEN_TIMEOUT_QUIET="true" GRUB_TIMEOUT="0" GRUB_DISTRIBUTOR="`lsb_release -i -s 2> /dev/null || echo Debian`" GRUB_CMDLINE_LINUX_DEFAULT="quiet splash profile" 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"
Having edited the /etc/default/grub file -->
sudo update-grub
After restarting, Grub wait-time is still set to 10 seconds.
I was able to get the wait time to 1 second with just one simple change. Edited these two lines in /etc/default/grub
#GRUB_HIDDEN_TIMEOUT="0" GRUB_TIMEOUT="1"
Commented the first back to the default value, and set GRUB_TIMEOUT to "1".
After,
sudo update-grub
This solution works, but my question is:
Where is the trap that resets the TIMEOUT value to 10 seconds when GRUB-TIMEOUT is set to "0".
Maybe one of the "IF" tests in grub.cfg??
-
Qasim almost 9 yearsMay be this will help you unix.stackexchange.com/questions/119865/…
-
RCF almost 9 years@Qasim I had read that, but there is no explanation as to why Grub defaults to 10 seconds when values are set to "0" and yet if you set 'GRUB-TIMEOUT="1"' Grub functions exactly like it should, boot sequence starts in 1 second.
-
thomasrutter almost 9 yearsJust for troubleshooting purposes, does it still do this if you comment out the GRUB_HIDDEN_TIMEOUT and GRUB_HIDDEN_TIMEOUT_QUIET lines and only have the GRUB_TIMEOUT line set to 0?
-
RCF almost 9 years@thomasrutter yes, I have tried this in every possible combination using the zero value. There is something that does not allow a 0 value if you are dual booting OS's. There are a couple of accepted answers on this site stating that it will work, but that simply is not the case with Grub2 and 15.04.
-
Maxim Mazurok over 4 yearsPossible duplicate of Is it possible to completely disable Grub timeout?
-
-
RCF almost 9 yearsI'm really not desperate at all, 1 second is totally acceptable. What I am seeking is where is the trap which disallows the "0" wait time and resets to 10 seconds. Wouldn't it be reasonable to expect a warning that the "0" value is not accepted, please reset to any non-zero number?
-
Daniel almost 9 yearsIt would be reasonable to expect that, but it's also reasonable for the devs to expect users to not need to change it. Is update-grub a binary file? or is it just a script?
-
RCF almost 9 yearsyou should be able to answer your Grub question here -> [help.ubuntu.com/community/Grub2]
-
Menasheh over 7 yearsDidn't work for me.
-
Maxim Mazurok over 4 yearsI've edited
30_os-prober
on Ubuntu 19.10 and it worked like a charm, here are the exact steps: askubuntu.com/a/1189737/518931 -
David about 2 yearsYour answer does not address what the OP asked.