Инструменты пользователя

Инструменты сайта


linux:administration:cofiguration_grub

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
linux:administration:cofiguration_grub [2025/06/10 19:34] – so_v_alinux:administration:cofiguration_grub [2026/09/16 11:41] (текущий) – so_v_a
Строка 1: Строка 1:
 +<!DOCTYPE markdown>
 +
 # Конфигурация GRUB # Конфигурация GRUB
  
-Основной конфигурационный файл: `/etc/default/grub` 
  
-Пример стандартного конфигурационного файла:+## Настройка Grub с помощью Grub Customizer
  
 +Это самый простой путь конфигурации загрузчика. Графическая программа настройки *Grub Customizer* позволяет настроить все основные параметры загрузчика, например, фоновое изображение, шрифт, порядок пунктов загрузки, параметры ядра и многое другое.
  
-GRUB\_DEFAULT=0 \\ +Программа доступна в официальных репозиториях большинства дистрибутивов. 
-GRUB\_TIMEOUT=5 \\+ 
 +Для установки в Debian выполните: 
 +``` 
 +sudo apt update 
 +sudo apt install grub-customizer -y 
 +``` 
 + 
 +Последующий запуск осуществляется через главное меню или из консоли вводом команды: 
 +``` 
 +grub-customizer 
 +``` 
 + 
 +После внесения через программу Grub Customizer всех желаемых изменений, нажмите кнопку "Сохранить" и утилита автоматически сгенерирует обновленный файл конфигурации GRUB. 
 + 
 +<blockquote>_Примечание_: После сохранения выполненных изменений, чтобы увидеть обновленное меню GRUB небходимо перезагрузить систему.   
 +Если изменения внесенные через Grub Customizer не видны после перезагрузки, выполните следующую команду, чтобы вручную обновить GRUB: 
 +``` 
 +sudo update-grub 
 +``` 
 +</blockquote> 
 + 
 +Программа 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_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
 GRUB_CMDLINE_LINUX="" GRUB_CMDLINE_LINUX=""
-ˋˋˋ+```
  
-Здесь: +Здесь:   
- +- GRUB\_DEFAULT=0 — загружается первая запись в меню GRUB.\\ 
-- GRUB\_DEFAULT=0 — загружается первая запись в меню GRUB. +- GRUB\_TIMEOUT=5 — пауза в секундах перед автозагрузкой.\\ 
-- GRUB\_TIMEOUT=5 — пауза в секундах перед автозагрузкой. +- GRUB\_CMDLINE\_LINUX\_DEFAULT="quiet splash" — параметры, которые передаются ядру (по умолчанию он загружается без лишнего вывода).\\
-- GRUB\_CMDLINE_LINUX_DEFAULT="quiet splash" — параметры, которые передаются ядру (по умолчанию он загружается без лишнего вывода).+
 - GRUB\_CMDLINE\_LINUX — дополнительные параметры, которые работают во всех режимах. - GRUB\_CMDLINE\_LINUX — дополнительные параметры, которые работают во всех режимах.
  
 +После внесения изменений в файл `/etc/default/grub` для обновления непосредственного конфигурационного файла загрузчика GRUB (т.е. файла `/boot/grub/grub.cfg`) необходимо выполнить команду:
 +```
 +sudo update-grub
 +```
 +
 +<blockquote>Примечание:  
 +Если при обновлении GRUB возникает ошибка, например: "sudo: update-grub: command not found", это означает, что команда `update-grub` не является стандартной, а является псевдонимом и выполняет вместо себя команду `sudo grub-mkconfig -o /boot/grub/grub.cfg`  
 +в данном случае необходимо выплонить указанную команду непосредственно.</blockquote>
 +
 +
 +### Настройка 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, то можно разобраться и с файлом, созданным автоматически. Например - пункты с указанием ОС в меню выводятся по порядку, поэтому чтобы поменять их местами будет достаточно поменять местами команды в файле.
 +
 +
 +{{tag>grub}}
  
/var/www/html/dokuwiki/data/attic/linux/administration/cofiguration_grub.1749584083.txt.gz · Последнее изменение: — so_v_a