Ubuntu của tôi luôn có thời gian chờ là 30 giây hoặc tôi có thể đặt giá trị hay không. Sau đây là cách tôi phát hiện ra rằng recordfail là giá trị còn thiếu .
1. Xác minh tập lệnh grub thực tế /boot/grub/grub.cfg
IMHO, cách tốt nhất để xác minh những gì Grub sẽ làm, là mở /boot/grub/grub.cfg. Đó là tập lệnh được tạo tự động bằng grub-mkconfigcách sử dụng các mẫu từ/etc/grub.d và cài đặt từ /etc/default/grub.
Xung quanh dòng 109, bạn sẽ thấy một cái gì đó như:
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
Trong trường hợp của tôi với sự trợ giúp của tập lệnh được tạo đó, tôi có thể phát hiện ra rằng recordfailbiến không được đặt.
2. Nếu recordfailbiến không được đặt, đặt nó
Mở /etc/default/grubtrong trình soạn thảo văn bản yêu thích của bạn (ví dụ vim) và sau đó đặt biến GRUB_RECORDFAIL_TIMEOUTthành một giá trị nhất định, ví dụ 5 giây.
Tệp cấu hình của bạn sẽ giống như:
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. Cập nhật cấu hình để chạy với update-grub
Bước cuối cùng, cập nhật cấu hình để chạy với update-grub. Hiện tại, GRUB2 sẽ sử dụng thời gian chờ đã đặt. Lệnh này sẽ tạo lại /boot/grub.cfgtập tin.
4. Xác minh kết quả tập lệnh đã tạo
Một lần nữa, mở /boot/grub.cfgvà kiểm tra kết quả xung quanh dòng 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
Lưu ý rằng giá trị ở dòng 109 bây giờ là 5 thay vì 30 như trước đây.