rEFInd (Русский)

Состояние перевода:
На этой странице представлен перевод статьи
rEFInd
. Дата последней синхронизации: 22 августа 2023. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
Ссылки по теме
Процесс загрузки Arch
Загрузчик
Unified Extensible Firmware Interface (Русский)
EFISTUB (Русский)
booster
rEFInd
-
UEFI
-загрузчик, способный запускать ядра
EFISTUB
. Это форк более не поддерживаемого rEFIt, и в нем исправлены многие проблемы, касающиеся загрузки UEFI вне Mac-устройств. Он построен вокруг идеи кроссплатформенности и упрощения загрузки нескольких операционных систем.
Примечание
Во всей статье
esp
обозначает точку монтирования
системного раздела EFI
.
Установка
Установите
пакет
refind
.
Установка загрузчика rEFInd
rEFInd поставляется с
драйверами UEFI
, которые реализуют поддержку в режиме "только чтение" ReiserFS (устарел), Ext2, Ext4, Btrfs, ISO-9660 и HFS+. Вдобавок rEFInd имеет доступ к любой файловой системе, к которой имеет доступ сам UEFI, включая FAT (как указано в спецификации UEFI), HFS+ на Mac и ISO-9660 на некоторых системах.
См.
The rEFInd Boot Manager: Using EFI Drivers: Finding Additional EFI Drivers
для поиска дополнительных драйверов.
Чтобы использовать rEFInd, Вам нужно установить его в системный раздел EFI или используя
скрипт refind-install
или
копированием файлов и выставлением загрузочной записи вручную
.
Важно
Ваше ядро и initramfs должны находиться в файловой системе, которую способен прочесть rEFInd.
Установка при помощи refind-install
Пакет rEFInd включает скрипт
refind-install
для упрощения процесса выставления rEFInd загрузочной записью EFI по умолчанию. Скрипт имеет несколько опций для работы с различными реализациями UEFI. См.
refind-install(8)
или комментарии в скрипте для объяснений различных опций установки.
Для большинства систем будет достаточно запустить:
# refind-install
Этот скрипт постарается найти и примонтировать Ваш
ESP
, скопировать файлы rEFInd в
esp
/EFI/refind/
, и применить
efibootmgr
, чтобы сделать rEFInd загрузчиком EFI по умолчанию.
Вы также можете установить rEFInd в стандартный/запасной путь загрузки
esp
/EFI/BOOT/bootx64.efi
. Это полезно для загрузочных USB-устройств или в системах с проблемами, связанными с изменениями в NVRAM, произведенными
efibootmgr
:
# refind-install --usedefault
/dev/sdXY
Где
/dev/sdXY
- ваш системный раздел EFI (устройство, а не точка его монтирования).
Совет
По умолчанию
refind-install
устанавливает лишь драйвер для той файловой системы, где находится ядро. Драйверы дополнительных файловых систем нужно устанавливать вручную копированием из
/usr/share/refind/drivers_x64/
в
esp
/EFI/refind/drivers_x64/
, или Вы можете установить все драйвера с опцией
--alldrivers
. Это полезно для загрузочных USB-устройств.
После установки файлов rEFInd в ESP убедитесь, что rEFInd создал файл
refind_linux.conf
, содержащий
параметры ядра
в том же каталоге, где и Ваше ядро. Этот конфигурационный файл не будет создан, если Вы использовали опцию
--usedefault
- запустите
mkrlconf
с правами root, чтобы создать его.
Важно
Когда
refind-install
запускается в chroot (например, при установке Arch Linux),
/boot/refind_linux.conf
наполняется параметрами ядра из изначальной системы, а не той, куда устанавливается rEFInd. Отредактируйте
/boot/refind_linux.conf
и убедитесь, что
параметры ядра
в нём верны для Вашей системы, иначе Вы получите kernel panic при следующей загрузке. Смотрите пример файла в разделе
#refind_linux.conf
.
По умолчанию, rEFInd просканирует все Ваши устройства (для которых у него есть драйвера) и добавит загрузочные записи для всех EFI загрузчиков, что сможет найти, что должно включать Ваше ядро (т. к. в Arch
EFISTUB
включен по умолчанию). Таким образом, у Вас уже должна быть система, способная к загрузке.
Безопасная загрузка (Secure Boot)
См.
Managing Secure Boot
для поддержки безопасной загрузки в rEFInd.
Использование прелоадера
См.
Secure Boot#Set up PreLoader
для получения подписанных бинарных файлов
PreLoader.efi
и
HashTool.efi
.
Выполните
refind-install
с опцией
--preloader
/путь/к/прелоадеру
# refind-install --preloader /usr/share/preloader-signed/PreLoader.efi
В следующий раз, когда Вы будете загружаться с включенной безопасной загрузкой, HashTool запустится, и Вам нужно будет зарегистрировать хэши rEFInd (
loader.efi
), драйверов rEFInd (напр.
ext4_x64.efi
) и ядра (напр.
vmlinuz-linux
).
См.
refind-install(8)
для дополнительной информации.
Совет
Подписанный
HashTool
способен получить доступ лишь к тому разделу диска, из которого он был запущен. Это значит, что если Ваше ядро не на ESP, Вы не сможете зарегистрировать его хэш из
HashTool
. Вы можете обойти это ограничение, используя
#KeyTool
, т. к. он способен зарегистрировать хэш в MokList и не ограничен одним разделом. Не забудьте зарегистрировать хэш
KeyTool
прежде, чем использовать его.
Использование shim
Установите
shim-signed
AUR
. См.
Secure Boot#shim
(пропустите этап копирования файлов).
Использование хэшей
Чтобы использовать лишь хэши при помощи
shim
, запустите
refind-install
с опцией
--shim
/путь/к/shim
.
# refind-install --shim /usr/share/shim-signed/shimx64.efi
В следующий раз, когда Вы будете загружаться с включенной безопасной загрузкой, MokManager запустится, и Вам нужно будет зарегистрировать хэши rEFInd (
loader.efi
), драйверов rEFInd (напр.
ext4_x64.efi
) и ядра (напр.
vmlinuz-linux
).
Использование Machine Owner Key
Чтобы подписать rEFInd при помощи Machine Owner Key (MOK), установите
sbsigntools
.
Совет
Если Вы уже
создали MOK
, поместите файлы в каталог
/etc/refind.d/keys
с именами
refind_local.key
(приватный ключ в формате PEM),
refind_local.crt
(сертификат в формате PEM) и
refind_local.cer
(сертификат в формате DER).
Выполните
refind-install
с опциями
--shim
/путь/к/shim
и
--localkeys
:
# refind-install --shim /usr/share/shim-signed/shimx64.efi --localkeys
refind-install
создаст ключи за Вас и подпишет сам себя и свои драйвера. Вам нужно будет подписать ядро тем же ключом, например:
# sbsign --key /etc/refind.d/keys/refind_local.key --cert /etc/refind.d/keys/refind_local.crt --output /boot/vmlinuz-linux /boot/vmlinuz-linux
Совет
Подписывание ядра может быть автоматизировано постхуком
mkinitcpio
, см.
Secure Boot#Signing the kernel with a mkinitcpio post hook
.
В MokManager добавьте
refind_local.cer
в MoKList.
refind_local.cer
может быть найден внутри каталога, называющегося
keys
в каталоге установки rEFInd, напр.
esp
/EFI/refind/keys/refind_local.cer
.
См.
refind-install(8)
для дополнительной информации.
Использование собственных ключей
Следуйте
Secure Boot#Using your own keys
, чтобы создать ключи.
Создайте каталог
/etc/refind.d/keys
и поместите ключ подписи базы данных (
db
) и сертификаты в него. Назовите файлы:
refind_local.key
(приватный ключ в формате PEM),
refind_local.crt
(сертификат в формате PEM) и
refind_local.cer
(сертификат в формате DER).
При запуске скрипта установки укажите опцию
--localkeys
, т.е.:
# refind-install --localkeys
Бинарные файлы EFI rEFInd будут подписаны предоставленным ключом и сертификатом.
Ручная установка
Совет
rEFInd способен загружать Linux несколькими способами. См.
The rEFInd Boot Manager: Methods of Booting Linux
для информации о различных подходах к загрузке.
Если скрипт
refind-install
для Вас не работает, rEFInd можно установить вручную.
Прежде всего, скопируйте бинарный файл в ESP:
# mkdir -p
esp
/EFI/refind
# cp /usr/share/refind/refind_x64.efi
esp
/EFI/refind/
Если Вы хотите установить rEFInd в стандартный/запасной путь загрузки, замените
esp
/EFI/refind/
на
esp
/EFI/BOOT/
и скопируйте бинарный файл EFI rEFInd в
esp
/EFI/BOOT/bootx64.efi
:
# mkdir -p
esp
/EFI/BOOT
# cp /usr/share/refind/refind_x64.efi
esp
/EFI/BOOT/bootx64.efi
Затем используйте
efibootmgr
, чтобы создать загрузочную запись в NVRAM UEFI, где
/dev/sdX
и
Y
- устройство и номер раздела для вашего системного раздела EFI. Если Вы устанавливаете rEFInd в стандартный/запасной загрузочный путь
esp
/EFI/BOOT/bootx64.efi
, Вы также можете пропустить этот шаг.
# efibootmgr --create --disk
/dev/sdX
--part
Y
--loader /EFI/refind/refind_x64.efi --label "rEFInd Boot Manager" --unicode
На данном этапе Вы должны быть способны загрузиться в rEFInd, но он не загрузит ваше ядро. Если ядро не находится в вашем ESP, rEFInd может примонтировать разделы, чтобы найти его - учитывая, что у него есть необходимые драйверы.
rEFInd автоматически загружает все драйвера из подкаталогов
drivers
и
drivers_
arch
(например,
drivers_x64
) в своем установочном каталоге.
# mkdir
esp
/EFI/refind/drivers_x64
# cp /usr/share/refind/drivers_x64/
drivername
_x64.efi
esp
/EFI/refind/drivers_x64/
Теперь rEFInd должен иметь загрузочную запись для Вашего ядра, но он не передаст необходимые параметры ядра. См.
#Передача параметров ядра
. Теперь Вы должны иметь возможность загрузить Ваше ядро при помощи rEFInd. Если Вы все еще не можете загрузить ядро или Вам нужно отредактировать настройки rEFInd, многие параметры могут быть изменены при помощи конфигурационного файла:
# cp /usr/share/refind/refind.conf-sample
esp
/EFI/refind/refind.conf
Пример конфигурационного файла хорошо закомментирован и не требует дополнительных разъяснений.
Если Вы не выставили параметр
textonly
в конфигурационном файле, Вам стоит скопировать иконки rEFInd, чтобы избавиться от уродливых стандартных плейсхолдеров:
# cp -r /usr/share/refind/icons
esp
/EFI/refind/
Вы можете попробовать различные шрифты, копируя их и изменяя параметр
font
в
refind.conf
:
# cp -r /usr/share/refind/fonts
esp
/EFI/refind/
Совет
Нажмите
F10
в rEFInd, чтобы сохранить скриншот в самый верхний каталог ESP.
Обновление
Pacman обновляет файлы rEFInd в
/usr/share/refind/
, но копировать новые файлы в ESP не будет. Если
refind-install
для Вашей изначальной установки rEFInd сработал, Вы можете запустить его заново, чтобы скопировать новые файлы. Новый конфигурационный файл будет скопирован как
refind.conf-sample
, так что Вы сможете внести изменения в существующий файл при помощи утилиты
diff
. Если Вашему rEFInd требуется
#Ручная установка
, Вам потребуется самим выяснить, какие файлы нужно скопировать.
Хук Pacman
Вы можете автоматизировать процесс хуком pacman:
/etc/pacman.d/hooks/refind.hook
[Trigger]
Operation=Upgrade
Type=Package
Target=refind

[Action]
Description = Updating rEFInd on ESP
When=PostTransaction
Exec=/usr/bin/refind-install
Где
Exec=
, возможно, потребуется изменить на корректную команду обновления для Вашей системы. Если была выполнена
#Ручная установка
, Вы можете создать собственный скрипт обновления, чтобы она вызывалась вместе с хуком.
Совет
Если при настройке rEFInd использовалась
#Безопасная загрузка (Secure Boot)
, вдобавок к
--localkeys
Вам потребуется добавить
--yes
к команде
refind-install
. Это предотвратит провал скрипта, если он запускается с выключенным Secure Boot. См.
refind-install(8)
для дополнительной информации.
Примечание
Если ESP не примонтирован к
/boot
, и Вы полагаетесь на автоматическое монтирование, убедитесь, что Вы предзагрузили модуль
vfat
, как указано в разделе
Системный раздел EFI#Альтернативные точки монтирования
. Иначе, если
refind
обновится вместе с ядром, раздел ESP будет недоступен.
Настройка
Конфигурация rEFInd
refind.conf
находится в том же разделе, что и EFI-приложение rEFInd (обычно
esp
/EFI/refind
или
esp
/EFI/BOOT
). Стандартный конфигурационный файл содержит обширные комментарии, объясняющие все его параметры, см.
Configuring the Boot Manager
для дополнительных объяснений.
Передача параметров ядра
Есть два метода задания
параметров ядра
, которые rEFInd передаст в ядро.
Для ядер, автоматически найденных rEFInd
Для автоматически найденных ядер Вы можете или указать параметры ядра напрямую в
/boot/refind_linux.conf
, или полагаться на способность rEFInd определять корневой раздел и параметры ядра. См.
Methods of Booting Linux: For Those With Foresight or Luck: The Easiest Method
для дополнительной информации.
Совет
rEFInd автоматически выберет иконку Arch Linux (
os_arch.png
) для загрузочной опции, когда
/etc/os-release
находится в том же разделе, что и ядро. Если Ваш
/boot
находится в отдельном разделе, см.
Configuring the Boot Manager: Setting OS Icons
.
rEFInd
не поддерживает унифицированные образы ядер.
Чтобы у Вас была иконка для унифицированного образа ядра, скопируйте
/usr/share/refind/icons/os_arch.png
в
esp
/EFI/Linux/
и убедитесь, что имена файлов совпадают. Т. е., если у Вас есть
esp
/EFI/Linux/arch-linux.efi
, то назовите иконку
esp
/EFI/Linux/arch-linux.png
.
Чтобы rEFInd поддерживал формат имен
ядер
Arch Linux и мог сопоставить их с их образами initramfs, раскомментируйте и отредактируйте параметр
extra_kernel_version_strings
в
refind.conf
, например:
esp
/EFI/refind/refind.conf
...
extra_kernel_version_strings linux-hardened,linux-rt-lts,linux-zen,linux-lts,linux-rt,linux
...
Примечание
rEFInd поддерживает лишь обнаружение одного образа initramfs на ядро, а значит, он не будет обнаруживать запасные initramfs или образы микрокода. Они должны быть обозначены вручную.
Без строчки
extra_kernel_version_strings
, переменная
%v
в
refind_linux.conf
не будет работать для
ядер
Arch Linux.
refind_linux.conf
Если rEFInd автоматически находит Ваше ядро, Вы можете поместить файл
refind_linux.conf
, содержащий параметры ядра, в тот же каталог, где и Ваше ядро. Вы можете использовать
/usr/share/refind/refind_linux.conf-sample
в качестве отправной точки. Первая раскомментированная строчка
refind_linux.conf
и будет параметрами ядра по умолчанию. Последующие строчки будут определять пункты в подменю, доступные при помощи
+
,
F2
, или
Insert
.
Иначе, попробуйте запустить
mkrlconf
с root-правами. Он попытается найти Ваше ядро в
/boot
и автоматически сгенерировать
refind_linux.conf
. Скрипт назначит лишь самые базовые параметры ядра, так что убедитесь в корректности файла.
Если Вы не укажете параметр
initrd=
, rEFInd автоматически добавит его при помощи поиска общих имен файлов RAM-диска в том же каталоге, где и ядро. Если Вам требуется несколько параметров
initrd=
, указать их нужно вручную в
refind_linux.conf
. Например, микрокод, передающийся перед initramfs:
/boot/refind_linux.conf
"Boot using default options"     "root=PARTUUID=
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
rw add_efi_memmap initrd=boot\intel-ucode.img initrd=boot\amd-ucode.img initrd=boot\initramfs-%v.img"
"Boot using fallback initramfs"  "root=PARTUUID=
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
rw add_efi_memmap initrd=boot\intel-ucode.img initrd=boot\amd-ucode.img initrd=boot\initramfs-%v-fallback.img"
"Boot to terminal"               "root=PARTUUID=
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
rw add_efi_memmap initrd=boot\intel-ucode.img initrd=boot\amd-ucode.img initrd=boot\initramfs-%v.img systemd.unit=multi-user.target"
Важно
Путь
initrd
относителен к корню файловой системы, в которой лежит ядро. Это может быть
initrd=\boot\initramfs-%v.img
, или же, если
/boot
- отдельный раздел (т. е. ESP),
initrd=initramfs-%v.img
.
Используйте обратные слэши (
\
) в качестве разделителей пути в параметре
initrd
, иначе ядро не сможет найти образ(ы) initramfs:
EFI stub: ERROR: Failed to open file: /boot/intel-ucode.img
.
При использовании образов initramfs, сгенерированных
Booster
, замените
initramfs
на
booster
в имени файлов initramfs. Т. е.
initrd=\boot\booster-%v.img
.
Примечание
Кавычки экранируются повторением (т. е.
""
- экранированная версия
"
). Например, чтобы передать параметр
acpi_osi="Windows 2015"
в первую загрузочную запись вышеуказанного
refind_linux.conf
:
"Boot using default options"     "... initrd=boot\initramfs-%v.img
acpi_osi=""Windows 2015""
"
rEFInd заменяет
%v
в
refind_linux.conf
версией ядра (извлекая ее из имени файла). Чтобы rEFInd поддерживал ядра Arch Linux, параметр
extra_kernel_version_strings
должен быть отредактирован как описано в разделе
#Для ядер, автоматически найденных rEFInd
.
Без конфигурации
Если Вы просто установите rEFInd в ESP и запустите без каких-либо дополнительных телодвижений (скажем, при помощи консоли UEFI или KeyTool, или напрямую из встроенного ПО), Вы все еще получите меню загрузки, созданное при помощи автообнаружения, без какой-либо требуемой конфигурации.
Это работает, поскольку у rEFInd есть запасной механизм, который может:
Определить корневой раздел (параметр
root=
) при помощи
спецификации обнаруживаемых разделов
или
/etc/fstab
.
Находить опции ядра (
ro
или
rw
) из
атрибутов GPT-разделов
(используя атрибут
60
"только-чтение") или
/etc/fstab
.
Примечание
rEFInd не поддерживает коды экранирования (например, для
пробелов
в
/etc/fstab
.
Для строф загрузки, заданных вручную
Если Ваше ядро не обнаружено автоматически, или же Вы просто хотите больше контроля над опциями в пунктах меню, Вы можете вручную создавать пункты меню используя строфы в
refind.conf
. Убедитесь, что
scanfor
включает
manual
, иначе эти пункты не появятся в меню rEFInd. Параметры ядра задаются при помощи ключевого слова
options
. rEFInd добавит параметр
initrd=
, используя файл, указанный ключевым словом
initrd
в строфе. Если Вам нужны дополнительные initrd (например, для
микрокода
), Вы можете указать их в
options
(и тот, что указан ключевым словом
initrd
, будет добавлен в конец).
Строфы, заданные вручную, объясняются в
Creating Manual Boot Stanzas
.
esp
/EFI/refind/refind.conf
...

menuentry "Arch Linux" {
	icon     /EFI/refind/icons/os_arch.png
	volume   "Arch Linux"
	loader   /boot/vmlinuz-linux
	initrd   /boot/initramfs-linux.img
	options  "root=PARTUUID=
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
rw add_efi_memmap initrd=boot\intel-ucode.img initrd=boot\amd-ucode.img"
	submenuentry "Boot using fallback initramfs" {
		initrd /boot/initramfs-linux-fallback.img
	}
	submenuentry "Boot to terminal" {
		add_options "systemd.unit=multi-user.target"
	}
}
Скорее всего, Вам потребуется изменить
volume
, чтобы этот параметр соответствовал LABEL файловой системы, или PARTLABEL/PARTUUID того раздела, где находится образ ядра. PARTUUID должен быть в верхнем регистре. Смотрите раздел
Постоянные имена для блочных устройств#by-label
для примеров присваивания метки тома. Если
volume
не указан, он по умолчанию равняется тому, из которого запускается rEFInd (обычно системный раздел EFI).
Важно
Пути
loader
и
initrd
относительны к корню
volume
. Если
/boot
- отдельный раздел (напр. ESP), пути loader и initrd должны быть
/vmlinuz-linux
и
/initramfs-linux.img
, соответственно.
Используйте обратные слэши (
\
) в качестве разделителей пути в параметре
initrd
, иначе ядро не сможет найти образ(ы) initramfs:
EFI stub: ERROR: Failed to open file: /boot/intel-ucode.img
.
При использовании образов initramfs, сгенерированных
Booster
, замените
initramfs
на
booster
в имени файлов initramfs. Т. е.
initrd   /boot/booster-linux.img
.
Примечание
Кавычки экранируются повторением (т. е.
""
- экранированная версия
"
). Например, чтобы передать параметр
acpi_osi="Windows 2015"
в загрузочную запись
"Arch Linux"
:
options  "... initrd=boot\amd-ucode.img
acpi_osi=""Windows 2015""
"
Установка параллельно уже существующему UEFI Windows
Примечание
Обычные подводные камни
двойной загрузки с Windows
здесь применимы.
rEFInd совместим с системным разделом EFI, созданным установкой UEFI Windows, так что нет нужды создавать или форматировать еще один раздел FAT32, когда Вы устанавливаете Arch Linux вместе с Windows. Просто примонтируйте уже существующий ESP и установите rEFInd, как обычно. По умолчанию, функция автообнаружения rEFInd должна опознать любые существующие загрузчики Windows.
Примечание
В некоторых случаях Windows ведет себя иначе (экран загрузки в низком разрешении, логотип производителя заменен логотипом Windows, черный экран после экрана загрузки, артефакты). Если Вы встречаетесь с такими проблемами, попробуйте выставить
use_graphics_for +,windows
в
esp
/EFI/refind/refind.conf
, или добавьте
graphics on
в загрузочную строфу Windows.
Инструменты
rEFInd поддерживает
запуск различных инструментов
. Они должны быть установлены отдельно. Отредактируйте
showtools
в
refind.conf
, чтобы выбрать, какие инструменты должны показываться.
esp
/EFI/refind/refind.conf
...
showtools
shell
,
memtest
,
mok_tool
,
gdisk
,
fwupdate
...
...
Консоль UEFI
Смотрите
Unified Extensible Firmware Interface (Русский)#UEFI Shell
.
Скопируйте
shellx64.efi
в корень системного раздела EFI.
Memtest86+
Установите пакет
memtest86+-efi
и скопируйте его в
esp
/EFI/tools/
.
# cp /boot/memtest86+/memtest.efi
esp
/EFI/tools/memtest86.efi
Средства управления ключами
rEFInd может обнаружить средства управления ключами безопасной загрузки, если они помещены в каталог rEFInd в ESP,
esp
/
или
esp
/EFI/tools/
.
HashTool
Следуйте
#Использование прелоадера
и
HashTool.efi
будет помещен в каталог rEFInd.
MokManager
Следуйте
#Использование shim
и MokManager будет помещен в каталог rEFInd.
KeyTool
Установите
efitools
.
Поместите бинарный файл EFI KeyTool в
esp
/
или
esp
/EFI/tools/
с именем
KeyTool.efi
или
KeyTool-signed.efi
.
См.
Secure Boot#Using KeyTool
для инструкций по подписыванию
KeyTool.efi
.
GPT fdisk (gdisk)
Загрузите
GPT fdisk (Русский)#EFI-приложение gdisk
и скопируйте
gdisk_x64.efi
в
esp
/EFI/tools/
.
fwupd
Установите
fwupd-efi
и настройте
fwupd
.
Скопируйте
fwupdx64.efi
и файлы firmware в
esp
/EFI/tools/
:
# cp /usr/lib/fwupd/efi/fwupdx64.efi
esp
/EFI/tools/
Выключение или перезагрузка
rEFInd имеет встроенные пункты меню выключения и перезагрузки. Так как список инструментов, находящийся здесь, самый обширный в своем роде на всей вики, пользователи консоли UEFI или иных менеджеров загрузки UEFI, например,
systemd-boot
, могут быть заинтересованы в
powerofforreboot.efi
AUR
.
Советы и рекомендации
Использование драйверов в консоли UEFI
Чтобы использовать драйверы rEFInd в консоли UEFI, загрузите их командой
load
и обновите диски при помощи
map -r
.
Shell> load FS0:\EFI\refind\drivers\ext4_x64.efi
Shell> map -r
Теперь Вы можете получить доступ к своей файловой системе из консоли UEFI.
Указание разрешения efifb
Если разрешение в
refind.conf
выставлено на неверное значение, на всех системах, кроме Mac, rEFInd будет отображать список поддерживаемых разрешений. На Mac он просто будет втихую использовать разрешение по умолчанию.
Чтобы определить разрешения фреймбуфера, поддерживаемые
efifb
, скопируйте
/usr/share/gnu-efi/apps/x86_64/modelist.efi
из
gnu-efi
в корень ESP. Зайдите в консоль UEFI и запустите
modelist.efi
.
Shell> FS0:\modelist.efi
GOP reports MaxMode 3
 0: 640x480 BGRR pitch 640
*1: 800x600 BGRR pitch 800
 2: 1024x768 BGRR pitch 1024
Выберите одно в
refind.conf
. Перезагрузитесь и убедитесь, что настройки были применены, запустив
dmesg | grep efifb
с правами root.
Поддержка подтомов Btrfs
Совет
Убедитесь, что драйвер
btrfs_x64.efi
установлен, его можно установить вручную копированием из
/usr/share/refind/drivers_x64/btrfs_x64.efi
в
esp
/EFI/refind/drivers_x64/btrfs_x64.efi
, или можно установить все драйверы при помощи опции
refind-install /dev/sdx --alldrivers
.
Важно
btrfs_x64.efi
не поддерживает
raid1c3/4
.
Автообнаружение
Чтобы разрешить автоопределение ядер на подтоме Btrfs, раскомментируйте и отредактируйте
also_scan_dirs
в
refind.conf
.
esp
/EFI/refind/refind.conf
...
also_scan_dirs +,
subvolume
/boot
...
Далее, добавьте
subvol=
subvolume
к
rootflags
в
refind_linux.conf
и затем присоедините
subvolume
к пути initrd.
/boot/refind_linux.conf
"Boot using standard options"  "root=PARTUUID=
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
rw
rootflags=subvol=
subvolume
initrd=
subvolume
\boot\initramfs-%v.img"
Загрузочная строфа, заданная вручную
Если Вы загружаете подтом
btrfs
как корень, присоедините путь до подтома к путям loader и initrd, и дополните строку
options
rootflags=subvol=
root_subvolume
. В примере ниже в качестве корня монтируется подтом btrfs, названный 'ROOT' (например,
mount -o subvol=ROOT /dev/sdxY /mnt
):
esp
/EFI/refind/refind.conf
...
menuentry "Arch Linux" {
        icon     /EFI/refind/icons/os_arch.png
        volume   "[bootdevice]"
        loader
/ROOT
/boot/vmlinuz-linux
        initrd
/ROOT
/boot/initramfs-linux.img
        options  "root=PARTUUID=
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
rw
rootflags=subvol=ROOT
"
...
}
Если этого не сделать, Вы получите следующее сообщение об ошибке:
ERROR: Root device mounted successfully, but /sbin/init does not exist.
LoaderDevicePartUUID
С версии 0.13.1, rEFInd поддерживает задание переменной UEFI
LoaderDevicePartUUID
. Это позволяет
systemd-gpt-auto-generator(8)
примонтировать ESP без необходимости указывать его в
/etc/fstab
. Смотрите раздел
systemd (Русский)#Автомонтирование GPT-раздела
.
Чтобы указать
LoaderDevicePartUUID
в случае rEFInd, отредактируйте
refind.conf
и раскомментируйте
write_systemd_vars true
:
esp
/EFI/refind/refind.conf
...
write_systemd_vars true
...
Вы можете убедиться, что она задана, проверив ее значение при помощи
cat /sys/firmware/efi/efivars/LoaderDevicePartUUID-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
, или посмотрев на состояние "Boot loader sets ESP information" в выводе
bootctl
.
Решение проблем
Apple Mac
mactel-boot
AUR
[
ссылка недействительна
: package not found]
- экспериментальная утилита
bless
для Linux. Если это не сработает, используйте
bless
из OSX, чтобы установить rEFInd, как загрузочную запись по умолчанию:
# bless --setBoot --folder
esp
/EFI/refind --file
esp
/EFI/refind/refind_x64.efi
Пустой экран меню rEFInd
Если Ваша папка
drivers_x64
содержит несколько драйверов файловых систем (см.
#Установка загрузчика rEFInd
для разъяснений), это может привести к неправильному функционированию rEFInd из-за бага драйвера файловой системы, где отображается только пустой экран с логотипом rEFInd (для кастомных тем это будет фоновое изображение). Чтобы исправить это, уберите все драйвера,
кроме того, что отвечает за файловую систему с ядром
.
Другой потенциальный пустой экран случается при двойной загрузке с Windows, когда rEFInd не может просканировать ESP на других дисках. Чтобы исправить это, используйте
blkid
, чтобы определить разделы Windows, и добавьте
PARTUUID
каждого раздела Windows, как отделенную запятой запись в переменную
dont_scan_volumes
в
refind.conf
. Например:
# blkid
/dev/nvme0n1p1: LABEL="SYSTEM" UUID="4CE7-C215" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="
13aa9955-1234-5678-9098-006c334b5088
"
/dev/nvme0n1p5: LABEL="Windows RE Tools" BLOCK_SIZE="512" UUID="08C4E6C5C4E6B45A" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="
4eced110-0987-6543-2123-b0ab8576869b
"
esp
/EFI/refind/refind.conf
...
dont_scan_volumes 13aa9955-1234-5678-9098-006c334b5088,4eced110-0987-6543-2123-b0ab8576869b
...
Не используется логотип дистрибутива
Если Вы видите
Такса
вместо логотипа Arch, возможно, Вас затронула
эта проблема
(тип вашего корневого раздела -
Linux x86-64 root (/)
вместо
Linux filesystem
).
Вы можете исправить это, изменив тип раздела.
Смотрите также
The rEFInd Boot Manager
от Roderick W. Smith.
Wikipedia:rEFInd
/usr/share/refind/docs/README.txt
Обсуждение rEFInd на Sourceforge