В Gentoo Handbook в главе про настройку загрузчика нам предлагается несколько вариантов:
- GRUB2
Привычный всем GRUB первой версии со временем заменили на вторую. Новая версия была создана на базе проекта PUPA. Может работать как в обычном режиме BIOS, так и в режиме EFI. - LILO
Устаревший загрузчик, который уже почти нигде не используется. Не поддерживает EFI. - Ядро как загрузчик
Ядро Linux позволяет собрать его с поддержкой EFI Stub, давая возможность загружаться сразу в него, минуя сторонние загрузчики. Естественно, этот вариант не подразумевает загрузки в Microsoft Windows (если, конечно, это не будет делаться через меню загрузки BIOS/EFI, что требует дополнительных действий от пользователя, чтобы выбрать другую ОС).
Однако, это не все доступные варианты. В качестве альтернативы можно также использовать нативные загрузчики EFI — например, rEFInd. Об этом и пойдёт речь в посте.
Предисловие *
Во-первых, по традиции хочу напомнить, что в этом посте некоторые действия (например, монтирование раздела в Linux) требуют прав root. Однако, в приведённых примерах я не буду указывать команду sudo.
Также, стоит отметить, что в данном примере есть некоторые допущения: Secure Boot выключен; /boot находится на отдельном разделе; жёсткий диск имеет таблицу разделов GPT, Microsoft Windows была установлена до Gentoo Linux и раздел EFI уже существует, с ядром не используется initrd, и некоторые другие маловажные моменты. Всё абсолютно неважно если понять принцип работы, который довольно прост.
Кроме того, важно понимать, что данные принципы будут работать для любого дистрибутива с небольшими изменениями.
Установка *
Первой половиной действий необходимых для организации загрузки в режиме EFI будет установка загрузчика. Его дистрибутив можно взять на сайте проекта. Там нам будет необходимо взять последнюю версию по ссылке «A binary zip file».
Копирование *
Linux *
Для начала распакуем архив с загрузчиком.
$ unzip refind-bin-0.9.0.zip
В архиве мы увидим скрипты для установки, инструкции, лицензию и прочее. Так как мы будем устанавливать загрузчик вручную, нас интересует только папка refind. В ней мы найдём сам загрузчик (refind_ia32.efi refind_x64.efi), директории драйверов (drivers_ia32 drivers_x64), пример конфига (refind.conf-sample) и директории утилит (tools_ia32 tools_x64).
$ cd refind-bin-0.9.0 $ ls refind drivers_ia32 drivers_x64 icons refind.conf-sample refind_ia32.efi refind_x64.efi tools_ia32 tools_x64
Так как у нас архитектура amd64, часто так же называемая x64, можно сразу удалить лишнее.
$ rm -rf refind/{drivers_ia32,refind_ia32.efi,tools_ia32}
При желании, вы можете также удалить лишние иконки операционных систем в директории refind/icons.
Теперь нам нужно смонтировать раздел EFI. Большая часть дальнейших действий требует прав root, поэтому можно заранее сделать sudo -i.
EFI раздел определить довольно просто: чаще всего он имеет размер 100 мегабайт и тип/код раздела равен EF00.
# mount /boot # mkdir /boot/efi # gdisk -l /dev/sda Number Start (sector) End (sector) Size Code Name 1 2048 598015 291.0 MiB 2700 Basic data partition 2 598016 614399 8.0 MiB EF02 ----------------------------------------------------------------------------- 3 614400 817151 99.0 MiB EF00 EFI system partition ----------------------------------------------------------------------------- 4 817152 1079295 128.0 MiB 0C01 Microsoft reserved ... 5 1079296 327837695 155.8 GiB 0700 6 327837696 328759295 450.0 MiB 2700 7 328759296 330330111 767.0 MiB 0700 Basic data partition 8 330330112 937699327 289.6 GiB 0700 Basic data partition # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 447.1G 0 disk ├─sda1 8:1 0 291M 0 part ├─sda2 8:2 0 8M 0 part ------------------------------------------------------------------ ├─sda3 8:3 0 99M 0 part ------------------------------------------------------------------ ├─sda4 8:4 0 128M 0 part ├─sda5 8:5 0 155.8G 0 part /media/windows ├─sda6 8:6 0 450M 0 part ├─sda7 8:7 0 767M 0 part /boot └─sda8 8:8 0 289.6G 0 part / # mount /dev/sda3 /boot/efi # ls /boot/efi EFI Temp
Скопируем загрузчик на наш раздел EFI.
# cp -r /home/skobkin/tmp/refind-bin-0.9.0/refind /boot/efi/EFI/
Windows *
Для начала, заранее распакуйте куда-нибудь архив с rEFInd. Например, пусть это будет C:\tmp\refind-bin-0.9.0\ .

В большинстве случаев, Windows будет препятствовать монтированию раздела EFI, поэтому наиболее простым вариантом будет использование современного аналога «безопасного режима с командной строкой». Попасть в него можно выбрав в меню завершения работы перезагрузку зажимая в этот момент клавишу Shift, затем выбрав «Troubleshooting» («Диагностика») → «Advanced options» («Дополнительные параметры») → «Command prompt» («Командная строка»). Перед нами откроется командная строка, в которой нам будет необходимо произвести аналогичные компированию в Linux действия с поправкой на операционную систему.
Сначала смонтируем раздел с помощью утилиты diskpart. У неё довольно интуитивно понятный текстовый интерфейс с командной строкой, где нам важно знать, что есть общие команды list (вывод списка) и select (выбор элемента) для таких сущностей как disk (физический диск) и partition (раздел). Пример монтирования диска:
diskpart
Далее, в командной строке утилиты:
list disk select disk 0 list partition select partition 2 assign letter=u
Мы выбрали второй раздел на первом диске и назначили для него букву U. Теперь, если учесть, что заранее распакованный rEFInd лежит по вышеуказанному адресу, мы копируем его следующей командой:
cp C:\tmp\refind-bin-0.9.0\refind U:\EFI\
Настройка (Windows и Linux) *
Теперь скопируем конфиг.
# cd /boot/efi/EFI/refind # cp refind.conf-sample refind.conf
И отредактируем его. Как вы можете заметить, конфиг очень неплохо документирован, поэтому я предлагаю ознакомиться с настройками вместо того чтобы просто копировать указанный пример.
# refind.conf timeout 3 resolution 1024 768 showtools shell,memtest,gdisk,windows_recovery,about,reboot,shutdown,firmware scanfor manual default_selection "Gentoo Linux" menuentry "Gentoo Linux" { icon /EFI/refind/icons/os_gentoo.png ostype Linux volume boot loader /vmlinuz-4.1.6-gentoo-skobkin options "root=/dev/sda8 ro" } menuentry "Windows 10 Pro" { loader \EFI\Microsoft\Boot\bootmgfw.efi }
Описание настроек можно найти здесь. Для самой простой конфигурации нам важны лишь несколько из них:
- volume boot
Указывает на раздел, где находится ядро. Для того, чтобы указание в таком виде работало, у раздела должна стоять метка. - loader /vmlinuz-4.1.6-gentoo-skobkin
Путь к файлу ядра относительно корня вышеуказанного раздела. Если опция volume не будет указана — от корня раздела EFI. - options «root=/dev/sda8 ro»
Путь к разделу, где находится корень файловой системы. В зависимости от того, встроен ли в ядре initrd, может появиться возможно указывать раздел по UUID и метке.
Активация *
Теперь, для того, чтобы EFI мог запускать наш загрузчик, нам нужно добавить его в хранилище конфигураций загрузчиков. Это можно сделать несколькими способами.
Windows *
bcdedit *
Данный вариант не требует стороннего ПО и выполняется как и монтирование раздела EFI в Windows в командной строке «Troubleshooting»/»Диагностики» (см. копирование в Windows). Там мы выполняем две команды. Первая создаёт запись о загрузчике, а вторая задаёт его название.
bcdedit /set {bootmgr} path \EFI\refind\refind_x64.efi bcdedit /set {bootmgr} description "rEFInd boot manager"
Easy UEFI *
В качестве очень простой альтернативы bcdedit можно использовать утилиту Easy UEFI, которая позволяет прямо в загруженной ОС Windows менять параметры загрузчиков. Вам будет необходимо создать запись для rEFInd, выбрать раздел EFI и указать путь к загрузчику.

Linux *
Для того, чтобы прописать загрузчик в Linux, необходимо, чтобы система была уже загружена в режиме EFI. Этого можно добиться либо загрузив ядро напрямую (при наличии EFI Stub) из EFI Shell, либо запустив любой LiveCD работающий в режиме EFI. Воспользуемся утилитой efibootmgr (есть в репозиториях многих дистрибутивов):
efibootmgr -c -l \\EFI\\refind\\refind_x64.efi -L "rEFInd boot manager"
Первая загрузка *
Теперь, когда вы закончили, остаётся проверить, находится ли «rEFInd boot manager» на первом месте в приоритетах загрузки в меню BIOS (EFI) и если это не так — исправить. Если вы всё сделали правильно — загрузчик запустится и предложит вам выбрать ОС для загрузки.