GRUB

Материал из ALT Linux Wiki

GRUB (англ. GRand Unified Bootloader) — загрузчик операционных систем, разрабатываемый в рамках проекта GNU. Используется по умолчанию в дистрибутивах семейства ALT.

Задача загрузчика — загрузить ядро операционной системы и передать ему управление. Кроме того, GRUB позволяет иметь на одном компьютере несколько установленных ядер и/или операционных систем и выбирать нужную при включении через загрузочное меню.

GRUB поддерживает множество аппаратных платформ и режимов загрузки (Legacy BIOS и UEFI), работает с различными файловыми системами, умеет загружаться с томов LVM и шифрованных разделов LUKS, а также совместим с технологиями UEFI Secure Boot и TPM 2.0.

Примечание: Существуют две основные версии загрузчика: устаревший GRUB Legacy (0.9x) и GRUB 2, написанный заново. В ALT, как и в большинстве современных дистрибутивов, используется GRUB 2; в данной статье под GRUB подразумевается именно он.
Примечание: UEFI — современное название стандарта, ранее известного как EFI; в именах файлов и пакетов (/boot/efi, grub-efi) сохранилась старая аббревиатура. В статье термины используются взаимозаменяемо.


UEFI системы

Установка

Alterator (установщик системы)

При стандартной установке системы с установочного образа один из шагов — «Установка загрузчика». В режиме UEFI доступны следующие варианты:

Grub-uefi-install.png

Все они различаются работой с NVRAM — энергонезависимой памятью прошивки UEFI, в которой хранятся загрузочные записи: какие загрузчики установлены на компьютере и в каком порядке прошивка пытается их запустить.

  • EFI (рекомендуемый) — Классический и основной способ установки загрузчика для EFI-систем.
  • EFI (сначала очистить NVRAM) — Перед установкой удаляются старые загрузочные записи. Рекомендуется, если ранее были установлены другие системы, а теперь только ALT.
  • EFI (запретить запись в NVRAM) — Установка происходит как обычно, но загрузочная запись UEFI не создаётся. Подходит, когда система устанавливается на одном компьютере, а использоваться будет на другом.
  • EFI (для съёмных устройств) — Предназначено для съёмных устройств (например, при установке на внешний диск) и для систем, в которых отсутствует NVRAM. Используйте этот вариант, если при установке рекомендуемым способом возникают ошибки, связанные с NVRAM.


BIOS системы

Установка

При стандартной установке системы с установочного образа один из шагов — «Установка загрузчика». В режиме Legacy BIOS загрузчик необходимо устанавливать на диск целиком, а не на отдельный раздел:

Grub-bios-install.png

После включения компьютера прошивка в режиме Legacy BIOS считывает MBR (Master Boot Record) — самый первый сектор загрузочного диска — и передаёт управление расположенному в нём коду. Именно поэтому в списке устройств нужно выбрать сам диск vda, а не раздел vda1. При установке на диск GRUB записывает первичный код в MBR, а основную часть загрузчика (core.img) размещает в области между MBR и первым разделом, что и обеспечивает корректную загрузку.

Имя диска может отличаться в зависимости от типа накопителя и его подключения — чаще всего это будет что-то вроде sda (для SATA/SCSI-дисков) или nvme0n1 (для NVMe-накопителей). Здесь vda используется как пример имени диска в виртуальной машине.

Важно! Выбирайте именно диск (vda), а не раздел (vda1). Если ошибочно выбрать раздел, код загрузчика будет записан в загрузочный сектор раздела, который BIOS при стандартной схеме разметки не считывает, и система, скорее всего, не загрузится.


Настройка GRUB

Настройка GRUB выполняется через файл /etc/sysconfig/grub2. Чтобы применить изменения, после редактирования файла необходимо выполнить команду update-grub.

Добавление и изменение параметров ядра

  • GRUB_CMDLINE_LINUX — аргументы командной строки, добавляемые ко всем записям меню ядра Linux.
  • GRUB_CMDLINE_LINUX_DEFAULT — аргументы командной строки, добавляемые только к обычным записям меню, после аргументов из GRUB_CMDLINE_LINUX.
  • GRUB_CMDLINE_LINUX_RECOVERY — аргументы командной строки, добавляемые только к записям меню восстановления, перед аргументами из GRUB_CMDLINE_LINUX.
Внимание! До версии grub grub 2.14-alt1 существовало только две переменные:
  • GRUB_CMDLINE_LINUX_DEFAULT — параметры для обычных загрузочных записей;
  • GRUB_CMDLINE_LINUX — параметры для записей восстановления.

Подробнее: #53710.


Тайм-аут отображения меню

Тайм-аут определяет время ожидания после которого авотматически будет выбрана загрузочная запись по умолчанию. Нажатие любой клавиши прерывает тайм-аут.

Тайм-аут настраивается двумя параметрами файла конфигурации:

  • GRUB_TIMEOUT — время ожидания в секундах. Значение по умолчанию — 5. 0 — немедленная загрузка без отображения меню; -1 — ожидание без ограничения по времени.
  • GRUB_TIMEOUT_STYLE — стиль поведения меню во время ожидания; принимает одно из значений: menu, countdown или hidden.

Стиль (GRUB_TIMEOUT_STYLE) задаёт, отображается ли меню во время отсчёта тайм-аута:

  • menu (значение по умолчанию) — меню показывается сразу, отсчёт идёт на экране меню. Нажатие любой клавиши прерывает отсчёт.
  • countdown — меню скрыто, на экране отображается обратный отсчёт оставшегося времени.
  • hidden — меню скрыто, на экране ничего не отображается.

В режимах countdown и hidden меню не отображается, а отсчёт идёт до загрузки записи по умолчанию. Чтобы прервать его и открыть меню, нажмите ESC или F4 либо удерживайте Shift.

Примечание: Удержание Shift срабатывает не всегда. Надёжнее использовать ESC или F4.


Бесшовная загрузка (flicker-free boot)

Чтобы при обычной загрузке меню не отображалось и не нарушало плавность вывода (например, не прерывало логотип производителя), используют стиль hidden.

GRUB_TIMEOUT=5
GRUB_TIMEOUT_STYLE=hidden


Смотрите также

  • mkimage-profiles поддерживает GRUB для сборки образов (см. feature.in/grub, feature.in/bootloader)

Примечания