Як встановити час очікування GRUB на 0 в Ubuntu 18.04


11

Я спробував оновити свій конфігураційний файл grub до таймауту до значення 0, тому ОС швидко запускається. Я змінив /etc/default/grubфайл конфігурації на своєму Ubuntu 18.04, а потім запустив:

sudo update-grub

і це не спрацювало. Я також бігав:

sudo grub-mkconfig
sudo update-grub

але вони не працювали.

Я багато шукав в Інтернеті, щоб вирішити цю проблему, але всі посібники кажуть виконати команду update-grub, щоб оновити grub по /etc/default/grubконфігураційному файлу. Я не знаю, чи є Ubuntu 18.04, який обробляє файли grub по-іншому, але я не можу оновити свою групу за своїми параметрами.

Це мій /etc/default/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"
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
Відредагуйте своє запитання та додайте змінений конфігураційний файл grub. Інакше ми просто намагаємось відгадати, що ти зробив.
Органічний мармур

У вас встановлені інші дистрибутиви (подвійне завантаження)?
mook765

це не спрацювало, означає, що час мого тайм-ауту все ще встановлено на 10 секунд, як за замовчуванням @Melebius
Bob91

У мене є вікна в тому ж ssd та інші дистрибутиви, встановлені на інших hdd, але минулого місяця у мене була fedora 27 (замість ubuntu 18), і вона працювала, коли я змінив конфігураційний файл grub, тому я думаю, що інші дистрибутиви не є причинами така поведінка @ mook765
Bob91

1
Чи можете ви запустити Boot-Info та відредагувати своє запитання, щоб включити посилання на його інформаційний журнал? Дякую.
Девід Фоерстер

Відповіді:


13

У /boot/grub/grub.cfgфайлі є умова, майже в кінці файлу, яка встановлює час очікування на 10, якщо час очікування встановлено на 0. Іншими словами, якщо встановити тайм-аут у 0, /etc/default/grubа потім оновити grub, умова вище скиньте його на 10 секунд.

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

Однак /boot/grub/grub.cfgце файл лише для читання, і я не можу видалити цю умову. Я зробив кілька тестів з різними значеннями тайм-ауту в /etc/default/grub. Я спробував з 1ms (0,001), 0,1s та 1s, і я з'ясував, що значення нижче 1 (наприклад, 0,1 і 0,001) працюють аналогічно і майже як час очікування встановлено на 0.


work in the same way and almost like timeoutце тому, що математика в баші підтримує лише цілі числа. Найкоротший тайм-аут, який змінив би це 1.
Марцін Орловський

6

У моєму випадку проблема полягала в тому, що моя система не підтримувала "recordfail", що спричинило додавання окремого блоку до grub.cfg, який за замовчуванням триває 30 секунд. Відповідний код у /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

Виправлення просто додати значення GRUB_RECORDFAIL_TIMEOUTв /etc/default/grubі запустити update-grubзнову. Наприклад:

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

Як і в інших відповідях, скажіть, скаментуйте GRUB_HIDDEN_TIMEOUTта біжіть update-grub. Потім прокоментуйте це

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

розділ в /boot/grub/grub.cfg. У vim ви можете просто змінити властивість лише для читання зі знаком оклику :x!. Або ти можеш бігати

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

тимчасово мати дозвіл на запис під час редагування файлу.


3
Ви маєте рацію, але я думаю, щоразу, коли ви оновлюєте grub (вручну або коли є будь-яке оновлення os), це /boot/grub/grub.cfgбуде відтворено з умовою вище.
Bob91

2
Це правда, файл перезаписується під час оновлення, як я нещодавно переживав.
asantas93

1

Ви можете встановити GRUB_TIMEOUTна 0.

Значення тайм-ауту, що перезаписує частину, записується у ajust_timeoutфункцію у верхній частині /etc/grub.d/30_os-prober.

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

Отже, ви можете встановити значення, відредагувавши файл та прокоментувавши if-block.


1

Ви можете встановити GRUB_TIMEOUTна -1.

Наприклад:GRUB_TIMEOUT="-1"


'GRUB_TIMEOUT' Завантажте за замовчуванням запис через багато секунд після відображення меню, якщо не натиснута клавіша. За замовчуванням - 5. Встановіть "0" для завантаження відразу, не відображаючи меню, або "-1", щоб чекати нескінченно. від командиinfo -f grub -n 'Simple configuration
Віджай


0

Ми можемо просто додати рядок

set timeout=0

до /etc/grub.d/40_custom, зробити файл виконуваним за допомогою

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

і біжи

sudo update-grub

для створення нового /boot/grub/grub.cfgфайлу. set timeout-Command ми додали це останню set timeout-команда в /boot/grub/grub.cfgзараз, це те , що має значення.


-1

Рішення - додати

GRUB_RECORDFAIL_TIMEOUT=0

до /etc/default/grub.

Усі інші рішення будуть скинуті під час оновлень.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.