rEFInd (Русский)

From ArchWiki
Jump to: navigation, search

Tango-preferences-desktop-locale.pngЭта страница нуждается в сопроводителеTango-preferences-desktop-locale.png

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki
Состояние перевода: На этой странице представлен перевод статьи REFInd. Дата последней синхронизации: 2015-07-29. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

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

Примечание: В этой статье под $esp будем подразумевать точку монтирования системного раздела EFI также называемого ESP.

Установка

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

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

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

# refind-install

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

Примечание: По умолчанию refind-install устанавливает только драйвер для вашей корневой файловой системы, если вы хотите установить дополнительные драйвера, перейдите к разделу #Драйвера файловых систем.

Вы также можете установить rEFInd в загрузочный путь по умолчанию/аварийный /EFI/BOOT/BOOT*.EFI. Это может пригодиться для загрузочных USB flash накопителей или для систем, у которых наблюдаются проблемы с изменениеми NVRAM при использовании утилиты efibootmgr:

# refind-install --usedefault /dev/sdXY

Где /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:

# cp /usr/share/refind/refind_x64.efi $esp/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 $esp/EFI/refind/drivers
# cp /usr/share/refind/drivers_x64/myrootfs_x64.efi $esp/EFI/refind/drivers

Теперь у 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 раздела.

Драйвера файловых систем

Примечание: rEFInd'у не требуется, чтобы ваше ядро располагалось в каком-то определённом месте, однако если оно будет не на ESP, вам понадобится использовать драйвера файловых систем, чтобы rEFInd мог читать его.

На данный момент в rEFInd есть read-only драйвера для следующих файловых систем:

Совет: Чтобы найти дополнительные драйвера, смотрите The rEFInd Boot Manager: Using EFI Drivers: Finding Additional EFI Drivers.

Установка драйверов для rEFInd

rEFInd автоматически загружает все драйвера из поддиректорий drivers и drivers_arch (например, drivers_x64) в его директории установки.

# cp /usr/share/refind/drivers_x64/drivername_x64.efi $esp/EFI/refind/drivers_x64/
Совет: Есди вы используете скрипт rEFInd'а для установки, вы можете установить все драйвера с помощью опции --alldrivers. Это полезно например для загрузочных USB flash накопителей.
# refind-install --usedefault /dev/sdXY --alldrivers

Использование драйверов в UEFI shell

Чтобы использовать драйвера rEFInd'а в UEFI шелле, загрузите их с помощью команды load и обновите подключенные носители командой map -r.

# load FS0:\EFI\refind\drivers\ext4_x64.efi
# map -r

Теперь вы можете получить доступ к вашей файловой системе из UEFI шелла.

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

Существует два метода для установки параметров ядра, которые 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, будет добавлен в конце).

$esp/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
Unit=refind_update.service

[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-bootAUR из 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, чтобы выбрать, какие будут отображаться.

$esp/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[broken link: invalid section]

Memtest86

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

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

iPXE

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

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

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

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