меню grub что это
Инструкция по настройке загрузчика GRUB
/Для загрузки Linux-систем (как впрочем и любой другой UNIX-подобной системы) существует универсальный загрузчик GRUB – GRand Unified Boot loader. Он обладает довольно широким функционалом. Позволяющим не только осуществлять корректную загрузку операционных систем (ОС), но и управлять непосредственно конфигурацией и самим процессом загрузки в интерактивном режиме. В деятельности, связанной с системным администрированием знание возможностей GRUB и умение их применять очень часто экономит в различных и нестандартных ситуациях огромное количество времени системным администраторам.
Как работает GRUB?
Загрузчик GRUB – это GNU-проект, разработанный специально для использования в качестве загрузчика по-умолчанию для систем UNIX и Linux. Для подавляющего числа дистрибутивов GRUB давно поставляется «из коробки». Его главной задачей является работа со списком (который подготавливается заранее вручную или автоматически) вариантов загрузки, из которого выбирается нужный для последующей загрузки системного ядра с определёнными для выбранного варианта параметрами.
Стоит отметить, что на данный момент в большинстве случаев используется загрузчик GRUB2, однако некоторые разработчики дистрибутивов по прежнему продолжают применять первоначальную версию загрузчика, часто называемую GRUB Legacy. Обе эти ветви развития существуют и развиваются параллельно. Основное же отличие между ними — это синтаксис в файлах конфигурации.
GRUB читает конфигурацию загрузки при каждом запуске компьютера. Сами файлы конфигурации (в зависимости от используемой версии и дистрибутива) следующие: /boot/grub/menu.lst, /boot/grub/grub.conf или /boot/grub/grub.cfg для версии 2. В системах Red Hat используются файлы grub.conf, а для Ubuntu, SUSE и Solaris – menu.lst. Эти файлы имеют незначительные различия в синтаксисе конфигурации. Для примера, содержимое grub.conf может быть таким:
В этом примере конфигурируется загрузка всего одной системы Red Hat, которая (согласно default=0) будет загружена автоматически по прошествии 10 секунд (timeout=10), если не будет нажата какая-либо клавиша на клавиатуре. При этом корневая файловая система должна искаться, согласно параметру (hd0,0) команды root, на первом разделе первого жесткого диска.
Для поиска файла ядра задаётся путь относительно загрузочного раздела, монтируемого в каталог /boot. Для приведённого примера ядро будет загружаться из файла /vmlinuz-2.6.18-92.1.10.el5. Затем загрузчик выведет на экран заставку из файла /boot/grub/splash.xpm.gz, находящегося, как указано в команде splashimage, на разделе (hd0,0).
Настраивать параметры загрузки можно и в интерактивном режиме, используя интерфейс командной строки. Для этого нужно на экране меню загрузки нажать клавишу «c».
После чего мы попадем в командную строку. В которой уже можно выполнять команды.
Таким образом с помощью командной строки возможны все те же действия, что выполняются по инструкциям из файлов конфигурации. Как можно видеть, для этого загрузчик предоставляет целый набор команд со своими параметрами. Это бывает очень полезным, когда необходимо загружать системы, не имеющие соответствующей конфигурации в конфигурационных файлах или когда нужно восстановить «сломанную» конфигурацию. Для ознакомления со списком самых главных команд используется клавиша в режиме работы командной строки загрузчика. В следующей таблице представлены наиболее часто используемые команды GRUB:
Команда | Назначение |
reboot | Перезагружает систему |
find | Производит поиск файла во всех смонтированных логических разделах |
root | Задаёт корневое устройство (логический раздел) |
kernel | Загружает ядро системы с корневого устройства |
help | Выводит интерактивную справку по команде |
boot | Загружает систему с указанного образа ядра |
Настройка параметров ядра
Системное ядро во время его загрузки можно (и нужно) заставить вести себя определённым образом, например опрашивать определённые устройства, искать демон init по нестандартным путям, указывать корневое устройство и т. д. Всё это легко позволяет настроить загрузчик. Для этого он использует некоторые параметры, самые основные из которых приведены в следующей таблице:
Важно заметить, что конфигурация, задаваемая при помощи интерфейса командной строки GRUB не сохраняется. Для задания постоянной конфигурации загрузки необходимо отредактировать файл grub.conf (grub.cfg для GRUB2) или menu.lst.
Мультисистемная конфигурация
Энтузиасты очень любят держать на одной машине несколько разных ОС. GRUB хоть и был разработан не для энтузиастов и экспериментов. Однако он универсален и мультисистемную загрузку обеспечивает в полной мере. Для того, чтобы GRUB мог работать с несколькими загрузочными конфигурациями и находить на жёстких дисках (или других устройствах хранения) разные ОС, должна быть задана соответствующая мультисистемная конфигурация. Она подобна тому примеру, что уже был рассмотрен в предыдущей главе, но только теперь необходимо иметь отдельные наборы инструкций для каждой из систем.
Важно понимать, что каждый раздел может содержать отдельный вторичный загрузчик для своей системы, но должен быть также и основной — главный загрузчик, который будет, при необходимости, передавать управление вторичному. В качестве главного в большинстве случаев необходимо использовать загрузчик GRUB. Так, например и в случае мультисистемной конфигурации, в которой соседствуют системы Windows и Linux в качестве главного обязательно должен быть загрузчик GRUB, да ещё и на отдельном от Windows устройстве.
Конфигурация GRUB для загрузки Windows-систем несколько отличается от Linux. Так, например конфигурация запуска Windows XP может быть такой:
Здесь команда chainloader предназначена для передачи управления Windows-загрузчику, расположенному в первом секторе (+1) первого раздела первого жёсткого диска (hd0,0). А команда rootnoverify указывает GRUB, что монтировать раздел (hd0,0) не нужно, т. к. должна загружаться «неродная» система Windows. Пример мультисистемной конфигурации:
В этом примере ОС Windows должна будет загружаться по-умолчанию (default=0). Через 5 секунд (в течение которых не нажата какая-либо клавиша на клавиатуре) с первого раздела первого жёсткого диска. А ОС Red Hat – со второго раздела того же диска.
Также важно отметить, что в процессе обновлений (как правило автоматических) системного ядра, файлы старых версий ядер не удаляются. Но при этом скрипты из пакета обновлений могут автоматически отредактировать конфигурацию загрузки. Добавив новый вариант загрузки для нового ядра. Которое устанавливается в систему независимо от уже имеющихся в ней других ядер. Поэтому ничего удивительного в том, что пунктов меню, отражающих варианты загрузки. Cо временем (после каждого обновления ядра) становится всё больше и больше. Это довольно удобно, т. к. в случае, если с новым ядром система стала работать некорректно. Или вовсе «сломалась» – есть возможность использовать старое ядро. Воспользовавшись соответствующим пунктом меню загрузки GRUB.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Настройка загрузчика Grub
Загрузчик системы выполняет очень важную функцию. Он позволяет выбрать какую операционную систему стоит загружать, также инициализирует параметры ядра Linux и подготавливает его к загрузке. В большинстве дистрибутивов Linux используется загрузчик Grub. Он поддерживает все необходимые функции, в том числе и UEFI, а также очень настраиваемый.
В одной из предыдущих статей мы рассматривали установку загрузчика Grub в Linux. В этой же будет будет продолжена тема и более детально рассмотрена настройка загрузчика Grub. Мы рассмотрим как графическую настройку с помощью Grub Customizer, так и более сложный, но более гибкий вариант с помощью ручного редактирования конфигурационных файлов.
Настройка Grub с помощью Grub Customizer
Это самый легкий путь конфигурации загрузчика. Графическая программа настройки Grub Customizer позволяет настроить все основные параметры загрузчика, например, фоновое изображение, шрифт, порядок пунктов загрузки, параметры ядра и многое другое. Все это делается в пару кликов.
Программа доступна в официальных репозиториях большинства дистрибутивов, и вы можете ее оттуда легко установить. Для установки в Ubuntu выполните:
sudo apt install grub-customizer
В Fedora, Red Hat и CentOS команда будет немного отличаться:
sudo yum install grub-customizer
После завершения установки вы можете запустить программу из главного меню или в терминале:
Перед тем, как программа запустится, вам нужно будет ввести пароль потому что для ее работы нужны права администратора:
Главное меню загрузится через несколько десятков секунд. Программе нужно время, чтобы собрать список операционных систем, установленных на компьютере:
В контекстном меню для каждого пункта вы можете переместить его вверх или вниз, переименовать или отредактировать его конфигурацию. С конфигурацией мы будем разбираться в другой части статьи, а первые два пункта могут быть очень полезны:
На вкладке Основные настройки вы можете выбрать пункт, который нужно загружать по умолчанию, время на протяжении которого будет показываться меню, а также параметры ядра для каждого пункта по умолчанию.
Последняя вкладка позволяет настроить внешний вид, тут вы можете выбрать одну из доступных тем, установить разрешение, или же задать пользовательские параметры цвета, шрифтов и фоновый рисунок:
Кроме того, нажав кнопку дополнительные параметры, вы можете настроить значения переменных /etc/default/grub, которые мы рассмотрим подробнее ниже.
Когда настройка Grub Customizer будет завершена просто нажмите кнопку Сохранить, чтобы применить все изменения.
Видео, где показана настройка GNU Grub в Linux с помощью Grub Customizer:
Но это все слишком просто и позволяет сделать только базовые вещи, если же нужна более тонкая настройка загрузчика Grub, придется разбираться с ручной настройкой конфигурационных файлов. Это мы и будем рассматривать ниже.
Настройка Grub через конфигурационные файлы
Настройка Grub через /etc/default/grub
Как я уже сказал, настройка загрузчика через файл /etc/default/grub, на основе которого будет автоматически создан /boot/grub/grub.cfg более желательна. Давайте рассмотрим параметры, которые вы можете здесь настроить.
Например, можно использовать такую конфигурацию:
GRUB_DISTRIBUTOR=»»
GRUB_DEFAULT=»saved»
GRUB_HIDDEN_TIMEOUT=»0″
GRUB_HIDDEN_TIMEOUT_QUIET=»true»
GRUB_TIMEOUT=»8″
GRUB_CMDLINE_LINUX_DEFAULT=»resume=/dev/sda7 splash=silent quiet»
Но как вы могли понять, этим способом вы не можете настроить порядок пунктов загрузки, а также некоторые другие параметры, поэтому давайте рассмотрим настройку непосредственно конфигурационного файла Grub.
Настройка Grub через /boot/grub/grub.cfg
Файл /etc/boot/grub/grub.cfg управляет непосредственно работой загрузчика, здесь указаны все его параметры и настройки, а также сформировано меню. Поэтому, изменяя этот файл, мы можем настроить Grub как угодно. Сначала попытаемся разобраться с синтаксисом файла. Он очень напоминает синтаксис bash и состоит из нескольких команд, которые что-то делают, загружают и настраивают.
Команды могут быть объединены в функции или блоки с помощью инструкций if else, синтаксис которых аналогичен bash. Рассмотрим основные из этих команд:
Это все команды, которые вам понадобятся. Но две последние нужно рассмотреть подробнее, так как они будут использоваться чаще всего.
Команда search используется для поиска дисков и имеет такой синтаксис:
Например, команда может выглядеть вот так:
Вторая команда, которая нам очень понадобится, это 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 gfxmode=»1280×800″
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 может показаться довольно сложной вещью, но если разобраться, то все вполне выполнимо. В этой статье мы рассмотрели несколько способов настройки загрузчика, для различных ситуаций, и я думаю, теперь у вас не возникнет проблем с этой программой. Если у вас остались вопросы, спрашивайте в комментариях!