|
|||||||
Какие файлы участвуют в настройке GRUB 2? Где они располагаются?
Время создания: 09.08.2023 10:41
Текстовые метки: linux, grub, настройка, конфиг, файл, расположение
Раздел: Компьютер - Linux - Загрузчик GRUB
Запись: xintrea/mytetra_syncro/master/base/16915668967v4ml6z8cb/text.html на raw.github.com
|
|||||||
|
|||||||
Для настройки загрузчика GRUB 2, по-сути, используется несколько файлов. Первый файл располагается в каталоге /boot/grub на загрузочном разделе, который используется для хранения второй части загрузчика GRUB. (Первая часть загрузчика GRUB обычно располагается в MBR или GPT жесткого диска). Обычно, полный путь к этому файлу выглядит так: /boot/grub/grub.cfg В этом файле, помимо настроек GRUB, находится перечень пунктов стартового меню (структуры menuentry и submenu), в которых, в частности, указывается месторасположение загружаемых ядер. Внимание! Считается, что данный файл не предназначен для редактирования. Он всегда перегенерируется при вызове утилит управления grub-ом. Использовать этот файл следует как справочный, чтобы только смотреть, какие настройки есть у текущего grub-а. Второй файл располагается в загружаемой операционной системе по следующему пути: /etc/default/grub В этом файле, в частности, находится настройка того, сколько времени будет показываться GRUB-меню (параметр GRUB_TIMEOUT) и какой пункт меню по-умолчанию будет загружаться, если пользователь никаких действий производить не будет (параметр GRUB_DEFAULT). После внесения изменений в этот файл, для применения данных изменений, всегда необхоодимо запускать утилиту: update-grub Сия утилита перечитает конфиг /etc/default/grub и создаст новый файл /boot/grub/grub.cfg, нужным образом подправит первую часть GRUB-а, чтобы ее работа соответствовала внесенным изменениям. Если говорить более подробно, то в момент выполнения update-grub, будут вызываться bash-скрипты, которые генерируют файл /boot/grub/grub.cfg. Эти скрипты находятся в каталоге /etc/grub.d (данная информация справедлива, как минимум, для Debian-подобных дистрибутивов): > pwd /etc/grub.d > ls -la drwxr-xr-x 2 root root 4096 июн 2 15:28 . drwxr-xr-x 145 root root 12288 авг 9 08:26 .. -rwxr-xr-x 1 root root 10046 июл 11 2021 00_header -rwxr-xr-x 1 root root 6260 июл 11 2021 05_debian_theme -rwxr-xr-x 1 root root 14123 авг 1 2022 10_linux -rwxr-xr-x 1 root root 14180 авг 1 2022 20_linux_xen -rwxr-xr-x 1 root root 12910 авг 1 2022 30_os-prober -rwxr-xr-x 1 root root 1372 авг 1 2022 30_uefi-firmware -rwxr-xr-x 1 root root 214 июл 11 2021 40_custom -rwxr-xr-x 1 root root 215 авг 1 2022 41_custom В данных скриптах подключаются библиотеки функций, например /usr/share/grub/grub-mkconfig_lib. Подключение делается через команду "точка", которая является эквивалентом команды source. В такой библиотеке могут находиться функции типа version_find_latest, которые используются внутри скриптов каталога /etc/grub.d. Скрипт 10_linux находит в стандартных путях системы установленные в систему ядра, и формирует пункты меню GRUB для старта с каждым вариантом ядра. Среди данных скриптов есть файл 40_custom. Его содержимое следующее: #!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above Этот скрипт устроен так, что его содержимое, начиная с 3-ей строчки, попадает в итоговый конфиг (то есть, по сути, данный скрипт распечатывает сам себя в стандартный поток, и эта распечатка попадает в конфиг). Причем в данном скрипте выполняется только первая bash-команда, которая запускается с помощью обертки exec. Эта обертка останавливает выполнение скрипта на вызванной из-под нее команде, не позволяя выполняться следующим строкам скрипта. Таким образом, содержимым всех строк, начиная с третьей, может быть любым - там могут быть не только комментарии, а вообще все что угодно. Обычно в этот скрипт можно добавить самописный кусок конфига /boot/grub/grub.cfg, который будет вставлен в итоговый /boot/grub/grub.cfg после сгенерированных опций menuentry. Например, можно добавить дополнительные пункты стартового меню, добавив в файл 40_custom дополнительные, статически написанные пункты меню menuentry. Таким образом можно в GRUB добавлять самодельные пункты меню для загрузки кастомных ядер в любых специфичных конфигурациях. Главное, что после внесения изменений в конфиг /etc/default/grub или в вышеуказанные скрипты, нужно не забывать запускать утилиту update-grub. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|