rEFInd (Русский)

Состояние перевода: На этой странице представлен перевод статьи REFInd. Дата последней синхронизации: 2015-02-18. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

rEFInd - это менеджер загрузки для UEFI. Является форком более неподдерживаемого rEFIt и исправляет многие проблемы, связанные с UEFI загрузкой на не-Mac системах. Он является платформонезависимым и облегчает загрузку нескольких ОС.

Установка

Установите refind-efi из официальных репозиториев.

Настройка с помощью скрипта

Пакет rEFInd содержит скрипт /usr/bin/refind-install, который упрощает процесс настройки rEFInd в качестве вашей загрузочной EFI записи по умолчанию. У скрипта есть несколько вариаций для обработки различных установок и реализаций UEFI, но для большинства систем подойдёт обычная команда

# refind-install

Он попытается найти и смонтировать ваш ESP раздел, скопировать файлы rEFInd'а в /EFI/refind/ на ESP и добавить rEFInd как загрузочную EFI запись по умолчанию с помощью UEFI#efibootmgr. Вот другой вариант этой команды (установка rEFInd в расположение загрузочной записи по умолчанию /EFI/BOOT/BOOT*.EFI), который должен работать на самых разнообразных системах:

# refind-install --usedefault /dev/sdXY --alldrivers

Где /dev/sdXY - это ваш раздел ESP.

Для разъяснения каждой опции можете прочитать комментарии в установочном скрипте.

После установки файлов rEFInd'а на ESP, проверьте, что rEFInd создал refind_linux.conf, содержащий необходимые параметры ядра (например, root=) в той же директории, где находится ваше ядро. Если он не создал этот файл, вам необходимо будет установить #Передача параметров ядру вручную иначе скорее всего вы получите панику ядра при следующей загрузке.

По умолчанию rEFInd будет сканировать все ваши носители (для которых у него есть драйвера) и добавит загрузочную запись для каждого EFI загрузчика, что он найдёт, то есть он должен добавить и ваше ядро (так как в Arch используется EFISTUB по умолчанию). Поэтому на данный момент у вас уже может быть загружаемая система.

Совет: Хорошей идеей будет правка конфигурации по умолчанию в /EFI/refind/refind.conf на ESP, для того, чтобы убедиться, что опции по умолчанию у вас работают.

Настройка вручную

Совет: rEFInd может загружать Linux различными способами. Смотрите The rEFInd Boot Manager: Methods of Booting Linux для обзора различных способов.
Обратите внимание: Для 32-битных EFI замените x64 на ia32 в нижеследующих командах.

Если у вас не работает скрипт refind-install, rEFInd можно установить вручную. В этом примере предполагается, что ваш ESP примонтирован в /boot/efi и мы будем размещать файлы rEFInd'а в /boot/efi/EFI/refind. Оба эти пути можно менять в зависимости от вашей ситуации.

Сперва скопируйте исполняемый файл на ESP:

# cp /usr/share/refind/refind_x64.efi /boot/efi/EFI/refind/

Затем используйте UEFI#efibootmgr, чтобы создать загрузочную запись в UEFI NVRAM (замените X и Y на соответствующий номер вашего носителя и раздела, где расположен ESP). Если вы устанавливаете rEFInd в расположение UEFI загрузчика по умолчанию /EFI/BOOT/BOOTX64.EFI, возможно, вы можете пропустить данный шаг.

# efibootmgr -c -d /dev/sdX -p Y -l /EFI/refind/refind_x64.efi -L "rEFInd Boot Manager"

С этого момента вы сможете загрузиться в rEFInd, но он пока не сможет загружать ваше ядро. Если ваше ядро расположено не на ESP, rEFInd может смонтировать ваши разделы, чтобы найти его, при условии что у него есть нужные драйвера:

# mkdir /boot/efi/EFI/refind/drivers
# cp /usr/share/refind/drivers_x64/myrootfs_x64.efi /boot/efi/EFI/refind/drivers

Теперь у rEFInd есть загрузочная запись с вашим ядром, но он не будет передавать необходимые параметры ядра. Следуйте инструкциям #Передача параметров ядру. Теперь вы можете загружать ваше ядро с помощью rEFInd. Если же вы всё ещё не можете загрузиться или вы хотите поиграться с настройками rEFInd'а, многие опции можно менять в конфигурационном файле:

# cp /usr/share/refind/refind.conf-sample /boot/efi/EFI/refind/refind.conf

Пример настройкм подробно прокомментирован и не требует разъяснений.

Если вы не используете textonly в конфигурационном файле, вы должны скопировать иконки для rEFInd'а, чтобы избавиться от уродливых заглушек:

# cp -r /usr/share/refind/icons /boot/efi/EFI/refind/

Также вы можете попробовать разнообразные прилагающиеся шрифты, скопировав их и прописав font myfont.png в refind.conf:

# cp -r /usr/share/refind/fonts /boot/efi/EFI/refind/
Совет: Нажатие F10 в rEFInd сохранит скриншот в директории верхнего уровня ESP раздела.

Передача параметров ядру

Существует два метода для установки параметров ядра, которые rEFInd передаст ядру.

Для ядер, автоматически обнаруженных rEFInd'ом

Если rEFInd автоматически обнаружил ваше ядро, вы можете положить файл refind_linux.conf, содержащий параметры ядра в ту же директорию, где находится ядро. В качестве шаблона вы можете взять /usr/share/refind/refind_linux.conf-sample. Первой незакомментированной строкой файла refind_linux.conf и будет параметры ядра по умолчанию. Остальные строки будут задавать параметры, которые вы сможете выбрать в подменю с помощью +, F2 или Insert.

Также вы можете попробовать:

# refind-mkrlconf

Эта команда попытается найти ваше ядро в /boot и автоматически сгенерирует refind_linux.conf. Скрипт установит только самые базовые параметры ядра, поэтому лучше проверьте, что созданный файл корректен.

Если вы не зададите параметр initrd=, rEFInd автоматически добавит его, увидя стандартное название файлов RAM disk в директории с ядром. Если вам нужно несколько initrd= параметров (например для Микрокода), вы должны задать их вручную в файле refind_linux.conf.

Ручные загрузочные блоки

Если ваше ядро не обнаружилось автоматически, или же вы просто хотите получить больше контроля над опциями для меню загрузки, вы можете вручную создать загрузочные записи, используя блоки в файле refind.conf. Убедитесь, что scanfor содержит manual, иначе эти записи не появятся в меню rEFInd'а. Параметры ядра передаются с помощью ключевого слова options. rEFInd добавит параметр initrd=, используя файл, заданный ключевым словом initrd в блоке. Если вам нужны дополнительные initrd (например, для микрокода), вы можете задать их в options (а тот, который задан ключевым словом initrd, будет добавлен в конце).

/boot/efi/EFI/refind/refind.conf
...

menuentry "Arch Linux" {
        icon     /EFI/refind/icons/os_arch.png
        volume   Boot
        loader   /boot/vmlinuz-linux
        initrd   /boot/initramfs-linux.img
        options  "root=PARTUUID=XXXXXXXX rootfstype=XXXX rw add_efi_memmap"
        submenuentry "Boot using fallback initramfs" {
                initrd /boot/initramfs-linux-fallback.img
        }
}

Возможно, вам понадобится изменить volume на соответствующий либо метке тома файловой сисьтемы, либо названию раздела, либо UUID раздела, либо же номеру раздела (например, 0:), в котором находится образ ядра. Смотрите Ext3#Assigning a label в качестве примера назначения метки тома.

Установка rEFInd при установленном UEFI Windows

Обратите внимание: Соблюдайте советы из Windows and Arch dual boot (Русский).

rEFInd совместим с системным разделом EFI, созданным при установке UEFI Windows, поэтому нет необходимости создавать или форматировать другой FAT32 раздел, если вы устанавливаете Arch рядом с Windows. Просто смонтируйте Windows'овый ESP и установите rEFInd как обычно. По умолчанию, функция автообнаружения rEFInd'а должна распознать любые существующие Windows/recovery загрузчики.

Обновление rEFInd

Pacman обновляет rEFInd файлы в /usr/share/refind, но не копирует эти новые файлы на ESP за вас. Если при установке rEFInd вы использовали refind-install, вы можете выполнить эту команду заново, чтобы скопировались новые файлы. Новый конфигурационный файл скопируется как refind.conf-sample, так что вы сможете интегрировать изменения в ваш конфигурационный файл, воспользовавшись утилитой diff. Если вы использовали ручную установку rEFInd, вам нужно будет скопировать новые файлы самостоятельно.

Автоматизация с помощью Systemd

Чтобы автоматизировать данный процесс, вам понадобится .path файл для наблюдения за обновлениями rEFInd и .service файл для копирования новых файлов и обновления nvram.

/etc/systemd/system/refind_update.path
[Unit]
Description=path monitor for rEFInd updates

[Path]
PathChanged=/usr/share/refind

[Install]
WantedBy=multi-user.target
/etc/systemd/system/refind_update.service
[Unit]
Description=rEFInd boot manager update

[Service]
Type=oneshot
ExecStart=/usr/bin/refind-install

Затем включите refind_update.path.

Apple Маки

mactel-boot из AUR - это экспериментальная "благословительная" утилита для Linux. Если она не работает, используйте "благословление" изнутри OSX, чтобы установить rEFInd в качестве загрузочной записи по умолчанию. Предполагая, что ваш UEFISYS раздел смонтирован в /mnt/efi, находясь в OSX выполните:

# bless --setBoot --folder /mnt/efi/EFI/refind --file /mnt/efi/EFI/refind/refind_x64.efi

VirtualBox

На данный момент VirtualBox умеет загружать только запись по умолчанию, расположенную в /EFI/BOOT/BOOT*.EFI, поэтому refind-install нужно как минимум использовать с опцией --usedefault. Смотрите VirtualBox (Русский)#Установка в режиме EFI для дополнительной информации.

Утилиты

rEFInd поддерживает запуск некоторых сторонних утилит. Утилиты нужно устанавливать отдельно. Отредактируйте showtools в refind.conf, чтобы выбрать, какие будут отображаться.

/boot/efi/EFI/refind/refind.conf
...
# Какие внешние не относящиеся к загрузчику утилиты будут показаны в строке с утилитами
#   и в каком порядке отображать их:
#  shell            - EFI shell (требуется внешняя программа; смотрите документацию rEFInd
#                     для подробностей)
#  memtest          - программа memtest86, в EFI/tools, EFI/memtest86,
#                     EFI/memtest, EFI/tools/memtest86 или EFI/tools/memtest
#  gptsync          - утилита gptsync.efi (опасная) (требуется внешняя программа;
#                     смотрите документацию rEFInd для подробностей)
#  gdisk            - программа gdisk для управления разделами
#  apple_recovery   - загружает раздел Apple Recovery HD, если такой есть
#  windows_recovery - загружает OEM утилиту восстановления Windows, если такая есть
#                     (смотрите также опцию windows_recovery_files)
#  mok_tool         - активирует возможность управления утилитой Machine Owner Key (MOK),
#                     MokManager.efi, использующейся на Secure Boot системах
#  about            - опция отображения "об этой программе"
#  exit             - тег для выхода из rEFInd
#  shutdown         - выключает компьютер (она ошибочно может приводить к перезагрузке
#                     на многих UEFI системах)
#  reboot           - тег для перезагрузки компьютера
#  firmware         - тег для перезагрузки компьютера и входа в интерфейс прошивки
#                     (игнорируется на старых компьютерах)
#  netboot          - запускает утилиту ipxe.efi для сетевой (PXE) загрузки
# По умолчанию включены shell,memtest,gdisk,apple_recovery,windows_recovery,mok_tool,about,shutdown,reboot,firmware
#
showtools shell, memtest, netboot, about, reboot, firmware
...

UEFI shell

Смотрите UEFI shell.

Скопируйте shellx64.efi в корень Системного Раздела EFI

Memtest86

Установите memtest86-efi из AUR и скопируйте его в tools/.

# cp /usr/share/memtest86-efi/bootx64.efi /boot/efi/EFI/tools/memtest86.efi

iPXE

Обратите внимание: Поддержка PXE в rEFInd является экспериментальной.

refind-efi содержит бинарники iPXE UEFI, вам просто нужно скопировать их в tools/.

# cp /usr/share/refind/tools_x64/ipxe_discovery_x64.efi /boot/efi/EFI/tools/ipxe_discovery.efi
# cp /usr/share/refind/tools_x64/ipxe_x64.efi /boot/efi/EFI/tools/ipxe.efi

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