Найти тему

Загрузка Linux. Загрузчики. Grub.

После процедуры включения ПК и загрузки системных прошивок, управление передается загрузчику операционной системы. Основная задача таких загрузчиков - определить и загрузить соответствующее ядро операционной системы. Большинство загрузчиков могут предоставлять средства для диалога с пользователем, которые позволяют выбирать из нескольких возможных ядер или операционных систем.

Другой задачей загрузчика является передача параметров ядру операционной системы. Например, аргумент single или -s обычно указывает ядру войти в однопользовательский режим, а не выполнить нормальный процесс загрузки. Такие параметры, при желании, могут быть жестко привязаны к конфигурации загрузчика, чтобы они использовались при каждой загрузке.

Самые распространенные загрузчики:

  • Windows Boot Manager - загрузчик ядра Windows Vista, 7, 8, 10
  • BootX - Загрузчик Mac OS X
  • Lilo - Загрузчик применяемый для загрузки ядра Linux
  • GRUB - применяется для загрузки ядра Linux и не только. Именно про этот загрузчик поговорим далее.

GRUB.

Grub - это универсальный загрузчик, разработанный GNU Project. Он является загрузчиком по умолчанию для большинства дистрибутивов Linux. Например, для Ubuntu, начиная с версии 9.10 Grub является загрузчиком по умолчанию, а недавно стал загрузчиком для RHEL 7.

Основные возможности GRUB:

  • Загрузка ядер Linux
  • Передача управления другим загрузчикам, возможность загрузки Windows-систем
  • Поддержка большинства файловых систем
  • Поддержка прошивок BIOS и EFI
  • Помимо всего GRUB может кастомизировать внешний вид загрузочного меню, например, показывать красивую картинку или какое-либо предупреждение.

Конфигурация GRUB.

Так как GRUB понимает большинство используемых файловых систем и может самостоятельно найти корневую файловую систему, то всю информацию загрузчик может черпать из обычного текстового файла. Конфигурационный файл называется grub.cfg и хранится обычно в каталоге /boot/grub (либо /boot/grub2 в системах Red Hat или CentOS). Изменение конфигурации загрузки - это просто вопрос обновления файла grub.cfg.

Хотя можно создать файл grub.cfg вручную, лучше доверить это утилите grub-mkconfig ( grub2-mkconfig в Red Hat и CentOS, update-grub в Debian и Ubuntu). Чаще всего конфигурация задается в /etc/default/grub в виде присваивания переменных оболочки. Вот самые часто используемые параметры:

  • GRUB_BACKGROUND - Фоновое изображение (должно быть формата .png, .tga, .jpg, .jpeg)
  • GRUB_CMDLINE_LINUX - Параметры ядра для добавления в записи меню Linux.
  • GRUB_DEFAULT - Номер или название элемента меню по умолчанию.
  • GRUB_DISABLE_RECOVERY - Предотвращает создание записей режима восстановления.
  • GRUB_PRELOAD_MODULES - Список модулей GRUB, загружаемых, как можно раньше.
  • GRUB_TIMEOUT - Секунды для отображения меню загрузки перед автозагрузкой.

(Более полный список параметров смотрите в шпаргалке по GRUB в телеге. https://t.me/crazy_linuxoid/)

После изменения каталога /etc/default/grub запустите утилиты update-grub для Ubuntu или grub2-mkconfig для CentOS, чтобы перевести вашу конфигурацию в правильный файл grub.cfg.

Еще полезный инструмент для редактирования конфигурационного файла находится в папке /etc/grub.d/. Эта папка содержит в себе скрипты, которые используются для создания файла grub.cfg. При обновлении GRUB они находят все установленные на компьютере системы и ядра и формируют в файле "grub.cfg" меню загрузки, которое мы видим. Основные из них:

  • 00_header - скрипт загружает настройки GRUB из /etc/default/grub.
  • 05_debian_theme - определяет фон, цвета и темы. Имя этого скрипта зависит от выбранного дистрибутива.
  • 10_linux - загружает конфигурации меню для установленного дистрибутива.
  • 20_memtest86+ - загружает утилиту тестирования памяти.
  • 30_os-prober - скрипт, который сканирует жесткие диски на наличие других ОС и добавляет их в загрузочное меню.
  • 40_custom - является шаблоном, который вы можете использовать для создания дополнительных конфигураций, которые добавляются в загрузочное меню.

Допустим, если вы захотите изменить порядок, в котором ядра указываются в меню загрузки, установить пароль загрузки или изменить имена пунктов меню загрузки, достаточно будет отредактировать скрипт 40_custom. И после этого не забыть применить настройки командой update-grub или grub2-mkconfig.

Командная строка GRUB.

В GRUB можно использовать интерфейс командной строки, например, для редактирования файлов конфигурации "на лету". Для того, чтобы войти в режим командной строки, нажмите "с" на экране загрузки GRUB. Из командной строки можно загружать ОС, которые не указаны в конфигурационном файле, отобразить системную информация и провести простое тестирование файловой системы. Наиболее распространенные команды:

  • boot - загружает ОС из указанного образа ядра
  • help - Получает интерактивную справку для команды
  • linux - Загружает ядро Linux
  • reboot - Перезагружает систему.
  • cat [путь_к_файлу] - выводит на экран содержимое текстовых файлов.

Параметры ядра Linux.

Задача параметров ядра Linux обычно состоит в том, чтобы инструктировать ядро проверять определенные устройства, указывать путь к systemd или init, либо назначать определенное корневое устройство. Примеры параметров загрузки ядра:

  • debug - Включает отладку ядра
  • init=/bin/bash - Запускает только оболочку bash; полезна для аварийного восстановления.
  • root=/dev/foo - Инструктирует ядро использовать /dev/foo в качестве корневого устройства.
  • single - Загрузка в однопользовательском режиме.

При задании параметров ядра при загрузке, они не являются постоянными. Для того, чтобы их сделать таковыми, надо отредактировать соответствующую строку в /etc/grub.d/40_custom или /etc/defaults/grub (переменная GRUB_CMDLINE_LINUX).

Так же в системах Linux существует очень удобное правило. При обновлении, новое ядро устанавливается вместе с предыдущими, так что в случае возникновения проблем всегда можно вернуться к предыдущей версии.

Резюме.

Итак, в этой статье вкратце рассмотрели следующий этап загрузки ОС на базе ядра Linux. Далее рассмотрим следующие этапы подготовки системы в работоспособное состояние. Следите за обновления в моем телеграмм канале https://t.me/crazy_linuxoid/, либо подписывайтесь в дзене.