在 /etc/default/grub 中编辑为“0”后,Grub 等待时间为 10 秒?

在 /etc/default/grub 中编辑为“0”后,Grub 等待时间为 10 秒?

使用该站点上描述的所有解决方案,将 Grub 菜单等待时间设置为零都不起作用。

我做了以下事情:

sudo cp /etc/default/grub /etc/default/grub.old    
sudo gedit /etc/default/grub

根据指令,取消注释此行。

GRUB_HIDDEN_TIMEOUT="0"

按照指令设置此行。

GRUB_TIMEOUT="0"

/etc/默认/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 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"

编辑了/etc/默认/grub文件 -->

sudo update-grub

重启后,Grub 等待时间仍然设置为 10 秒。

我能够得到等待时间为 1 秒只需进行一个简单的更改。编辑了以下两行/etc/默认/grub

#GRUB_HIDDEN_TIMEOUT="0"

GRUB_TIMEOUT="1"  

将第一个注释掉恢复为默认值,并将 GRUB_TIMEOUT 设置为“1”。

后,

sudo update-grub

这个解决方案有效,但我的问题是:

当 GRUB-TIMEOUT 设置为“0”时,将 TIMEOUT 值重置为 10 秒的陷阱在哪里。

也许其中一个“如果”测试grub配置文件??

答案1

这是一个漏洞。问题出在文件上/etc/grub.d/30_os-prober

正如所呈现的这里,一种解决方法是添加文件/etc/grub.d/25_pre-os-prober/etc/grub.d/35_post-os-prober

这两个文件还必须标记为可执行文件才能运行。

GRUB_TIMEOUT添加这两个文件后,您对变量的修改/etc/default/grub应该可以按预期工作。

如果你是不是双重启动,另一个解决方法是卸载os-prober

25_预操作系统探测器:

#! /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-探测器

#! /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

答案2

当超时时间为 0 秒时,grub 中有一个覆盖功能,可以将其替换为 10 秒。您无需像其他答案建议的那样编辑 grub 脚本,只需使用:

GRUB_HIDDEN_TIMEOUT="0.0"
GRUB_TIMEOUT="0.0"

这将起作用,因为 grub 覆盖将找不到"0"等于"0.0"

答案3

如果您阅读了 的文档info -f grub -n 'Simple configuration',您会发现它GRUB_HIDDEN_TIMEOUT_*已被弃用。

您可以尝试使用/etc/default/grub

GRUB_TIMEOUT=0
GRUB_TIMEOUT_STYLE=hidden
#GRUB_HIDDEN_TIMEOUT="0"
#GRUB_HIDDEN_TIMEOUT_QUIET="true"
# rest of file unchanged

跑步

sudo update-grub

看看它是否有效。

你可以再检查一遍/boot/grub/grub.cfg寻找暂停更新已正​​确完成。

答案4

編輯/etc/default/grub不足。

还需要进行以下修改:

使用以下方法之一禁用 grub 超时:

sudoedit /boot/grub/grub.cfg  

注释掉这些行(通过#在行首放置一个)

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

保存文件并退出。

或者(更好,因为每次生成文件时都需要重新执行上述操作,每当update-grub调用时都会发生这种情况):

sudoedit /etc/grub.d/30_os-prober

注释掉这些行

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

保存,退出然后运行sudo update-grub

相关内容