rEFInd (Русский)
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 или копированием файлов и выставлением загрузочной записи вручную.
Установка при помощи 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) для дополнительной информации.
Использование shim
Установите shim-signedAUR. См. 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.
/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
В 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-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=
, возможно, потребуется изменить на корректную команду обновления для Вашей системы. Если была выполнена #Ручная установка, Вы можете создать собственный скрипт обновления, чтобы она вызывалась вместе с хуком.
--localkeys
Вам потребуется добавить --yes
к команде refind-install
. Это предотвратит провал скрипта, если он запускается с выключенным Secure Boot. См. refind-install(8) для дополнительной информации./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
.
/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
rEFInd совместим с системным разделом EFI, созданным установкой UEFI Windows, так что нет нужды создавать или форматировать еще один раздел FAT32, когда Вы устанавливаете Arch Linux вместе с Windows. Просто примонтируйте уже существующий ESP и установите rEFInd, как обычно. По умолчанию, функция автообнаружения rEFInd должна опознать любые существующие загрузчики 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.efiAUR.
Советы и рекомендации
Использование драйверов в консоли 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-bootAUR[ссылка недействительна: 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