使用该站点上描述的所有解决方案,将 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
。