rEFInd (Русский)
Ссылки по теме
rEFInd - это менеджер загрузки для UEFI. Является форком более неподдерживаемого rEFIt и исправляет многие проблемы, связанные с UEFI загрузкой на не-Mac системах. Он является платформонезависимым и облегчает загрузку нескольких ОС.
Contents
Установка
Установите 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
. Это может пригодиться для загрузочных USB flash накопителей или для систем, у которых наблюдаются проблемы с изменениеми NVRAM при использовании утилиты efibootmgr:
# refind-install --usedefault /dev/sdXY
Где /dev/sdXY - это ваш раздел ESP.
Для разъяснения каждой опции можете прочитать комментарии в установочном скрипте.
После установки файлов rEFInd'а на ESP, проверьте, что rEFInd создал refind_linux.conf
, содержащий необходимые параметры ядра (например, root=
) в той же директории, где находится ваше ядро. Если он не создал этот файл, вам необходимо будет установить #Передача параметров ядру вручную иначе скорее всего вы получите панику ядра при следующей загрузке.
По умолчанию rEFInd будет сканировать все ваши носители (для которых у него есть драйвера) и добавит загрузочную запись для каждого EFI загрузчика, что он найдёт, то есть он должен добавить и ваше ядро (так как в Arch используется EFISTUB по умолчанию). Поэтому на данный момент у вас уже может быть загружаемая система.
Настройка вручную
Если у вас не работает скрипт 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/
Драйвера файловых систем
На данный момент в rEFInd есть read-only драйвера для следующих файловых систем:
Установка драйверов для rEFInd
rEFInd автоматически загружает все драйвера из поддиректорий drivers
и drivers_arch
(например, drivers_x64
) в его директории установки.
# cp /usr/share/refind/drivers_x64/drivername_x64.efi $esp/EFI/refind/drivers_x64/
Использование драйверов в 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
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
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
Смотрите также
- The rEFInd Boot Manager by Roderick W. Smith.
-
/usr/share/refind/docs/README.txt