Как отключить меню 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
