This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.

Please visit our production wiki at https://wiki.gentoo.org

GRUB2

From Gentoo Wiki (test)
Jump to:navigation Jump to:search
This page is a translated version of the page GRUB2 and the translation is 100% complete.

GRUB2 (GRand Unified Bootloader version 2) — загрузчик, замена оригинального загрузчика GRUB, который сейчас известен как "GRUB Legacy". В GRUB2 абсолютно новая, отдельная от GRUB Legacy, кодовая база, и новые возможности, такие как новый, shell-подобный синтаксис, для написания полноценных скриптов.

Для быстрого знакомства посмотрите статью быстрое знакомство с GRUB2

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

Установка

Пакет sys-boot/grub слоттирован. Это значит, что grub-0.97 (GRUB Legacy) и grub-2.02 могут быть установлены на одной машине, однако, в одно и тоже время, только одна версия может быть установлен в Master Boot Record (MBR) жесткого диска.

Предварительные требования

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

Файл /etc/portage/make.confПример настройки GRUB_PLATFORMS для платформ EMU, EFI и PC
GRUB_PLATFORMS="emu efi-32 efi-64 pc"

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

Target
Platform i386 ia64 mips mipsel powerpc spac64 x86_64
arc No No No Yes No No No
coreboot Yes No No No No No 32-bit
efi Yes Yes No No No No Yes
emu Yes Yes Yes Yes Yes Yes Yes
ieee1275 Yes No No No Yes Yes 32-bit
loongson No No No Yes No No No
multiboot Yes No No No No No 32-bit
qemu Yes No No No No No 32-bit
qemu-mips No No Yes No No No No
pc Yes No No No No No 32-bit
Заметка
Каждый раз когда значение в переменной GRUB_PLATFORMS корректируется GRUB2 необходимо будет перекомпилировать для перекомпиляции измененных двоичных файлов. Убедитесь, что это делается с опцией --newuse --deep, как это показано в разделе emerge ниже.

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

USE-флаги

USE flags for sys-boot/grub GNU GRUB boot loader

device-mapper Enable support for device-mapper from sys-fs/lvm2
doc Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally
efiemu Build and install the efiemu runtimes
fonts Build and install fonts for the gfxterm module
libzfs Enable support for sys-fs/zfs
mount Build and install the grub-mount utility
nls Add Native Language Support (using gettext - GNU locale utilities)
sdl Add support for Simple Direct Layer (media library)
test Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently)
themes Build and install GRUB themes (starfield)
truetype Build and install grub-mkfont conversion utility
verify-sig Verify upstream signatures on distfiles

Emerge

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

root #emerge --ask --newuse --deep sys-boot/grub:2

Дополнительное программное обеспечение

Опционально, установите утилиту os-prober (она находится в пакете sys-boot/os-prober), чтобы GRUB2 мог определять другие операционные системы при запуске grub-mkconfig. В большинстве случаев это даст GRUB2 возможность автоматически определять другие операционные системы включая Windows 7, 8.1, 10, другие дистрибутивы Linux, и так далее.

root #emerge --ask --newuse sys-boot/os-prober

Установка GRUB2 (и, опционально, sys-boot/os-prober) сама по себе не устанавливает загрузчик. Она лишь устанавливает программы на систему, а для установки загрузчика (чтобы он использовался для загрузки системы), необходимо выполнить дополнительные действия, о которых написано в разделе конфигурация.

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

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

  1. установка GRUB2 в качестве загрузчика системы
  2. настройка самого GRUB2

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

Главный конфигурационный файл

Скрипт grub-mkconfig используется для генерации grub конфигурации. Он использует скрипты из каталога /etc/grub.d/* и конфигурационный файл /etc/default/grub для генерации /boot/grub/grub.cfg файла, который используется самим GRUB2.

Файл Формат Редактирование рекомендуется? Описание
/usr/sbin/grub-mkconfig скрипт оболочки POSIX Нет Этот скрипт является частью пакета sys-boot/grub:2. Запустите его после настройки нижеописанных файлов, чтобы сгенерировать /boot/grub/grub.cfg.
/boot/grub/grub.cfg скрипт оболочки GRUB2 Нет Этот файл генерируется скриптом grub-mkconfig. Этот файл читается встроенным интерпретатором скриптов GRUB2 и нет гарантии, что он поддерживает все команды или синтаксис POSIX. Для того, чтобы узнать обо всех поддерживаемых возможностях, смотрите раздел scripting reference в руководстве пользователя GRUB. Помните, что изменения в этом файле сохраняются только до следующего запуска grub-mkconfig.
/etc/grub.d/* скрипты оболочки POSIX Возможно Все скрипты в каталоге /etc/grub.d/*, у которых установлен исполняемый бит, читаются последовательно, их стандартный вывод объединяется и из него формируется файл /boot/grub/grub.cfg (или файл, указанный в качестве параметра -o команды grub-mkconfig). Эти скрипты используют текущую системную оболочку и, следовательно, могут использовать любой поддерживаемый ею синтаксис. В идеале эти скрипты должны быть POSIX-совместимыми, и скрипт вывода должен быть совместим с интерпретатором GRUB2. Возможно, возникнет необходимость выключить или добавить некоторые скрипты, например для того, чтобы добавить пункты меню, которые не удалось сгенерировать автоматически.
/boot/grub/custom.cfg скрипт оболочки GRUB2 Возможно Скрипт /etc/grub.d/41_custom заставит GRUB2 во время загрузки читать этот файл, если он существует. В этот файл можно добавить дополнительные пункты меню или команды. Этот файл не требует повторной генерации основного файла конфигурации grub.cfg.
/etc/default/grub скрипт оболочки POSIX Да В большинстве случаев, это единственный файл, который следует редактировать. В основном, он используется для присвоения переменных, используемых скриптами в каталоге /etc/grub.d для генерации рабочего конфигурационного файла. Для того, чтобы узнать, какие переменные поддерживаются, смотрите статью GRUB2 configuration variables или official reference.

GRUB2 не требует ручного администрирования конфигураций загрузочных опций (как в случае с такими загрузчиками как GRUB Legacy и LILO). Вместо этого он может генерировать свой конфигурационный файл (/boot/grub/grub.cfg) с помощью команды grub-mkconfig. Эта утилита использует скрипты из /etc/grub.d/ и настройки из /etc/default/grub.

Предупреждение
Утилита grub-mkconfig может работать не корректно, если используется программный RAID. Необходимо вручную сконфигурировать скрипты в /etc/grub.d/, так как, в противном случае, после установки, система может не загрузится.

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

root #grub-mkconfig -o /boot/grub/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.3.0-gentoo
done

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

Предупреждение
Если grub-mkconfig не сообщила о каких-либо найденных записях, то никаких записей не найдено. В этом случае, после перезагрузки системы, GRUB2 не предложит какого-либо выбора для загрузки, что весьма плохо и отнимет много времени для решения этой ситуации. Перед перезагрузкой, убедитесь, что вывод содержит записи об успешно найденном ядре.

Настройка параметров конфигурации

В основном, через следующие переменные из /etc/default/grub настраивают функциональность GRUB2:

Переменная Объяснение Значение по умолчанию
GRUB_DEFAULT Определяет пункт меню выделенный по умолчанию. Может быть номером, названием пункиа, или "saved". Первый найденный пункт.
GRUB_TIMEOUT Задержка (в секундах) перед загрузкой стандартного пункта. Выставьте значение в 0 чтобы загружаться сразу или в -1 чтобы отключить автоматическую загрузку. 5 секунд.
GRUB_CMDLINE_LINUX Параметры, передающиеся командной строке ядра для каждого Linux пункта. Например, для поддержки гибернации пользователям надо добавить GRUB_CMDLINE_LINUX="resume=/dev/sdXY", где /dev/sdXY - своп-раздел.
GRUB_CMDLINE_LINUX_DEFAULT Параметры, передающиеся всем не-recovery Linux-пунктам.
GRUB_DEVICE Гланое устройство (т.е. параметр ядра root=). Выставьте его чтобы переопределить устройство, найденное авто-детекцией grub-mkconfig. Например, GRUB_DEVICE=/dev/ram0 заставит загрузчик использовать root=/dev/ram0 в командной строке ядра.

Для более полного списка обратитесь к списку настроек GRUB2.

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

Включение или отключение конфигурационных скриптов

Каталог /etc/grub.d/ содержит скрипты, которые использует grub-mkconfig для генерации файла grub.cfg. По умолчанию содержимое этого каталога должно выглядеть примерно так:

user $ls /etc/grub.d/
00_header  10_linux  20_linux_xen  30_os-prober  40_custom  41_custom README

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

root #chmod -x /etc/grub.d/{20_linux_xen,30_os-prober,40_custom,41_custom}

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

Манипулирование конфигурационными скриптами

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

Измените конфигурационный скрипт /etc/grub.d/40_custom так:

Файл /etc/grub.d/40_customДобавление записи для двойной загрузки
menuentry "FreeBSD" --class freebsd --class bsd --class os {
 insmod ufs2
 insmod bsd
 set root=(hd0,1)
 kfreebsd /boot/kernel/kernel
 kfreebsd_loadenv /boot/device.hints
 set kFreeBSD.vfs.root.mountfrom=ufs:/dev/ada0s1a
 set kFreeBSD.vfs.root.mountfrom.options=rw
 set kFreeBSD.hw.psm.synaptics_support=1
}

/dev/sda1 или (hd0,1) это раздел в котором находится FreeBSD. В случаи использования обычной UFS инсталляции для раздела с FreeBSD, /dev/sda1 это контейнер (что-то вроде логического раздела). Он содержит swap и root разделы. Проверьте скрипт 40_custom на возможность запуска, запустив ls -la /etc/grub.d/40_custom. Если бит выполнения не установлен, установите его используя команду chmod u+x 40_custom.

Заметка
Пользователи, которые знакомы нумерацией разделов в GRUB Legacy, должны заметить, что нумерация разделов в GRUB2 начинается с 1, не с 0.

Далее, установите GRUB2 с помощью команды grub-install и обновите конфигурационный файл GRUB2:

root #grub-install /dev/sda
root #grub-mkconfig -o /boot/grub/grub.cfg

Установка загрузчика

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

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

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

BIOS и MBR

Заметка
В случаи двойной загрузки с Microsoft Windows, убедитесь, что в системе нет UEFI-прошивки. Даже если загрузка осуществляется в режиме 'legacy BIOS', Microsoft Windows может не загрузится.

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

root #mount /boot

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

root #grub-install /dev/sda
Installation finished. No error reported.

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

Разбитие для BIOS и MBR

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


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

BIOS и GPT

Заметка
Если в системе подразумевается двойная загрузка с Microsoft Windows, убедитесь, что в этой системе нету UEFI-прошивки. Даже если такая система загружается в режиме 'legacy BIOS', Microsoft Windows может не загрузится. Также, старые версии Microsoft Windows могут не поддерживать GPT. Возможно лучше использовать гибридный подход MBR-GPT; смотрите Hybrid partition table.

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

root #mount /boot

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

root #grub-install /dev/sda
Installation finished. No error reported.

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

Разбитие для BIOS и GPT

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

Важно
BIOS boot раздел это не тот же самый раздел, который обычно монтируется в /boot. /boot и BIOS boot это разные разделы и должны обрабатываться отдельно. BIOS boot раздел не должен быть смонтирован в системе (то есть, не надо определять его в /etc/fstab). Раздел /boot может быть обычно смонтирован без проблем и, следовательно, может присутствовать в файле /etc/fstab.

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

(parted)set 1 bios_grub on

Если используется утилита cgdisk из sys-apps/gptfdisk, этого же можно добиться, установив тип раздела в 0xEF02 и присвоив разделу метку gptbios.

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

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

root #gdisk /dev/sdc
GPT fdisk (gdisk) version 0.8.1
 
Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present
 
Found valid GPT with protective MBR; using GPT.
 
Command (? for help): p
Disk /dev/sdc: 976773168 sectors, 465.8 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): AA369F4D-37A4-4C0D-A357-DC24B99A6337
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 976773134
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)
 
Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048       828377087   395.0 GiB   8E00  Linux LVM
   2       828377088       891291647   30.0 GiB    0700  Microsoft basic data
   3       891291648       975177727   40.0 GiB    0700  Microsoft basic data
   4       975177728       976754687   770.0 MiB   8300  Linux filesystem
   5       976754688       976756735   1024.0 KiB  EF02  BIOS boot partition
   6       976756736       976773134   8.0 MiB     EF00  EFI System
 
Command (? for help): 
Заметка
Не нужно вводить шестнадцатеричный префикс 0x для GPT, если используется fdisk.

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

root #parted /dev/sdc
GNU Parted 3.0
Using /dev/sdc
(parted) print
...
Sector size (logical/physical): 512B/512B
Partition Table: gpt
  
Number  Start   End    Size    File system  Name                  Flags
 1      1049kB  424GB  424GB                Linux LVM             lvm
 2      424GB   456GB  32.2GB               Microsoft basic data
 3      456GB   499GB  42.9GB               Microsoft basic data
 4      499GB   500GB  807MB   ext2         Linux filesystem
 5      500GB   500GB  1049kB               BIOS boot partition   bios_grub
 6      500GB   500GB  8396kB               EFI System            boot
  
(parted)

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

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

UEFI и GPT

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

root #mount /boot

Запустите команду grub-install для копирования необходимых файлов в /boot/grub. Она должна установить GRUB2 в /boot/grub, скопировать основной образ в /boot/efi/EFI/gentoo/grubx64.efi и вызвать efibootmgr для добавления загрузочной записи.

root #grub-install --efi-directory=/boot/efi
Installation finished. No error reported.

Команда выше подразумевает, что vfat системный раздел EFI (EFI System Partition (ESP)) смонтирован в /boot/efi. Если ESP смонтирован непосредственно в /boot, используйте --efi-directory=/boot.

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

Разбитие для UEFI и GPT

Для UEFI GPT загрузки при помощи GRUB2 в системе "должен" быть отдельный EFI-раздел с файловой системой FAT.

Раздел EFI может заменить существующий раздел /boot на /dev/sda1 с существующим разделом /boot/efi на /dev/sda1. Это подразумевает, что сценарий загрузки UEFI при помощи GRUB2 может работать с двумя разделами (тремя, если нужен раздел swap): раздел root и раздел EFI. Используя такую конфигурацию, каталог /boot будет расположен в разделе //boot) и раздел EFI будет смонтирован в каталоге boot (в /boot/efi). Для уточнения, смотрите пример файла /etc/fstab ниже.

Файл /etc/fstabПример файла /etc/fstab с UEFI и swap-разделом:
/dev/sda1		/boot/efi	vfat		noauto,noatime	1 2
/dev/sda2		none		swap		sw		0 0
/dev/sda3		/		ext4		noatime		0 1

Создание 100MB раздела для /boot/efi должно предоставить достаточно места для хранения нескольких файлов

  • .efi (множество записей не требуется; большинство систем используют только одну).

Создайте раздел с помощью выбранной утилиты. Утилиты gdisk (sys-apps/gptfdisk) и parted (sys-block/parted) хорошо походят для этой цели. Если используется утилита gdisk utility, убедитесь, что используете тип EF00.

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

root #mkfs.fat -F 32 -n efi-boot /dev/sda1
root #mkdir /boot/efi
Файл /etc/fstabДобавление записи для /boot/efi
/dev/sda1		/boot/efi	vfat		noauto,noatime	1 2
root #mount /boot/efi
Заметка
Будет полезно установить переменную GRUB_PLATFORMS в /etc/portage/make.conf. Это поможет GRUB2 определить какие варианты использовать при определении подходящей цели EFI. Для 32-битных систем UEFI используйте efi-32. Для 64-битных используйте efi-64.
Важно
Для того чтобы установить GRUB2 правильно, каталог EFI должен быть смонтирован и модуль ядра efivars должен быть загружен до выполнения команды grub-install для удачной установки.

Альтернативный вариант: использование обычного расположения прошивки UEFI

Если системной прошивки UEFI не удается найти загрузочный файл EFI в GRUB2, использование обычного расположения загрузчика должно работать. Это позволит обойти загрузочное меню efibootmgr и, таким образом, предлагает уменьшенную функциональность, а также меньше подвержено ошибкам. Чтобы это сделать, проверьте, что раздел EFI смонтирован в /boot/efi, затем скопируйте файл grubx64.efi, расположенный /boot/efi/EFI/gentoo/grubx64.efi, в /boot/efi/EFI/BOOT/BOOTX64.EFI. Этот пример подразумевает что система 64-битная UEFI; настройте соответствующим образом для 32-битной UEFI системы.

Расширенные возможности

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

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

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

Chainloading

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

Файл /etc/grub.d/40_customЗагрузка другого загрузчика с помощью chainloader
menuentry "Custom Super-bootloader example" {
     insmod part_msdos
     insmod chain
     chainloader (hd1,1)+1
}

Для более подробной информации о chainloading, пожалуйста, смотрите статью Chainloading.

Использование фрейбуфера

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

root #emerge --ask --newuse sys-boot/grub:2

Приступим к конфигурации конфигурационного файла по умолчанию GRUB2, который расположен в /etc/default/grub. Например:

Файл /etc/default/grubНастройки связанные с фрейбуфером
# настройка разрешения и глубины цвета
GRUB_GFXMODE=1366x768x32
 
# сохранить разрешение после загрузки ядра
GRUB_GFXPAYLOAD_LINUX=keep
 
# настройка фонового изображения
GRUB_BACKGROUND="/boot/grub/bg.png"
 
# использование пользовательского шрифта, конвертированного с помощью утилиты grub-mkfont
GRUB_FONT="/boot/grub/fonts/roboto.pf2"

Чтобы найти какие режимы отображения поддерживаются графической картой, используйте следующую команду в шеле GRUB2:

(grub)insmod all_video
(grub)videoinfo

Устранение проблем

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

Чтобы получить больше информации по устранению ошибок в GRUB2, пожалуйста, проверьте статью Troubleshooting.

Прошивка материнской платы не находит файл .EFI

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

root #mkdir -p /boot/efi/efi/boot
root #cp /boot/efi/efi/gentoo/grubx64.efi /boot/efi/efi/boot/bootx64.efi

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

os-prober и UEFI в chroot

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

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

root #mkdir -p /mnt/gentoo/run/udev
root #mount -o bind /run/udev /mnt/gentoo/run/udev
root #mount --make-rslave /mnt/gentoo/run/udev

Установка нового ядра

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

Заметка
Перед выполнением следующей команды убедитесь, что раздел /boot смонтирован.
root #grub-mkconfig -o /boot/grub/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/kernel-3.3.8-gentoo
Found initrd image: /boot/initramfs-genkernel-x86_64-3.3.8-gentoo
Found linux image: /boot/kernel-3.2.12-gentoo
Found initrd image: /boot/initramfs-genkernel-x86_64-3.2.12-gentoo
done

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

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

Здесь несколько ресурсов, специфичных для GRUB2:

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

Внешние ресурсы

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