私の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の値は、以前の30ではなく5になりました。