Содержание
Конфигурация GRUB
Настройка Grub с помощью Grub Customizer
Это самый простой путь конфигурации загрузчика. Графическая программа настройки Grub Customizer позволяет настроить все основные параметры загрузчика, например, фоновое изображение, шрифт, порядок пунктов загрузки, параметры ядра и многое другое.
Программа доступна в официальных репозиториях большинства дистрибутивов.
Для установки в Debian выполните:
sudo apt update sudo apt install grub-customizer -y
Последующий запуск осуществляется через главное меню или из консоли вводом команды:
grub-customizer
После внесения через программу Grub Customizer всех желаемых изменений, нажмите кнопку «Сохранить» и утилита автоматически сгенерирует обновленный файл конфигурации GRUB.
Примечание: После сохранения выполненных изменений, чтобы увидеть обновленное меню GRUB небходимо перезагрузить систему.
Если изменения внесенные через Grub Customizer не видны после перезагрузки, выполните следующую команду, чтобы вручную обновить GRUB:sudo update-grub
Программа Grub Customizer позволяет изменять только базовые параметры, если же нужна более тонкая настройка загрузчика Grub, это необходимо делать посредством ручной настройки конфигурационных файлов.
Настройка Grub через конфигурационные файлы
Существует два способа настройки Grub через конфигурационные файлы.
- Через конфигурационный файл
/etc/default/grubутилиты grub-mkconfig, который позволяет задать общие параметры для загрузчика - Через ручное редактирование
/boot/grub/grub.cfg
Первый способ - рекомендованный, и с помощью него можно настроить большинство параметров, и в этом случае настройки не собьются когда вы обновите ядро или загрузчик. Второй гораздо более гибкий, но после любого обновления вы потеряете свои настройки.
Поэтому если что-то можно настроить через /etc/default/grub то настраиваем через него, все остальное - через /boot/grub/grub.cfg .
Настройка Grub через редактирование файла /etc/default/grub
Список параметров, которые можно настроить данным способом:
- GRUB_DEFAULT - указывает какой пункт нужно загружать по умолчанию. Может быть указан номер, или полное название или же строка saved, которая значит, что нужно загрузить пункт, указанный с помощью grub-reboot;
- GRUB_SAVEDEFAULT - загружать последнюю использованную запись по умолчанию;
- GRUB_HIDDEN_TIMEOUT - сколько секунд ждать перед тем, как вывести меню;
- GRUB_HIDDEN_TIMEOUT_QUIET - если установлено true, то меню не будет показано;
- GRUB_TIMEOUT - сколько секунд будет показано меню;
- GRUB_CMDLINE_LINUX - добавить опции ядра для всех ядер, как обычных, так и режима восстановления;
- GRUB_CMDLINE_LINUX_DEFAULT - добавить опции ядра только для обычных ядер;
- GRUB_CMDLINE_LINUX_RECOVERY - опции ядра, только для режима восстановления;
- GRUB_BADRAM - указать адреса оперативной памяти, которые не нужно использовать;
- GRUB_TERMINAL - модуль терминала для Grub. Можно использовать console только для текстового режима или gfxterm с поддержкой графики;
- GRUB_GFXMODE - разрешение экрана в Grub, лучшие использовать auto, чтобы система выбрала сама то что ей нужно.
- GRUB_DISABLE_RECOVERY - не включать в меню пункты восстановления;
- GRUB_DISABLE_OS_PROBER - не искать другие операционные системы;
- GRUB_BACKGROUND - адрес картинки для фона, должна находиться в той же папке что и файлы grub;
- GRUB_THEME - устанавливает тему Grub.
Пример стандартного конфигурационного файла:
GRUB_DEFAULT=0 GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX=""
Здесь:
- GRUB_DEFAULT=0 — загружается первая запись в меню GRUB.\
- GRUB_TIMEOUT=5 — пауза в секундах перед автозагрузкой.\
- GRUB_CMDLINE_LINUX_DEFAULT=«quiet splash» — параметры, которые передаются ядру (по умолчанию он загружается без лишнего вывода).\
- GRUB_CMDLINE_LINUX — дополнительные параметры, которые работают во всех режимах.
После внесения изменений в файл /etc/default/grub для обновления непосредственного конфигурационного файла загрузчика GRUB (т.е. файла /boot/grub/grub.cfg) необходимо выполнить команду:
sudo update-grub
Примечание:
Если при обновлении GRUB возникает ошибка, например: «sudo: update-grub: command not found», это означает, что командаupdate-grubне является стандартной, а является псевдонимом и выполняет вместо себя командуsudo grub-mkconfig -o /boot/grub/grub.cfg
в данном случае необходимо выплонить указанную команду непосредственно.
Настройка Grub через /boot/grub/grub.cfg
Файл /etc/boot/grub/grub.cfg управляет непосредственно работой загрузчика, здесь указаны все его параметры и настройки, а также сформировано меню. Изменяя этот файл можно настроить Grub как угодно.
Синтаксис файла напоминает синтаксис bash и состоит из нескольких команд, которые что-то делают, загружают и настраивают. Команды могут быть объединены в функции или блоки с помощью инструкций if else, синтаксис которых аналогичен bash.
Основные из этих команд:
- load_env - загрузить переменные окружения из файла;
- set - установить значение переменной окружения. Используется как
set имя_переменной=значение; - insmod - загрузить модуль из папки с модулями Grub;
- linux - загружает ядро Linux;
- initrd - подготавливает образ initrd для загрузки ядра;
- boot - пытается загрузить систему;
- chainloader - запускает загрузчик из другого раздела;
- search - установить значение переменной выполнив поиск по заданным параметрам, например, может найти диск по его UUID или метке;
- menuentry - позволяет создать пункт меню;
Поскольку на практике наиболее часто используются последние две команды рассмотрим их подробно:
Команда search используется для поиска дисков и имеет такой синтаксис:
$ search опции_поиска --set=имя_переменной --hint приметы_устройства основной_параметр
здесь:
- опции_поиска - задают по какому критерию нужно искать, например, --fs-uuid - искать по UUID, --label - по метке, --no-floppy - не искать в съемных носителях.
- приметы устройства - дают программе дополнительные подсказки для более быстрого поиска;
- основной параметр - значение, по которому будем выполнять поиск.
Например, команда может выглядеть вот так:
$ search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint='hd0,msdos5' c52ca066-e48f-4df2-bc7e-4d885a354090
Команда menuentry используется для создания пунктов меню, с помощью которых будут загружаться операционные системы и дистрибутивы linux. Синтаксис этой команды такой:
menuentry имя_пункта {
команды установки переменных окружения
загрузка модулей
linux файл_ядра параметры_ядра
initrd файл_initrd
}
Для нормальной загрузки операционной системы сначала необходимо установить корневой раздел, для чего, возможно, нужно загрузить некоторые модули, дальше нужно запустить ядро с нужными параметрами и добавить образ initrd если это требуется.\ Поэтому самый простой пример пункта меню будет такой:
menuentry "Ubuntu" {
set root=(hd0,1)
linux /casper/vmlinuz boot=casper noeject noprompt splash
initrd /casper/initrd.lz
}
Пример самого просто конфигурационного файла /boot/grub/grub.cfg для Grub созданного вручную
# Время показа меню загрузчика GRUB 5 секунд
set timeout=5
# Устанавливаем разрешение экрана и указываем что это же разрешение нужно сохранять для ядра:
set gfxmode="1280x800"
set gfxpayload=keep
# Загружаем модули необходимые для работы видео режима, это нужно для использования фоновой картинки
insmod vbe
insmod gfxterm
terminal_output gfxterm
# Устанавливаем шрифт с поддержкой Unicode:
font "/boot/grub2/fonts/unicode.pf2"
loadfont unicode
# Загружаем модуль работы с jpeg и задаём фоновый рисунок:
insmod jpeg
background_image "/boot/fon.jpg"
# Устанавливаем переменные окружения для настройки цвета меню:
set menu_color_normal=red/black
set menu_color_highlight=yellow/black
set color_normal=yellow/black
# Пункты меню для операционных систем:
menuentry "Ubuntu" {
root=(hd0,1)
linux /casper/vmlinuz boot=casper noeject noprompt splash
initrd /casper/initrd.lz
}
menuentry "OpenSUSE" {
insmod gzio
insmod part_msdos
insmod ext2
set root='hd0,msdos5'
linux /boot/vmlinuz-4.1.31-30-default root=UUID=c52ca066-e48f-4df2-bc7e-4d885a354090 resume=/dev/sda7 splash=silent quiet showopts
initrd /boot/initrd-4.1.31-30-default
}
Если знать как примерно выглядит конфигурационный файл Grub, то можно разобраться и с файлом, созданным автоматически. Например - пункты с указанием ОС в меню выводятся по порядку, поэтому чтобы поменять их местами будет достаточно поменять местами команды в файле.
