GRUB/ru

GRUB 2 (GRand Unified Bootloader version 2, GRUB2 или чаще просто GRUB) — Article description:: мультизагрузочный загрузчик, способный загружать ядра с различных файловых систем на большинстве системных архитектур. GRUB поддерживает PC BIOS, PC EFI, IEEE 1275 (Open Firmware), SPARC и MIPS Lemote Yeeloong.

GRUB2 заменил оригинальный загрузчик GRUB Legacy совершенно новой кодовой базой, включающей в себя синтаксис командной строки для продвинутых возможностей написания сценариев.

Для быстрой установки посмотрите статью Быстрый старт GRUB2.

В случае миграции системы с GRUB Legacy на GRUB2 смотрите статью Миграция на GRUB2.

Установка
Ввиду того, что в Gentoo GRUB Legacy (grub-0.97) и GRUB2 были слотированы, обе версии GRUB могли быть одновременно установлены в одной системе; однако, только одна версия могла быть установлена в главную загрузочную запись (Master Boot Record, MBR) жесткого диска.

Рекомендуется перевести все системы на использование GRUB2, так как она обладает всеми возможностями, что и Legacy. Версия Legacy была удалена из репозитория Gentoo.

Предварительные требования
Чтобы контролировать на какие платформы будет установлен GRUB, установите переменную GRUB_PLATFORMS в файле. Архитектура включает в себя профиль по умолчанию, который подходит для большинства систем.

Следующие платформы поддерживаются, в зависимости от целевого CPU:

Профили по умолчанию включают поддержку (U)EFI-функциональности. В случае использования систем на базе BIOS, установите в переменной GRUB_PLATFORMS значение, чтобы избежать ненужных зависимостей.

Emerge
Чтобы установить GRUB, используйте обычный для синтаксис:

Дополнительное программное обеспечение
Можно установить необязательную утилиту (она находится в пакете ), чтобы при запуске  GRUB мог находить загрузочные записи других операционных систем. В большинстве случаев это даст GRUB возможность автоматически обнаруживать другие операционные системы, включая Windows 7, 8.1, 10, другие дистрибутивы Linux, и так далее.

Установка GRUB (и необязательного ) сама по себе не включает работу загрузчика. Она лишь устанавливает программы загрузчика в систему. Для установки загрузчика в систему (чтобы он использовался для загрузки системы), необходимо выполнить дополнительные действия, о которых написано в разделе конфигурация.

Конфигурация
Есть два важных аспекта в конфигурации GRUB:


 * 1) Установка GRUB в качестве второго загрузчика системы.
 * 2) Настройка самого GRUB.

Установка GRUB специфична для каждого типа системы и описана в разделе установка загрузчика. Сначала рассмотрим настройку самого загрузчика.

Главный конфигурационный файл
Скрипт используется для генерации grub конфигурации. Он использует скрипты из каталога и конфигурационный файл  для генерации  файла, который используется самим GRUB2.

GRUB не требует ручного изменения администратором конфигураций загрузочных записей (как в случае с GRUB Legacy и LILO). Вместо этого он может генерировать свой конфигурационный файл с помощью команды. Эта утилита использует сценарии из и настройки из.

После изменения одной или более настроек, запустите утилиту с опцией , которая указывает файл, куда необходимо сохранить конфигурацию  (это конфигурационный файл GRUB2 по умолчанию):

Каждый раз, когда вызывается утилита, будет сгенерирована новая конфигурация.

Настройка параметров конфигурации
В основном, через следующие переменные из настраивают функциональность GRUB:

Для более полного списка обратитесь к подстранице Список настроек и -странице.

После изменения параметров пересоздайте файл настроек GRUB2 с помощью.

Включение или отключение конфигурационных скриптов
Каталог содержит скрипты, которые использует  для генерации файла. По умолчанию содержимое этого каталога должно выглядеть примерно так:

GRUB использует все установленные скрипты, которые помечены как выполняемые (по умолчанию они все включены). Чтобы отключить любой из этих скриптов, просто удалите бит выполнения с скрипт-файла используя команду. В следующем примере все скрипты, кроме и, отключены:

После редактирования сценариев (или удаления бита выполнения), перегенерируйте конфигурационный файл используя.

Управление конфигурационными сценариями
Некоторые возможности доступны только при помощи модификации конфигурационных сценариев. Например, для поддержки двойной загрузки с FreeBSD необходимо выполнить следующие действия.

Измените конфигурационный скрипт так:

или  это раздел в котором находится FreeBSD. В случаи использования обычной UFS инсталляции для раздела с FreeBSD, это контейнер (что-то вроде логического раздела). Он содержит swap и root разделы. Проверьте скрипт на возможность запуска, запустив. Если бит выполнения не установлен, установите его используя команду.

Далее, установите GRUB и обновите конфигурационный файл:

Установка загрузчика
Установка GRUB в качестве системного загрузчика зависит от того, как система будет загружаться (через какой тип прошивки, например на PC — через BIOS или его наследника UEFI) и как диск, на котором должен быть установлен загрузчик, был разбит до этого (например, на PC это может быть схема разбиения разделов MBR или GPT).

Эта статья описывает следующие ситуации:


 * BIOS и MBR
 * BIOS и GPT
 * UEFI и GPT
 * Open Firmware (IEEE 1275) на PowerPC

Выберите одну из инструкций подходящую для используемой системы.

BIOS и MBR
Удостоверьтесь, что существует - если для нее используется отдельный раздел, убедитесь, что он смонтирован:

Запустите команду, которая скопирует необходимые файлы в. На платформе PC также установится загрузочный образ в главную загрузочную запись (MBR) или в загрузочный сектор раздела. Если все пройдет успешно, после запуска, то следует ожидать примерно такой вывод как показано ниже:

В есть опция , которая позволяет установить архитектуру CPU и платформу. Если она не установлена, попытается угадать правильное значение; в системах / будет использоваться   по умолчанию. Также в есть опция , чтобы сообщить установщику GRUB2 в каком каталоге он должен искать загрузочные файлы GRUB2. Этот каталог по умолчанию, что может быть удобно при перемещении root-раздела.

Разбитие для BIOS и MBR
Убедитесь, что оставили достаточно место перед первым разделом. Если начать первый раздел с сектора 2048, останется, по крайней мере, 1 MiB дискового пространства для MBR. Рекомендуется (но не обязательно) создать дополнительный раздел для GRUB и назвать его BIOS boot partition. Этот раздел нужно просто создать, но, пока что, не форматировать. Он нужно только в том случае, если система позже будет мигрировать на схему разделов GPT. Если мигрирование не предполагается, для MBR этот раздел не требуется.

Если все делали по установочным инструкциям Gentoo, этот BIOS boot partition раздел уже был создан.

BIOS и GPT
Если необходим раздел, начните с монтирования раздела :

Если все прошло успешно, после выполнения команды, следует ожидать такой вывод, как показано ниже:

В есть опция , которая позволяет установить архитектуру CPU и платформы. Если она не установлена, попытается угадать правильное значение; в системах / будет использоваться   по умолчанию. Также в есть опция , чтобы сообщить установщику GRUB2 в каком каталоге он должен искать загрузочные файлы GRUB2. По умолчанию это каталог, что может быть удобно при перемещении root-раздела.

Двойная загрузка с Windows
An already installed Windows will refuse to boot when the boot mode or the partitioning scheme is changed. Also, older Windows systems don't support GPT (or EFI) at all, demanding that a BIOS or the EFI-CSM along with an MBR must be used. If Windows supports EFI it can be re-installed in the native UEFI mode and the GPT partitioning scheme, as well as Linux; see section UEFI with GPT.

Hybrid partitioning between GPT and MBR creates both a valid GPT partition table and a valid MBR partition table at the same time, but limits the total number of hybrid partitions to four because of the four primary partition limit of the MBR. Since the ESP (the EFI System Partition holding the EFI bootloaders) takes up one partition this leaves only three shared partitions between MBR and GPT. When one partition is used for Windows and one for Linux, there is only one additional hybrid partition possible, like a separate Linux /boot partition or a shared data partition between the two operating systems.

If there are two physical disks available to the system, a great solution is to have one disk use the GPT and the other the MBR partitioning scheme. Normally, the Windows installation uses only one partition as 'system partition' and 'boot partition', called 'drive C:'. When in BIOS mode the initial partition for booting, the 'system partition', must be an MBR partition. This applies to every Windows version since Windows XP and includes Windows 10. Since Windows Vista (actually Windows XP x64 Edition) the Microsoft operating system supports accessing GPT partitions. The solution is to relocate the 'system partition' part of an installation to the MBR partitioned disk, and convert the 'boot partition' (the one containing \WINDOWS) to a GPT partitioned disk. Windows can thereafter access all the GPT partitions on the one disk, and will continue to use the MBR partitions (or hybrid partitions) on the disk containing the 'system partition'. The Windows installation (containing \WINDOWS) would be a GPT partition, even when booted in BIOS mode.

Разбитие для BIOS и GPT
В системе с GPT таблицей должен быть небольшой BIOS boot partition с типом файловой системы  (не путать с EFI System Partition (ESP) у которой тип файловой системы  ). 1 MiB должно быть достаточно для работы, но 2-4 MiB будет более безопасным вариантом. Этот BIOS boot раздел будет хранить в себе 2 стадию загрузчика. BIOS boot раздел не нужно форматировать в какую-либо файловую систему; команда перезапишет любую файловую систему на свою собственную.

Чтобы установить раздел как BIOS раздел, используйте утилиту командной строки  введя (измените   на номер необходимого раздела, который нужно сделать BIOS boot разделом!):

Если используется утилита из, этого же можно добиться, установив тип раздела в   и присвоив разделу метку.

EFI системный раздел не нужен на данный момент, но было бы целесообразно убедится, что BIOS boot раздел достаточно большой, если позже материнская плата будет обновлена до UEFI материнской платы.

Ниже приведен пример вывода нажатия клавиши в  утилите на диске размеченным с помощью GPT с обоими разделами BIOS boot [0xEF02] и EFI [0xEF00]:

При тех же настройках утилита дает вывод с немного другим синтаксисом:

Для пользователей знакомых с создание разделов в  покажется весьма простым делом. После запуска, в основном меню нажмите (для нового раздела), укажите первый и последний секторы (если необходимо) и установите тип раздела в   для системного раздела EFI.

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

UEFI и GPT
Удостоверьтесь, что существует - если для нее используется отдельный раздел, убедитесь, что он смонтирован:

Запустите команду для копирования необходимых файлов в. Она должна установить GRUB в, скопировать основной образ в и вызвать efibootmgr для добавления загрузочной записи.

В есть параметр , который позволяет установить архитектуру CPU и платформы. Если он не установлен, попытается угадать правильное значение; в системах AMD64, загруженных с помощью UEFI, по умолчанию будет использоваться. Также в есть параметр , сообщающий установщику GRUB, в каком каталоге он должен искать загрузочные файлы. По умолчанию этим каталогом является, но бывает удобно изменить его при перемещении корневого раздела.

Разбитие для UEFI и GPT
Для загрузки UEFI GPT в системе должен быть отдельный раздел ESP, содержащий файловую систему FAT.

Раздел EFI может заменить существующий раздел  на  с существующим разделом  на. Это подразумевает, что сценарий загрузки UEFI при помощи GRUB может работать с двумя разделами (тремя, если нужен раздел подкачки): раздел root и раздел EFI. Используя такую конфигурацию, каталог будет расположен в разделе  (в ) и раздел EFI будет смонтирован в загрузочном каталоге (в ). Для уточнения, смотрите пример файла ниже.

Создание 100 МБ раздела для должно предоставить достаточно места для хранения нескольких файлов  (множество записей не требуется; большинство систем используют только одну).

Создайте раздел с помощью выбранной утилиты. Утилиты  и   хорошо походят для этой цели. Если используется утилита utility, убедитесь, что используете тип.

Далее, используя, создайте файловую систему FAT в системном разделе EFI и добавьте его в как в примере ниже:

Альтернативный вариант: использование обычного расположения прошивки UEFI
Если системной прошивки UEFI не удается найти загрузочный файл EFI в GRUB, использование обычного расположения загрузчика должно работать. Это позволит обойти загрузочное меню efibootmgr и, таким образом, предлагает уменьшенную функциональность, а также меньше подвержено ошибкам. Чтобы это сделать, проверьте, что раздел EFI смонтирован в, затем скопируйте файл , расположенный , в. Этот пример подразумевает что система 64-битная UEFI; настройте соответствующим образом для 32-битной UEFI системы.

Open Firmware (IEEE 1275) on PowerPC
See here.

Расширенные возможности
В GRUB есть много возможностей, которые делают его очень мощным загрузчиком. Он поддерживает:


 * Загрузку с платформ UEFI.
 * Загрузку с дисков с таблицей разделов GPT без необходимости использования гибридного MBR (при необходимости, гибридный MBR можно включить для совместимости или переносимости).
 * Загрузку с раздела с файловой системой btrfs.
 * Загрузка с ZFS pool.
 * Непосредственную загрузку с raid set btrfs без необходимости использования initramfs для настройки раннего монтирования.
 * Непосредственную загрузку с системы управления логическими томами (например, LVM2).
 * Загрузку с поддержкой DM-RAID (RAID 0, 1, 4, 5, 6, 9 и 10).
 * Загрузку с зашифрованных устройств (LUKS).

Некоторые возможности будут рассмотрены более детально дальше.

Последовательная загрузка (Chainloading)
В GRUB 2 была улучшена поддержка режима последовательной загрузки (chainload) по сравнению с GRUB Legacy. Для последовательной загрузки другого загрузчика следует использовать параметр.

Более подробная информация о последовательной загрузке доступна на подстранице Chainloading.

Защита меню GRUB с помощью пароля
If you want to secure GRUB so it is not possible for anyone to change boot parameters or use the command line, you can add a user/password combination to GRUB's configuration files. The program grub-mkpasswd-pbkdf2 generates password hashes for GRUBː

Then, add the following toː

Использование кадрового буфера
Чтобы GRUB использовал кадроый буфер, переустановите GRUB с включенным USE-флагом. Это установит шрифт True Type по умолчанию, а также утилиту для преобразования шрифтов.

Далее измените конфигурационный файл по умолчанию GRUB, который расположен в. Например:

Устранение проблем
Большую часть проблем можно устранить, проверив правильность таблицы разделов. Убедитесь, что перед первым разделом диска достаточно свободного места или убедитесь, что загрузочный раздел BIOS доступен. Также убедитесь в том, что файл был правильно сгенерирован командой, или сгенерируйте его с индивидуальным пунктом меню.

os-prober на запускается
When running the command,  is not running as expected, even though it is installed:

This can be corrected by setting the GRUB_DISABLE_OS_PROBER variable to  in  file.

Upon the next run, should find additional bootable partitions:

Прошивка материнской платы не находит файл .EFI
Некоторые производители материнских плат поддерживают только одно расположение файла .EFI, в системном разделе EFI (ESP). Если это ваш случай, просто переместите файл GRUB по умолчанию в. Сначала убедитесь, что ESP примонтирован. Предполагая, что ESP примонтирован в (как предлагается в Handbook), запустите:

You can also use the removable parameter with grub-install command to generate this file automatically:

Это должно помочь прошивке материнской платы загрузить исполняемые файлы GRUB. Перезагрузите систему чтобы убедиться, что прошивка запускает GRUB корректно.

os-prober и UEFI в chroot
Утилита используется для поисках других установленных ОС, таких как Microsoft Windows. Чтобы она работала правильно, ей необходим доступ к информации из реального окружения udev, чтобы протестировать наличие системного раздела EFI (EFI System Partition).

Запустите эти команды в окружении реального хоста, чтобы предоставить необходимые файлы (пример подразумевает, что Gentoo смонтирована в как это было в Handbook):

Установка нового ядра
Каждый раз после установки нового ядра необходимо переконфигурировать GRUB, чтобы он увидел его. Это можно сделать с помощью команды, как это было показано выше, или это можно сделать вручную.

Обратите внимание, что GRUB2 необходимо только переконфигурировать, а не переустановливать в Master Boot Record (MBR) загрузочного диска. С другой стороны, когда обновляется сам GRUB2, его необходимо переустановить на загрузочный диск, но, как правило, его не нужно переконфигурировать.

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

 * В статье Chainloading описано, как можно использовать GRUB2 для загрузки других загрузчиков. Эта статья важна для тех, кто использует системы с двойной загрузкой или хочет настроить GRUB2 для загрузки файлов ISO.
 * В статье Advanced storage описаны действия, необходимые для того, чтобы установить и использовать GRUB2 с более сложными системами устройств, такими как software RAID, логические тома и зашифрованные файловые системы.
 * Статья Configuration variables содержит исчерпывающий список конфигурационных переменных GRUB2, используемых файлом.
 * Статья Troubleshooting содержит перечень типичных ошибок GRUB2, а также способов их исправления.
 * В статье Hybrid partition table описано использование комбинированной конфигурации MBR/GPT, а также использование такой гибридной таблицы разделов с GRUB2.

Внешние ресурсы
Для большей информации смотрите:


 * Руководство пользователя GNU GRUB 2
 * Раздел Network (PXE) руководства пользователя GRUB
 * Статья о проблемах Legacy BIOS с GPT
 * Статья о GPT и гибридном MBR
 * Страница утилиты GPT fdisk
 * Статья GRUB 2 на Arch Linux wiki
 * Статья GRUB2 на Fedora wiki: Encountering the dreaded GRUB2 boot prompt
 * ubuntu UEFI booting help
 * http://unix.stackexchange.com/questions/109272/dualboot-freebsd-gentoo-with-grub2-mbr
 * Сообщение блога о том, как можно закрыть паролем определенные пункты загрузочного меню GRUB