如何在Ubuntu 18.04上将GRUB超时设置为0


11

我尝试将grub配置文件更新为0值超时,因此OS快速启动。我/etc/default/grub在Ubuntu 18.04上修改了配置文件,然后运行:

sudo update-grub

而且没有用 我还跑了:

sudo grub-mkconfig
sudo update-grub

但是他们没有用。

我在网上进行了大量搜索以解决此问题,但是所有指南都说要运行update-grub命令以通过/etc/default/grub配置文件更新grub 。我不知道Ubuntu 18.04是否以其他方式处理grub文件,但是我无法使用参数更新grub。

这是我的/etc/default/grub文件:

# 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"
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"

3
请编辑您的问题,并包括修改后的grub配置文件。否则,我们只是在猜测您做了什么。
有机大理石

您是否安装了其他发行版(双启动)?
mook765 '18

它不起作用意味着我的grub超时仍默认设置为10秒@Melebius
Bob91

我在相同的ssd上安装了Windows,并且在其他硬盘上安装了其他发行版,但是上个月我安装了fedora 27(而不是ubuntu 18),并且当我更改grub配置文件时它起作用了,所以我认为其他发行版不是造成这种情况的原因。这种行为@ mook765
Bob91

1
您能否运行Boot-Info编辑问题以包括指向其结果信息日志的链接?谢谢。
大卫·佛斯特

Answers:


13

/boot/grub/grub.cfg文件中,几乎所有文件的末尾都有一个条件,如果将超时设置为0,则将超时设置为10。换句话说,如果在您的/etc/default/grubgrub 中将超时设置为0 ,然后更新grub,则上述条件将其重置为10秒。

if [ "${timeout}" = 0 ]; then
     set timeout=10
fi

但是,这/boot/grub/grub.cfg是一个只读文件,因此我无法删除该条件。我使用中的不同超时值进行了一些测试/etc/default/grub。我尝试使用1ms(0.001),0.1s和1s,发现低于1的值(例如0.1和0.001)以相同的方式工作,几乎就像将超时设置为0。


work in the same way and almost like timeout那是因为bash中的数学仅支持整数。最短的超时时间会有所不同1
Marcin Orlowski '19

6

就我而言,问题是我的系统不支持“ recordfail”,这导致将单独的块添加到grub.cfg中,默认情况下超时为30秒。中的相关代码/etc/grub.d/00_header

if [ "$recordfail_broken" = 1 ]; then
  cat << EOF
if lsefi; then
  set timeout=${GRUB_RECORDFAIL_TIMEOUT:-30}
  if [ x\$feature_timeout_style = xy ] ; then
    set timeout_style=menu
  fi
fi
EOF

解决方法只是为GRUB_RECORDFAIL_TIMEOUTin 添加一个值,/etc/default/grub然后update-grub再次运行。例如:

GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""

# Adjusted timeout for system which doesn't support recordfail
GRUB_RECORDFAIL_TIMEOUT=2

# 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"

3

就像其他答案一样,取消注释GRUB_HIDDEN_TIMEOUT并运行update-grub。然后注释掉

if [ "${timeout}" = 0 ]; then
  set timeout=10
fi

中的部分/boot/grub/grub.cfg。在vim中,您可以使用感叹号覆盖只读属性:x!。或者你可以跑步

sudo chmod +w /boot/grub/grub.cfg
sudo vim /boot/grub/grub.cfg
sudo chmod -w /boot/grub/grub.cfg

在编辑文件时暂时具有写权限。


3
您是对的,但我认为每次您更新grub(手动或进行任何OS升级)时,/boot/grub/grub.cfg都会使用上述条件重新创建。
Bob91

2
是的,正如我最近遇到的那样,文件在更新时被覆盖。
asantas93

1

您可以设置GRUB_TIMEOUT0

部分覆盖超时值写在ajust_timeout函数的顶部/etc/grub.d/30_os-prober

ajust_timeout () {
...
if [ "\${timeout}" = 0]; then
  set timeout=10
fi
...
}

因此,您可以通过编辑文件并注释掉if-block来设置值。


1

您可以设置GRUB_TIMEOUT-1

例如:GRUB_TIMEOUT="-1"


'GRUB_TIMEOUT'除非显示任何键,否则在显示菜单后数秒钟引导默认条目。默认值为“ 5”。设置为“ 0”可立即启动而不显示菜单,设置为“ -1”则无限期等待。从命令info -f grub -n 'Simple configuration
维杰


0

我们可以简单地添加行

set timeout=0

/etc/grub.d/40_custom,使文件可执行

chmod +x /etc/grub.d/40_custom

并运行

sudo update-grub

生成新的/boot/grub/grub.cfg文件。该set timeout-Command我们增加是最后set timeout的-command /boot/grub/grub.cfg现在,这一点很重要。


-1

解决方法是添加

GRUB_RECORDFAIL_TIMEOUT=0

/etc/default/grub

所有其他解决方案将在grub更新时重置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.