- Дуалбут Gentoo Linux и Microsoft Windows на машине с UEFI с помощью rEFInd
- Предисловие
- Установка
- Копирование
- Linux
- Windows
- Настройка (Windows и Linux)
- Активация
- Windows
- bcdedit
- Easy UEFI
- Linux
- Первая загрузка
- Ссылки
- Установка rEFInd в Linux
- Как установить rEFInd
- 1. Установка загрузчика
- 2. Приоритет загрузки
- 3. Скрытие лишних пунктов
- 4. Удаление Grub
- 5. Тема оформления
- Выводы
Дуалбут Gentoo Linux и Microsoft Windows на машине с UEFI с помощью 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 ).
$ 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, можно сразу удалить лишнее.
При желании, вы можете также удалить лишние иконки операционных систем в директории 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 (раздел). Пример монтирования диска:
Далее, в командной строке утилиты:
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»
Описание настроек можно найти здесь. Для самой простой конфигурации нам важны лишь несколько из них:
- 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 path \EFI\refind\refind_x64.efi bcdedit /set 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) и если это не так — исправить. Если вы всё сделали правильно — загрузчик запустится и предложит вам выбрать ОС для загрузки.
Ссылки
Установка rEFInd в Linux
rEFInd — это новый загрузчик операционных систем с современным красивым интерфейсом для UEFI. Он может работать только с UEFI, но позволяет загружать как Grub, Windows, так и ядро Linux напрямую. Это значит, что вы можете полностью отказаться от Grub и ускорить загрузку вашей системы.
В сегодняшней статье мы рассмотрим как выполняется установка rEFInd в Linux на примере дистрибутива Ubuntu. Несмотря на то, что инструкция ориентирована на этот дистрибутив, скорее всего она будет работать и в других основанных на Debian системах. Обратите внимание, что загрузчик можно установить только в системе с поддержкой UEFI.
Как установить rEFInd
1. Установка загрузчика
Этого загрузчика нет в официальных репозиториях, поэтому для его установки придется использовать PPA. Добавьте PPA в систему:
sudo apt-add-repository ppa:rodsmith/refind
sudo apt update
Затем установите загрузчик:
Установить rEFInd намного проще по сравнению с Grub, потому что в Grub сначала надо установить сам пакет загрузчика, а затем установить его в загрузочную запись, раздел grub_bios или на раздел ESP. Загрузчик rEFInd же поддерживает только установку на ESP раздел, поэтому он во время установки автоматически копирует туда свои файлы. То есть файлы загрузчика будут скопированы в каталог /boot/efi/EFI. Вам только надо подтвердить это действие:
Если вы на этом этапе нажали нет, то потом вам надо будет дополнительно выполнить такую команду для установки:
2. Приоритет загрузки
После того, как загрузчик установлен надо установить его на первое место в списке загрузчиков UEFI. Для этого можно воспользоваться BIOS или утилитой efibootmgr. Для просмотра текущего списка загрузчиков и их приоритета выполните:
В данном случае rEFInd получил номер 7 (007) и уже находится на первом месте. Если это не так, очередность загрузки можно поменять с помощью опции -o. Например:
Теперь по умолчанию будет загружаться rEFInd. Выглядит он вот так:
Как установить загрузчик вы теперь знаете, давайте теперь разберемся как выполняется настройка rEFInd.
3. Скрытие лишних пунктов
Здесь есть одна проблема, одна и та же операционная система выводится несколько раз в меню, потому что выводится пункт для загрузчика Grub и непосредственно для ядра. Вы можете полностью удалить Grub чтобы его не было, но перед этим убедитесь что всё работает. Я рекомендую оставить Grub на всякий случай, но пункты с ним из меню скрыть. Для этого откройте файл /boot/efi/EFI/refind/refind.conf и найдите там директиву dont_scan_dirs. В конец её значения надо добавить папку с Grub на разделе ESP.
Посмотреть все папки можно командой:
Например, в данном случае это папка EFI/ubuntu:
sudo vi /boot/efi/EFI/refind/refind.conf
Сохраните изменения и перезагрузите компьютер. Дополнительного пункта с Grub больше не будет. Для того чтобы убрать дополнительные опции загрузки вроде Fallback Loader и другие следует добавить в эту переменную также папку EFI/BOOT.
4. Удаление Grub
Если вы все же решились полностью удалить Grub из системы, то сначала выполните команду:
Удалите папку с файлами Grub на разделе ESP:
sudo rm -Rf /boot/efi/EFI/ubuntu
Затем загрузите пакет-заглушку с официального сайта rEFInd:
sudo dpkg -i grub-pc_3.0-1_all.deb
Иначе после обновления системы Ubuntu может устанавливать Grub обратно.
5. Тема оформления
Если вам не нравится тема оформления загрузчика по умолчанию, то другие темы можно найти на DeviantArt.
Загрузите например rEFInd-chalkboard. Затем распакуйте архив темы и папку из этого архива скопируйте в папку /boot/efi/EFI/refind:
sudo mkdir /boot/efi/EFI/refind/themes
sudo cp -R ~/Downloads/refind_chalkboard_by_aliciatransmuted_dclswzw/rEFInd-chalkboard /boot/efi/EFI/refind/themes
Затем надо активировать тему. Для этого откройте файл /boot/efi/EFI/refind/refind.conf и добавьте в конец строчку импорта файла настроек темы. Например:
sudo vi /boot/efi/EFI/refind/refind.conf
Обратите внимание, что тему обязательно скидывать именно в папку themes иначе она работать не будет. После этого можно перезагрузить компьютер:
Выводы
Теперь вы знаете как выполняется установка rEFInd Boot Manager. Как видите, это не намного сложнее чем установить Grub. А каким загрузчиком пользуетесь вы? Напишите в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.