Это самый простой путь конфигурации загрузчика. Графическая программа настройки 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 через конфигурационные файлы.
/etc/default/grub утилиты grub-mkconfig, который позволяет задать общие параметры для загрузчика/boot/grub/grub.cfg
Первый способ - рекомендованный, и с помощью него можно настроить большинство параметров, и в этом случае настройки не собьются когда вы обновите ядро или загрузчик. Второй гораздо более гибкий, но после любого обновления вы потеряете свои настройки.
Поэтому если что-то можно настроить через /etc/default/grub то настраиваем через него, все остальное - через /boot/grub/grub.cfg .
Список параметров, которые можно настроить данным способом:
Пример стандартного конфигурационного файла:
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=""
Здесь:
После внесения изменений в файл /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
в данном случае необходимо выплонить указанную команду непосредственно.
Файл /etc/boot/grub/grub.cfg управляет непосредственно работой загрузчика, здесь указаны все его параметры и настройки, а также сформировано меню. Изменяя этот файл можно настроить Grub как угодно.
Синтаксис файла напоминает синтаксис bash и состоит из нескольких команд, которые что-то делают, загружают и настраивают. Команды могут быть объединены в функции или блоки с помощью инструкций if else, синтаксис которых аналогичен bash.
Основные из этих команд:
set имя_переменной=значение;Поскольку на практике наиболее часто используются последние две команды рассмотрим их подробно:
Команда search используется для поиска дисков и имеет такой синтаксис:
$ search опции_поиска --set=имя_переменной --hint приметы_устройства основной_параметр
здесь:
Например, команда может выглядеть вот так:
$ 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
}
# Время показа меню загрузчика 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, то можно разобраться и с файлом, созданным автоматически. Например - пункты с указанием ОС в меню выводятся по порядку, поэтому чтобы поменять их местами будет достаточно поменять местами команды в файле.