Введение
Загрузчик – это неотъемлемый элемент операционный системы, который помогает выполнять инициализацию аппаратного обеспечения и установку компонентов программного обеспечения, необходимых для успешной загрузки. Если на компьютере установлено несколько операционных систем, то у загрузчика должен быть пользовательский интерфейс, через который можно выбрать, какую операционную систему необходимо загрузить.
В этой статье мы расскажем, что такое загрузчик GRUB, а также рассмотрим его характерные особенности и роль в системе Linux.
Что такое GRUB?
GRUB (также известный как GNU GRUB или GNU Grand Unified Bootloader) – это загрузчик и диспетчер загрузки для Linux и других операционных систем на базе Unix. GRUB запускается уже после того, как BIOS завершит все необходимые проверки аппаратных средств и загрузит его из главной загрузочной записи (MBR - Master Boot Record). После чего GRUB получает контроль над системой и загружает ядро Linux.
На сегодняшний день существует две версии GRUB для Linux:
- GRUB Legacy (GRUB 1). Это устаревшая версия GRUB, которая по-прежнему встречается в некоторых старых дистрибутивах Linux.
- GRUB 2. Это версия GRUB, которая поддерживает новые архитектуры ПК (например, ARM) и файловые системы (например, ReiserFS), RAID-массивы и программу управления логическими томами (LVM - Logical Volume Manager). Большинство современных дистрибутивов используют именно эту версию. Ниже продемонстрирован пример меню GRUB, найденный в Linux Mint:
Загрузчик и диспетчер загрузки: в чем разница?
GRUB выполняет две функции: загрузчика и диспетчера загрузки. Во время запуска системы эти два компонента отвечают за разные задачи.
- Загрузчик загружает ядро системы с запоминающего устройства (жесткого диска или SDD) в оперативную память. Кроме того, загрузчики отвечают за инициализацию аппаратного обеспечения, а также установку памяти и настройку ЦП.
- Диспетчер загрузки предоставляет пользователю интерфейс, где он может управлять процессом загрузки и выбирать, какую систему загружать. В качестве интерфейса может выступать стандартное меню GRUB или настроенное под конкретный дистрибутив, например, Kali Linux:
Что делает GRUB?
После того, как BIOS загрузил GRUB в память, GRUB предоставляет пользователю меню с параметрами загрузки. Под этими параметрами подразумеваются установленные операционные системы и специальные параметры загрузки, такие как безопасный режим.
Как только пользователь указал все необходимые параметры или время, отведенное на это, истекло, GRUB приступает к загрузке соответствующего ядра. Для того, чтобы этот процесс был выполнен успешно, GRUB учитывает такие параметры, как:
- BOOT_IMAGE. Это параметр, указывающий на расположение ядра Linux.
- initrd (initial ramdisk). Схема, демонстрирующая, как можно загрузить временную корневую файловую систему в оперативную память.
- root. Расположение корневой файловой системы.
- quiet. Параметр конфигурации, который позволяет скрыть системный вывод, появляющийся в процессе загрузки.
- ro. Параметр, который указывает на то, что файловая система должна быть смонтирована таким образом, чтобы она была доступна только для чтения. Это необходимо для работы программ проверки целостности файловых систем.
- splash. Экран-заставка, который отображается во время загрузки операционной системы.
Процесс загрузки GRUB
Процесс загрузки GRUB состоит из двух или трех этапов:
- Этап 1. Первый этап начинается сразу после того, как BIOS загрузил GRUB из MBR. Для запуска следующего более сложного этапа GRUB использует небольшое пространство в MBR, выделенное под код инициализации.
- Этап 1.5. Это необязательный этап, который позволяет произвести динамическое чтение файла на этапе 2. GRUB поддерживает несколько файловых систем и устанавливает ту, которая соответствует той, где находится файл этапа 2. Если в процессе установки GRUB этап 1.5 игнорируется, этап 2 выполняется статически.
- Этап 2. Заключительный этап загрузки GRUB – самый длинный и самый сложный. Здесь выполняются все шаги, которые необходимы для запуска системы, в частности,
- Отображение меню загрузки
- Загрузка ядра операционной системы
- Инициализация ядра
- Инициализация пользовательского пространства
Характерные особенности GRUB
GRUB – это универсальный и надежный загрузчик, который был разработан с учетом требований современных операционных систем. Ниже приведен список характерных особенностей GRUB:
- Модульная архитектура. Модульная архитектура GRUB обходит ограничения BIOS, за счет чего он может предложить больше функциональных возможностей.
- Гибкая конфигурация. Путем редактирования файла конфигурации GRUB пользователи могут настраивать различные аспекты своей системы, например, запись загрузки по умолчанию, параметры ядра и время ожидания.
- Поддержка мультизагрузки. У GRUB есть меню загрузки, где пользователь может выбрать, какую операционную систему (из установленных) запустить.
- Динамическое обнаружение. GRUB динамически обнаруживает установленные операционные системы и генерирует соответствующие записи загрузки.
- Цепочная загрузка. GRUB может взаимодействовать с другими загрузчиками, например, Windows Boot Manager или NTLDR.
- Поддержка файловых систем. GRUB поддерживает различные файловый системы (например, ext2, ext3, ext4, Btrfs, HFS+, NTFS, FAT и ReiserFS), что делает его безопасным вариантом для запуска любой операционной системы на базе Unix.
- Язык описания сценариев. Пользователи, которым необходимо создавать свои собственные конфигурации загрузки или которым необходима автоматизация, могут использовать язык описания сценариев GRUB.
- Защита паролем. Предлагая установить пароль для меню загрузчика, GRUB повышает надежность системы.
- Режим восстановления. Этот режим помогает пользователям устранять различные неполадки и проблемы, связанные с загрузкой.
- Поддержка устаревших BIOS и UEFI. GRUB работает как с обычным BIOS, так и с современной прошивкой UEFI.
- Загрузка по сети. GRUB поддерживает PXE-загрузку, позволяя компьютерам в сети загружаться через сервер.
Как получить доступ к GRUB и изменить его?
Отредактировав файл конфигурации GRUB, можно изменить его конфигурацию и настроить под себя его интерфейс. Настройка GRUB выполняется через терминал вашей системы и требует прав администратора.
Редактирование файла конфигурации GRUB
Примечание: ошибки в конфигурации GRUB могут помешать загрузке системы. Прежде чем приступать к редактированию файла конфигурации, убедитесь, что вы сделали резервную копию системы.
Чтобы приступить к настройке GRUB:
1. Откройте файл конфигурации в текстовом редакторе, например, Nano:
sudo nano /etc/default/grub
В этом файле содержатся параметры, которые управляют поведением GRUB. Ниже приведены несколько параметров, которые редактируют чаще всего:
- GRUB_DEFAULT. Устанавливает числовой индекс или заголовок пункта меню в качестве записи загрузки по умолчанию.
- GRUB_TIMEOUT. Определяет количество секунд, в течение которых GRUB отображает меню загрузки, прежде чем выполнить загрузку по умолчанию.
- GRUB_HIDDEN_TIMEOUT. Скрывает или показывает меню GRUB.
- GRUB_CMDLINE_LINUX. Определяет параметры командной строки ядра.
- GRUB_DISABLE_OS_PROBER. Отключает динамическое обнаружение операционных систем.
2. Внеся все необходимые изменения в файл, сохраните его и выйдите из редактора. Далее, чтобы применить изменения, введите следующую команду в терминале:
sudo update-grub
Эта команда сканирует изменения в /etc/default/grub и применяет их к grub.cfg (файлу, который GRUB использует в процессе загрузки).
3. Чтобы изменения вступили в силу, перезагрузите компьютер.
Редактирование интерфейса GRUB
С помощью файла конфигурации также можно изменить то, как будет выглядеть GRUB в вашей системе. Чтобы настроить GRUB под себя, выполните следующие действия:
1. Откройте файл конфигурации в текстовом редакторе:
sudo nano /etc/default/grub
2. Найдите параметры, который определяют внешний вид диспетчера загрузки GRUB:
- GRUB_BACKGROUND. Это параметр, с помощью которого можно установить свое собственное фоновое изображение. Для этого вам понадобиться следующий синтаксис:
GRUB_BACKGROUND="[path-to-the-image]/[filename].jpg"
- GRUB_THEME. Если ваш дистрибутив поддерживает темы GRUB, укажите здесь путь к файлу темы.
Сохраните файл и выйдите.
4. Обновите GRUB:
sudo update-grub
Все изменения отобразятся при следующем запуске.
GRUB Customizer
GRUB Customizer – это инструмент с графическим интерфейсом, предназначенный для изменения внешнего вида GRUB. Он избавляет вас от необходимости редактировать файл конфигурации вручную. Чтобы установить его через терминал, выполните следующие действия:
1. Добавьте репозиторий GRUB Customizer:
sudo add-apt-repository ppa:danielrichter2007/grub-customizer
Нажмите Enter, чтобы подтвердить добавление репозитория, и дождитесь завершения процесса.
2. Обновите информацию о репозитории
sudo apt update
3. Установите GRUB Customizer:
sudo apt install grub-customizer
Введите Y и нажмите Enter, чтобы начать установку.
4. Запустите программу, введя следующее:
grub-customizer
Появится окно графического интерфейса GRUB Customizer.
Ниже представлены несколько важных особенностей GRUB Customizer:
- Простой графический интерфейс, с помощью которого можно изменять порядок записей загрузки в меню загрузки и устанавливать записи загрузки по умолчанию.
- Параметры персонализации, с помощью которых можно изменять фоновое изображение и общий вид меню GRUB.
- Параметры, с помощью которых можно настроить время ожидания.
- Графический способ изменения параметров ядра и переменных среды GRUB.
- Варианты установки GRUB в определённый раздел или устройство.
Заключение
Прочитав эту статью, вы должны были больше узнать о том, что такое GRUB, о его особенностях и о том, как его можно настроить под себя. В этой статье мы также познакомились с GRUB Customizer – инструментом с графическим интерфейсом для редактирования конфигурации GRUB.