Как отключить меню grub во время загрузки в Ubuntu 20.04?

Я установил Ubuntu 20.04 вместе с Windows. Когда я загружаю систему, она показывает меню grub в течение 10 секунд, чтобы выбрать между Ubuntu и Windows. Мне не нужно это меню, я просто хочу загрузить его сразу после нажатия кнопки питания. Я заглянул в эту ветку и добавил GRUB_HIDDEN_TIMEOUT_QUIET=true и даже изменил GRUB_TIMEOUT к 0 а затем побежал sudo update-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_TIMEOUT_STYLE=hidden
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 ответа

Решение

Протестировано с двойной загрузкой двух ОС Ubuntu 20.04.

Отредактируйте следующую строку в файле /etc/default/grub файл

       GRUB_TIMEOUT=10

как это

       GRUB_TIMEOUT=0

и запустите следующую команду

       sudo update-grub

это делает таймаут равным 0 с условием, что если есть одна ОС, он будет придерживаться 0, в противном случае он будет перезаписан до 10.

в /etc/grub.d/30_os-prober файл, измените строку

       quick_boot="1"

к

       quick_boot="0"

Это предотвратит изменение значения тайм-аута на 10 секунд в случаях с несколькими ОС.

см. функцию "adjust_timeout" из файла /etc/grub.d/30_os-prober

       prefix="/usr"
exec_prefix="/usr"
datarootdir="/usr/share"
quick_boot="1"

export TEXTDOMAIN=grub
export TEXTDOMAINDIR="${datarootdir}/locale"

. "$pkgdatadir/grub-mkconfig_lib"

found_other_os=

adjust_timeout () {
  if [ "$quick_boot" = 1 ] && [ "x${found_other_os}" != "x" ]; then
    cat << EOF
set timeout_style=menu
if [ "\${timeout}" = 0 ]; then
  set timeout=10
fi
EOF
  fi
}

Когда вы хотите увидеть меню grub, нажмите Escключ во время обряда покажет вам. (время обряда варьируется в зависимости от условий, обычно после того, как меню BIOS переходит во время меню grub)

В случае, если вы хотите изменить ОС по умолчанию, вы можете установить из того же файла /etc/default/grub.

впервые войдите в меню личинки, нажав Escво время обряда. Затем подсчитайте число, начиная с 0 сверху, чтобы указать вашу любимую запись ОС.

Например, у меня две ОС 20.04.. одна в /dev/sda2 и другие в /dev/sda6 /dev/sda2по умолчанию. Если я хочу сделать тот /dev/sda6 в качестве ОС по умолчанию мне нужно найти ее номер, как показано ниже.

Итак, его позиция под номером 2.

Отредактируйте файл /etc/default/grub и измените строку

       GRUB_DEFAULT=0

к

       GRUB_DEFAULT=2

затем запустите следующую команду

       sudo update-grub

Система загрузится прямо в Ubuntu 20.04 на /dev/sda6

Хотя подход UnKNOWn действительно работает, следует по возможности избегать модификации файлов, установленных базовой системой. В этом случае (например, Ubuntu 20.04) apt-файл показывает, что /etc/grub.d/30_os-prober принадлежит пакету grub-common(это также верно для всех файлов, расположенных в /etc/grub.d/, которые используются update-grub команда для компиляции окончательного файла конфигурации GRUB):

Вывод "поиск apt-файла /etc/grub.d/30_os-prober"

Если пакет grub-commonобновляется в будущем, apt обнаружит изменение и предложит вам решить, что он должен делать (поскольку оба варианта - файл, измененный вами, а также немодифицированный файл от дистрибьютора - действительны). В худшем случае вам придется вручную сравнить и объединить содержимое файла.

Итак, каковы наши возможности, если мы хотим скрыть меню GRUB в мультизагрузочной среде? На этот раз grub-commonpackage только хочет убедиться, что каждый пользователь может переключаться между установленными операционными системами. Из-за этого сценарий /etc/grub.d/30_os-prober содержит следующий фрагмент кода:

adjust_timeout () {
  if [ "$quick_boot" = 1 ] && [ "x${found_other_os}" != "x" ]; then
    cat << EOF
set timeout_style=menu
if [ "\${timeout}" = 0 ]; then
  set timeout=10
fi
EOF
  fi
}

Этот сценарий (который выполняется после update-grubкоманда запускается) в основном позволяет вам установить пользовательский тайм-аут даже для сред с несколькими загрузками, но он не допускает тайм-аут, равный 0, поскольку начинающие пользователи, возможно, не будут знать, как загружать свои другие операционные системы без очевидного меню. Это означает, что вы можете установить GRUB_TIMEOUT значение 1, и поэтому меню GRUB будет отображаться всего на секунду перед загрузкой параметра загрузки по умолчанию.

раствор / тл; др

Но как мы можем навсегда скрыть меню GRUB, не касаясь файлов, установленных системными пакетами? К счастью, grub-commonПакет предоставляет возможность применять одноразовые настройки. Взгляните на последний файл, оцененный update-grub команда /etc/grub.d/41_custom:

#!/bin/sh
cat <<EOF
if [ -f  \${config_directory}/custom.cfg ]; then
  source \${config_directory}/custom.cfg
elif [ -z "\${config_directory}" -a -f  \$prefix/custom.cfg ]; then
  source \$prefix/custom.cfg;
fi
EOF

Хорошо, поэтому файл с именем custom.cfg, который должен быть размещен в том же месте, что и фактический файл конфигурации GRUB (/boot/grub/grub.cfg), загружается каждый раз при оценке файла конфигурации GRUB (то есть во время загрузки). Итак, давайте добавим желаемые настройки в этот файл (/boot/grub/custom.cfg):

set timeout_style=hidden
set timeout=0

Вуаля: GRUB теперь скроет меню и сразу загрузит параметр загрузки по умолчанию. Другие операционные системы по-прежнему можно загружать с помощью UEFI.

Начиная с Ubuntu 22.10 я рекомендую это:

отредактируйте файл /etc/default/grub:

      sudo nano /etc/default/grub

Убедитесь, что у вас есть эти строки:

      GRUB_TIMEOUT=0
GRUB_RECORDFAIL_TIMEOUT=0

Сохраните и выйдите из программы обновления:

      sudo update-grub
Другие вопросы по тегам