Как установить время ожидания 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 по-другому, но я не могу обновить свой 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

это не сработало, это означает, что мой тайм-аут grub по-прежнему установлен на 10 секунд, как по умолчанию @Melebius
Bob91,

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

1
Не могли бы вы запустить Boot-Info и отредактировать свой вопрос, добавив ссылку на его итоговый информационный журнал? Благодарю.
Дэвид Фёрстер

Ответы:


12

В /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. Я попытался с 1 мс (0,001), 0,1 с и 1 с, и я обнаружил, что значения ниже 1 (например, 0,1 и 0,001) работают таким же образом и почти как время ожидания установлено на 0.


work in the same way and almost like timeoutэто потому, что математика в Bash поддерживает только целые числа. Кратчайший тайм-аут, который будет иметь значение 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_TIMEOUTin /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 (вручную или когда происходит обновление ОС) /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.

Все остальные решения будут сброшены при обновлении grub.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.