我的Ubuntu总是有30秒的超时时间,无论我是否要设置值。以下是我如何发现recordfail是缺少的值。
1.验证实际的grub脚本 /boot/grub/grub.cfg
恕我直言,验证Grub将执行的操作的最佳方法是打开/boot/grub/grub.cfg
。它是grub-mkconfig
使用中的模板/etc/grub.d
和中的设置自动生成的脚本/etc/default/grub
。
在109行附近,您会看到类似以下内容:
108 if [ "${recordfail}" = 1 ] ; then
109 set timeout=30 # Note here this value
110 else
111 if [ x$feature_timeout_style = xy ] ; then
112 set timeout_style=hidden
113 set timeout=3
114 # Fallback hidden-timeout code in case the timeout_style feature is
115 # unavailable.
116 elif sleep --interruptible 3 ; then
117 set timeout=0
118 fi
119 fi
以我生成的脚本为例,我可以发现该recordfail
变量未设置。
2.如果recordfail
未设置变量,请进行设置
/etc/default/grub
在您喜欢的文本编辑器(例如vim)中打开,然后将变量GRUB_RECORDFAIL_TIMEOUT
设置为给定值,例如5秒。
您的配置文件应如下所示:
GRUB_DEFAULT=0
GRUB_TIMEOUT=3
GRUB_TIMEOUT_STYLE=hidden
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
GRUB_RECORDFAIL_TIMEOUT=5
3.更新配置以运行 update-grub
最后一步,更新配置以使其运行update-grub
。现在,GRUB2将使用设置的超时时间。此命令将重新生成/boot/grub.cfg
文件。
4.验证生成的脚本结果
再次,打开/boot/grub.cfg
并检查第109行的结果:
108 if [ "${recordfail}" = 1 ] ; then
109 set timeout=5 # Note here this value
110 else
111 if [ x$feature_timeout_style = xy ] ; then
112 set timeout_style=hidden
113 set timeout=3
114 # Fallback hidden-timeout code in case the timeout_style feature is
115 # unavailable.
116 elif sleep --interruptible 3 ; then
117 set timeout=0
118 fi
119 fi
请注意,第109行的值现在为5,而不是以前的30。