Дуалбут Gentoo Linux и Microsoft Windows на машине с UEFI с помощью rEFInd

refindВ 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 *

Для начала распакуем архив с загрузчиком.

В архиве мы увидим скрипты для установки, инструкции, лицензию и прочее. Так как мы будем устанавливать загрузчик вручную, нас интересует только папка refind. В ней мы найдём сам загрузчик ( refind_ia32.efi refind_x64.efi), директории драйверов ( drivers_ia32 drivers_x64), пример конфига ( refind.conf-sample) и директории утилит ( tools_ia32 tools_x64).

Так как у нас архитектура amd64, часто так же называемая x64, можно сразу удалить лишнее.

При желании, вы можете также удалить лишние иконки операционных систем в директории refind/icons.

Теперь нам нужно смонтировать раздел EFI. Большая часть дальнейших действий требует прав root, поэтому можно заранее сделать sudo -i.

EFI раздел определить довольно просто: чаще всего он имеет размер 100 мегабайт и тип/код раздела равен EF00.

Скопируем загрузчик на наш раздел EFI.

Windows *

Для начала, заранее распакуйте куда-нибудь архив с rEFInd. Например, пусть это будет C:\tmp\refind-bin-0.9.0\ .

Работа с diskpart
Работа с diskpart

В большинстве случаев, Windows будет препятствовать монтированию раздела EFI, поэтому наиболее простым вариантом будет использование современного аналога «безопасного режима с командной строкой». Попасть в него можно выбрав в меню завершения работы перезагрузку зажимая в этот момент клавишу Shift, затем выбрав «Troubleshooting» («Диагностика») → «Advanced options» («Дополнительные параметры») → «Command prompt» («Командная строка»). Перед нами откроется командная строка, в которой нам будет необходимо произвести аналогичные компированию в Linux действия с поправкой на операционную систему.

Сначала смонтируем раздел с помощью утилиты diskpart. У неё довольно интуитивно понятный текстовый интерфейс с командной строкой, где нам важно знать, что есть общие команды list (вывод списка) и select (выбор элемента) для таких сущностей как disk (физический диск) и partition (раздел). Пример монтирования диска:

Далее, в командной строке утилиты:

Мы выбрали второй раздел на первом диске и назначили для него букву U. Теперь, если учесть, что заранее распакованный rEFInd лежит по вышеуказанному адресу, мы копируем его следующей командой:

Настройка (Windows и Linux) *

Теперь скопируем конфиг.

И отредактируем его. Как вы можете заметить, конфиг очень неплохо документирован, поэтому я предлагаю ознакомиться с настройками вместо того чтобы просто копировать указанный пример.

Описание настроек можно найти здесь. Для самой простой конфигурации нам важны лишь несколько из них:

  • 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). Там мы выполняем две команды. Первая создаёт запись о загрузчике, а вторая задаёт его название.

Easy UEFI *

В качестве очень простой альтернативы bcdedit можно использовать утилиту Easy UEFI, которая позволяет прямо в загруженной ОС Windows менять параметры загрузчиков. Вам будет необходимо создать запись для rEFInd, выбрать раздел EFI и указать путь к загрузчику.

Создание записи о загрузчике rEFInd
Создание записи о загрузчике rEFInd

Linux *

Для того, чтобы прописать загрузчик в Linux, необходимо, чтобы система была уже загружена в режиме EFI. Этого можно добиться либо загрузив ядро напрямую (при наличии EFI Stub) из EFI Shell, либо запустив любой LiveCD работающий в режиме EFI. Воспользуемся утилитой efibootmgr (есть в репозиториях многих дистрибутивов):

Первая загрузка *

Теперь, когда вы закончили, остаётся проверить, находится ли «rEFInd boot manager» на первом месте в приоритетах загрузки в меню BIOS (EFI) и если это не так — исправить. Если вы всё сделали правильно — загрузчик запустится и предложит вам выбрать ОС для загрузки.

Ссылки *

3 Comments

 Add your comment
  1. А как же копировать в Линукс refind, если я могу только в Виндовс?

Leave a Comment

Your email address will not be published.

Яндекс.Метрика Лицензия Creative Commons