IT‎ > ‎Софт‎ > ‎Операционные системы‎ > ‎Linux‎ > ‎

Grub2 - файл настроек /etc/default/grub

В данной статье детально рассмотрим файл настроек меню GRUB2 /etc/default/grub.

/etc/default/grub - наиболее схож по своим функциям с файлом menu.lst (GRUB1). Большинство действий по настройке GRUB2 происходит именно здесь. Чтобы редактировать /etc/default/grub, необходимо использовать права администратора.

Ниже приведён пример файла /etc/default/grub
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT="10"
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# 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 entrys
#GRUB_DISABLE_LINUX_RECOVERY="true"

GRUB_DEFAULT - отвечает за загружаемый по умолчанию пункт меню GRUB2. Параметры в данном пункте могут быть:
- числовой (начинается с "0")
- saved

GRUB_DEFAULT=0 - выбирает пункт, который будет грузиться по умолчанию, согласно заданого порядка в /boot/grub/grub.cfg. Так же, как и в предыдущем GRUB, нумерация пунктов начинается с "0", т.е. первый = 0, второй = 1 и т.д.. В /boot/grub/grub.cfg пункты, которые будут отображаться в меню, начинаются с menuentry.

GRUB_DEFAULT=saved - выбирает пункт, который был загружен в предыдущий раз. Если в настройках нашего /etc/default/grub, указано показывать меню, тогда, при выводе меню, наша запись будет подсвечена, и по прошествии времени, указаному в GRUB_TIMEOUT, загружена.

- grub-set-default - данный параметр включается при условии выставленного значения saved. Этой командой пользователь может быстро изменить ОС или ядро, которое будет загружаться по умолчанию.

Формат команды следующий: sudo grub-set-default X где X строка по счету, начинающаяся с menuentry файла /boot/grub/grub.cfg или точное название строки меню GRUB2 из той же, начинающейся с menuentry строки.

Примеры:

sudo grub-set-default 3 - используется 4 строка по счету, начинающаяся с menuentry;
sudo grub-set-default "Ubuntu, Linux 2.6.31-17-generic" - точное название, вписанное в строку, начинающуюся с menuentry.

GRUB_DEFAULT="xxxx" - так же, можно использовать точное название пункта меню, обязательно включая все сопутствующие знаки (такие как кавычки, запятые и т.д.). В таком случае порядок по счету не имеет значения.

Пример: GRUB_DEFAULT="Ubuntu, Linux 2.6.31-17-generic"

Небольшие хитрости:

Чтобы выяснить какая запись по счету нам нужна или точное название такой записи, достаточно запустить такую команду

grep menuentry /boot/grub/grub.cfg

Чтобы оперативно изменить строку, которая будет загружаться по умолчанию, мы можем править значение в строке GRUB_DEFAULT следующим образом:

Выясняем текущее значение

cat /etc/default/grub | grep 'GRUB_DEFAULT='

Вносим изменения

sudo sed 's/GRUB_DEFAULT="текущее значение"/GRUB_DEFAULT="новое значение"/g' -i /etc/default/grub

Важно - необходимо обратить внимание на вывод двух первых команд, а именно наличие/отсутствие кавычек. Поэтому, лучше всего скопировать необходимые нам данные или из первой или из второй команды и подставить в третью.

Не забываем после всего этого запустить

sudo update-grub

GRUB_TIMEOUT="10" - По сути, секция не претерпела изменений по сравнению с первым Grub и отображает время в секундах, через которое автоматически загрузится выбранный по умолчанию пункт меню.

- Выбор значения "-1" будет означать, что меню будет отображаться, до тех пор, пока пользователь сам не выберет пункт меню для загрузки;
- Для того, чтобы меню отображалось при каждой загрузке, необходимо использовать значение от 1 и выше.

Данная команда имеет определенную зависимость от команды GRUB_HIDDEN_TIMEOUT. Если выполнение GRUB_HIDDEN_TIMEOUT будет прервано нажатием кнопки SHIFT, тогда GRUB_TIMEOUT начнет свой отчет, равный количеству указанных в нем секунд.

Внимание: Нажатие кнопки SHIFT не отобразит меню, если в GRUB_TIMEOUT установлен параметр "0".

Небольшие хитрости: По аналогии с командами быстрой смены строки, которая будет грузиться по умолчанию, мы также можем изменить время отображения меню GRUB2.

Соответственно, проверяем текущее значение командой

cat /etc/default/grub | grep 'GRUB_TIMEOUT='

После чего заменяем на нужное нам

sudo sed 's/GRUB_TIMEOUT="текущее значение"/GRUB_TIMEOUT="новое значение"/g' -i /etc/default/grub

Важно - необходимо обратить внимание на вывод первой команды, а именно наличие/отсутствие кавычек, лучше всего просто скопировать вывод первой команды и подставить во вторую.

Не забываем после всего этого запустить

sudo update-grub

GRUB_HIDDEN_TIMEOUT=0 - если этот параметр не закомментирован (строка не начинается с символа #), загрузочное меню не будет отображено.

Первоначальные настройки этой строки, зависят от наличия других ОС. Если система определит наличие другой ОС - тогда, при загрузке, будет отображаться меню GRUB2, в обратном случае, меню будет скрыто, а сама строка закомментирована.

Значение параметра в строке является целым (int) (по умолчанию "0"). Если выставлено значение больше нуля, меню не будет отображено, но будет пауза размером в заданное число секунд, во время которой пользователь может вызвать меню загрузки нажатием клавиши ESC.

При выставленном значение "0", будет остутствовать задержка при загрузке и не будет отображаться меню GRUB2. Но, даже при выставленном значении "0", пользователь может заставить загрузчик отобразить меню. Для этого необходимо во время загрузки удерживать клавишу SHIFT.

Во время загрузки система проверяет наличие статуса прерывания кнопкой SHIFT. И если данный статус не определяется, тогда срабатывает небольшая задержка, в процессе которой, пользователь может отобразить меню путем нажатия кнопки ESC.

GRUB_HIDDEN_TIMEOUT_QUIET=true
- true - отсчет не будет отображаться и мы увидим только пустой экран.
- false - счетчик будет отображаться на экране, в течении времени, определенном значением,выставленном в GRUB_HIDDEN_TIMEOUT.

GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` - данная строка отвечает за названия дистрибутива, которое будет отображаться в меню GRUB2 (Ubuntu, Xubuntu, Debian, и т.д.)

GRUB_CMDLINE_LINUX - значение этого параметра будет передано в конец строки linux (в старой версии GRUB эти параметры употреблялись в строке kernel) как при нормальной загрузке, так и при загрузке в режиме восстановления.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" - назначение такое же, как и строки, указанной выше, но только для режима нормальной загрузки. Является аналогом defoptions из menu.lst. Если мы хотим в процессе загрузки видеть черный экран, на котором будет отображен процесс загрузки в тексте - нам следует удалить "quiet splash". Для того, чтобы увидеть заставку (по умолчанию, значек Убунту на черном фоне) + краткое текстовое сопровождение - используем параметр "splash".

GRUB_TERMINAL=console - расскоментируйте данную строку, и это позволит отключить графический терминал (grub-pc only). Данный прием будет полезен тем, что отключение графического режима может существенно увеличить скорость работы меню (прокрутка, отзывчивость).

GRUB_DISABLE_LINUX_UUID=true - раскомментируйте, если вы не хотите, чтобы GRUB передавал вашей системе параметр "root=UUID=xxx".

GRUB_GFXMODE=640x480 - этот пункт отвечает за разрешение графического меню GRUB2. Данный параметр предоставляет разрешение, которое поддерживается видеокартой пользователя (например: 640x480, 800x600, 1024x768, 1600×1200 - для соотношения сторон 4:3. И 640x400, 800x500, 1024x640, 1280x800, 1680x1050 - для широкоформатных мониторов с соотношением сторон 16:10). Настройки применимы только для меню загрузки. Так же у нас есть возможность увидеть все доступные разрешения для экрана из меню GRUB2. Для этого, находясь в меню, жмем "с", затем в строке grub> пишем vbeinfo.

Если строка GRUB_GFXMODE=640x480 закомментирована или выбранное разрешение недоступно, тогда GRUB2 использует настройки по умолчанию, определенные скриптом /etc/grub.d/00_header.

Несколько советов:
- Настройка одинакового разрешения в меню GRUB2 и вашей операционной системы, позволит немного уменьшить время загрузки.
- В качестве дополнительной опции, пользователь может задать битность изображения, просто добавив необходимые данные в настройку разрешения. Например так: 1280x1024x24 или 640x480x32.
- Пользователь может добавить одновременно несколько разрешений. Как это работает? А вот так, если GRUB2 не может использовать первое заданное разрешение, тогда он будет пробовать следующее и т.д. Перечень разрешений необходимо разделять запятыми.
Пример: 1280x1024x16,800x600x24,640x480.
- Если используется строка GRUB_GFXMODE= и при выполнении команды sudo update-grub вам выдается сообщение not found, просто попробуйте или добавить или изменить битность изображения.

GRUB_DISABLE_LINUX_RECOVERY=true - для того, чтобы избежать появления в меню режима Recovery, добавьте (если отсутствует) или раскомментируйте данную строку. Если вам нужен режим Recovery только для конкретно взятого ядра - вам будет нужно создать необходимую запись в скрипт /etc/grub/40_custom.

GRUB_DISABLE_OS_PROBER="true" - Включает/выключает проверку скриптом /etc/grub.d/30_os-prober наличия на других разделах операционных систем, включая такие как Windows, Linux, OSX и Hurd.

Comments