Cách đặt thời gian chờ GRUB thành 0 trên Ubuntu 18.04


11

Tôi đã cố cập nhật tệp cấu hình grub của mình thành thời gian chờ thành giá trị 0, vì vậy HĐH khởi động nhanh chóng. Tôi đã sửa đổi /etc/default/grubtệp cấu hình trên Ubuntu 18.04 và sau đó chạy:

sudo update-grub

và nó đã không hoạt động. Tôi cũng chạy:

sudo grub-mkconfig
sudo update-grub

nhưng họ đã không làm việc.

Tôi đã tìm kiếm rất nhiều trên web để giải quyết vấn đề này, nhưng tất cả các hướng dẫn đều nói chạy lệnh update-grub để cập nhật grub bằng /etc/default/grubtập tin cấu hình. Tôi không biết nếu Ubuntu 18.04 xử lý các tệp grub theo một cách khác, nhưng tôi không thể cập nhật grub của mình với các tham số của mình.

Đây là /etc/default/grubtập tin của tôi :

# 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"
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"

3
Vui lòng chỉnh sửa câu hỏi của bạn và bao gồm tập tin cấu hình grub sửa đổi của bạn. Nếu không, chúng tôi chỉ cố gắng đoán những gì bạn đã làm.
Đá cẩm thạch hữu cơ

Bạn có cài đặt bản phân phối khác (khởi động kép) không?
mook765

điều đó không có nghĩa là thời gian chờ của tôi vẫn được đặt thành 10 giây như mặc định @Melebius
Bob91

Tôi có các cửa sổ trong cùng một ssd và các bản phân phối khác được cài đặt trên hdd khác, nhưng tháng trước tôi đã có fedora 27 (thay vì ubfox 18) và nó hoạt động khi tôi thay đổi tệp cấu hình grub, vì vậy tôi nghĩ các bản phân phối khác không phải là nguyên nhân của hành vi này @ mook765
Bob91

1
Bạn có thể vui lòng chạy Boot-Infochỉnh sửa câu hỏi của bạn để bao gồm một liên kết đến nhật ký thông tin kết quả của nó không? Cảm ơn.
David Foerster

Câu trả lời:


12

Trong /boot/grub/grub.cfgtệp có một điều kiện, gần như ở cuối tệp, sẽ đặt thời gian chờ là 10 nếu thời gian chờ được đặt thành 0. Nói cách khác, nếu bạn đặt thời gian chờ là 0 trong /etc/default/grubvà sau đó cập nhật grub, thì điều kiện ở trên đặt lại thành 10 giây.

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

Tuy nhiên, /boot/grub/grub.cfglà một tệp chỉ đọc và tôi không thể loại bỏ tình trạng đó. Tôi đã thực hiện một số thử nghiệm với các giá trị khác nhau của thời gian chờ /etc/default/grub. Tôi đã thử với 1ms (0,001), 0,1 và 1 và tôi phát hiện ra rằng các giá trị dưới 1 (như 0,1 và 0,001) hoạt động theo cùng một cách và gần như thời gian chờ được đặt thành 0.


work in the same way and almost like timeoutđó là vì toán học trong bash chỉ hỗ trợ các số nguyên. Thời gian chờ ngắn nhất sẽ tạo ra sự khác biệt là 1.
Marcin Orleansowski

5

Trong trường hợp của tôi, vấn đề là hệ thống của tôi không hỗ trợ "recordfail", khiến một khối riêng biệt được thêm vào grub.cfg, mặc định là hết thời gian chờ là 30 giây. Các mã có liên quan trong /etc/grub.d/00_header:

if [ "$recordfail_broken" = 1 ]; then
  cat << EOF
if lsefi; then
  set timeout=${GRUB_RECORDFAIL_TIMEOUT:-30}
  if [ x\$feature_timeout_style = xy ] ; then
    set timeout_style=menu
  fi
fi
EOF

Việc sửa chữa chỉ đơn giản là để thêm giá trị cho GRUB_RECORDFAIL_TIMEOUTtrong /etc/default/grubvà chạy update-grublại. Ví dụ:

GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""

# Adjusted timeout for system which doesn't support recordfail
GRUB_RECORDFAIL_TIMEOUT=2

# 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"

3

Giống như các câu trả lời khác nói, không chú ý GRUB_HIDDEN_TIMEOUTvà chạy update-grub. Sau đó nhận xét

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

phần trong /boot/grub/grub.cfg. Trong vim bạn chỉ có thể ghi đè thuộc tính chỉ đọc bằng dấu chấm than :x!. Hoặc bạn có thể chạy

sudo chmod +w /boot/grub/grub.cfg
sudo vim /boot/grub/grub.cfg
sudo chmod -w /boot/grub/grub.cfg

để tạm thời có quyền ghi trong khi chỉnh sửa tập tin.


3
Bạn đúng, nhưng tôi nghĩ mỗi khi bạn cập nhật grub (thủ công hoặc khi có bất kỳ nâng cấp os nào) thì /boot/grub/grub.cfgsẽ được tạo lại với điều kiện trên.
Bob91

2
Đó là sự thật, tập tin được ghi đè lên cập nhật, như tôi đã trải nghiệm gần đây.
asantas93

1

Bạn có thể đặt GRUB_TIMEOUTthành 0.

Giá trị thời gian chờ ghi đè một phần được viết trong ajust_timeoutchức năng ở đầu /etc/grub.d/30_os-prober.

ajust_timeout () {
...
if [ "\${timeout}" = 0]; then
  set timeout=10
fi
...
}

Vì vậy, bạn có thể đặt giá trị bằng cách chỉnh sửa tệp và nhận xét if-block.


1

Bạn có thể đặt GRUB_TIMEOUTthành -1.

Ví dụ:GRUB_TIMEOUT="-1"


'GRUB_TIMEOUT' Khởi động mục nhập mặc định này nhiều giây sau khi menu được hiển thị, trừ khi nhấn phím. Mặc định là '5'. Đặt thành '0' để khởi động ngay lập tức mà không hiển thị menu hoặc '-1' để chờ vô thời hạn. từ lệnhinfo -f grub -n 'Simple configuration
Vijay


0

Chúng ta chỉ cần thêm dòng

set timeout=0

để /etc/grub.d/40_custom, làm cho tập tin thực thi với

chmod +x /etc/grub.d/40_custom

và chạy

sudo update-grub

để tạo /boot/grub/grub.cfgtệp mới . Phần mềm set timeoutchúng tôi đã thêm là phần cuối cùng set timeouttrong /boot/grub/grub.cfghiện tại, đó mới là điều quan trọng.


-1

Giải pháp là thêm

GRUB_RECORDFAIL_TIMEOUT=0

để /etc/default/grub.

Tất cả các giải pháp khác sẽ được thiết lập lại trên các bản cập nhật grub.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.