Установка refind из windows 10

In this blog post I’ll be covering the process of installing and troubleshooting refind bootloader from a machine running Windows 10 1903 (although I hope this will survive any updates from Microsoft).

At first, I tried following the official documentation and replacing the {bootmgr}’s path with refind’s, but it didn’t work. Then, I used BCDEDIT.exe to modify every single path to bootmgfw.efi I cound find but to no effect. After every reboot, Windows kept showing up no matter what.

So, I’ll be describing here the steps I had to take in order to make everything work as expected, and some guide to troubleshoot any error that you stumble on. Here’s a screenshot of the final result:

Screenshot of the end result

What our goals are

  • Install and theme refind from a Windows 10 machine
  • Make refind the default bootloader
  • Prevent Windows from setting itself as the bootloader after every boot

What our goals aren’t

  • Cover the details of installing refind from any other Operating System (if you’re not on Windows 10 and wants to install refind, take a look here)
  • Make Secure Boot happy (I may or may not make a blog post about this in the future. If you want to use Secure Boot — which I recommend -, you can start by taking a look at the official documentation on this topic)

What you’ll need

  • refind (duh)
  • Explorer++ or some other file explorer that can be launched as Administrator (I’ll assume that you have one, but it is not required at all. If you feel confortable, you can do all the file moving/editing from your command prompt)
  • A Windows 10 bootable USB stick (or DVD if you live in a cave)¹

¹NOTE: The Windows 10 bootable is not required, but is recommended in case you mess things up.

Before we get started

⚠️ UPDATE: Before you proceed, I recommend trying the steps on the official documentation and using this only as last resort. If you do have to follow this path, I recommend you backup your refind installation folder after the installation is complete. When you are installing some OSes (e.g. Linux), they will overwrite refind’s files and prevent you from booting into refind (but booting into the fresh installed OS will work). If this happens, all you have to do is login into the OS you just installed and restore your refind backup.

First of all, go ahead and disable UEFI’s Secure Boot. I won’t go into details on how to do it, since it changes from system to system. If you don’t know how to do it just search around. Pay attention not to disable UEFI, just Secure Boot.

Getting started

In ordet to get started, we’ll need access to the Windows’ FAT32 EFI partition. To do that, we’ll have to mount it. From an elevated command prompt, issue the following command (where B: is the letter you want to assign to the partition):

mountvol B: /s

After this, you should have your partition mounted at B: (or whatever letter you specified). In order to access it, you’ll have to launch Explorer++ as Administrator (see the note below). If you open it up you should see the following structure:

.
├── EFI
|   ├── Boot
|   |   └─── bootx64.efi
|   ├── Microsoft
|   |   ├─── Boot
|   |   └─── Recovery

NOTE: The old trick of killing explorer.exe and launching it from an elevated command prompt doesn’t seem to be working anymore. The B: drive shows up but is not accessible. I prefer not to mess around with this drive’s permissions, so I’m using this alternative method.

Microsoft Windows’ Boot Environment

Microsoft’s folder intuitively contains files used to boot Windows. I’ll summarize what I think is important about the boot process, but if you want to know more, I suggest you start here (this link is where I’m getting all the info below).

NOTE: I’m not an expert, so I may say something that is not 100% accurate. If you find something that you think is incorrect, please drop me a line.

With just Windows installed, this is what the boot flow looks like:

Windows' boot flow

  • UEFI Firmware: Performs CPU and Chipset initialization, load drivers, etc.

  • UEFI Boot Manager: Loads UEFI device drivers and loads boot application

  • Windows Boot Manager (EFI\Microsoft\Boot\bootmgfw.efi): Is responsible for loading the Windows Loader (C:\Windows\System32\winload.efi) chosen by the user (in case there’s more than one Windows installed).

Replacing Windows Boot Manager

Our goal here is to replace Windows Boot Manager with refind (but, of course, allowing refind to call the Windows Boot Manager later if that’s what the user wants).

In order to do that, we’ll use the EFI fallback file. Here’s a quick definition, but if you want to know more, take a look here and here.

The firmware will look through each EFI system partition on the disk in the order they exist on the disk. Within the ESP, it will look for a file with a specific name and location. On an x86-64 PC, it will look for the file \EFI\BOOT\BOOTx64.EFI.

So… let’s recap: we know that the firmware looks for Windows Boot Manager on EFI\Microsoft\Boot\bootmgfw.efi and we know that, if it doesn’t find it, it’ll look for whatever file is at EFI\Boot\bootx64.efi. Hmm…

You probably realized where we are going here, but in case you dind’t: our plan is to set refind as the EFI fallback file and move Windows Boot Loader to some place where the firmware can’t find it. Then, we can create an entry in refind pointing to the place where we moved Windows’ files.

This is actually quite simple, but will require a few hacks. Lets begin.

Installing refind

First of all, rename the existing EFI\Boot folder to something like EFI\Boot.old, so that you have a backup in case you need it. With this out of the way, create a new EFI\Boot folder and copy refind’s files there. Rename refind_x64.efi to bootx64.efi.

One more thing, add the following entry to your refind.conf file (this is important, trust me), replacing {folder} to anything BUT Microsoft (I’ll use _Microsoft) and {path\to\your\icon.png} with the actual path of your icon:

menuentry Windows {
    loader \EFI\{folder}\Boot\bootmgfw.efi
    icon \EFI\Boot\path\to\your\icon.png
}

After this step, refind is properly set up as the EFI fallback. All we have to do now is make Windows Boot Loader unfindable by the UEFI firmware.

Renaming the Microsoft folder

This should’n need a dedicated section, but is not as straightforward as it seems. The EFI\Windows folder cannot be renamed from Windows (since it is kept in use).

So, you’ll need to get a command prompt at boot. In order to do that I usually use the Windows bootable (just press Shift + F10 on menu), but there are other ways to do it in case you didn’t set up your bootable media.

At the boot command prompt, mount the EFI partition and navigate to the EFI folder:

mountvol B: /s
cd /d B:\EFI

At this point, if you explore this folder, you should have your Boot folder with refind’s files and Microsoft folder with Windows’ ones. All you have to do is rename the Microsoft folder to the same name you used on your refind’s menuentry.

⚠️Remember to replace {folder} by the exact same thing you used in your refind.conf file.

ren Microsoft {folder}

And that’s it. Close the command prompt and restart your computer. Next time you boot your firmware should not find Windows Boot Manager and fallback to refind. Since we manually added the Windows entry to refind, you should be able to boot into Windows from there.

Troubleshooting

I messed things up and now I can’t boot my computer

Keep calm. This probably happened to me a few dozen times in the process of trying to install refind.

All you have to do is fix your EFI partition. I usually just format the partition and ask Windows to rebuild it, this way you should have a fresh start. Note that this will only work if Windows is the only operating system installed in this partition.

To format and rebuild the partition, boot into your Windows 10 media (I hope you have one), launch a command prompt and execute the following:

mountvol B: /s
format B: /FS:FAT32
bcdboot C:\Windows /s B: /f UEFI

This should rebuild your EFI partition and you should be able to boot into Windows now.

Refind shows up without any option (hangs)

This happened to me. In my case it was an issue with the NTFS driver, so all I had to do was remove the ntfs_x64.efi file from the EFI\Boot\drivers_x64 folder.

NOTE: You don’t need the NTFS driver to boot into Windows, since the EFI partition is using FAT. For more info, take a look here

If it isn’t a drive issue for you, see if any of the below helps. This is a quote from refind’s author Roderick W. Smith:

This sort of problem normally indicates a filesystem issue – rEFInd is getting stuck in an infinite loop attempting to read one of the filesystems on the disk. I recommend you try the following:

1. If you have any external disks attached to the computer, try
unplugging them. Such disks sometimes cause problems. If this fixes the problem but you need to use the external disk on a regular basis, you may need to further debug the problem as below; but if it’s just a USB flash drive that you don’t need to leave permanently attached, then this should be the end of it.
2. Remove (or move) all the EFI filesystem drivers from the “drivers”, “drivers_x64”, and “drivers_ia32” subdirectories of the rEFInd installation directory. (Normally there’ll be only one drivers subdirectory; just remove all those driver files.) Reboot.
3. If rEFInd hangs even with no EFI filesystem drivers installed, then the problem is likely with the ESP or some other FAT filesystem. You can try doing a filesystem check on such partition(s) with dosfsck in Linux, CHKDSK in Windows, or similar utilities. In an extreme case, you could try backing up the ESP (and/or other FAT partitions), creating a fresh filesystem, and restoring the data.
4. If rEFInd comes up and shows a menu after removing the filesystem drivers, even if the menu options are incomplete, then this is good; it indicates that there’s a problem with one of the filesystems or their drivers. You can then begin restoring the driver(s) that you need. Normally this will be just one, for whatever filesystem holds your Linux kernels. (You do NOT need the NTFS driver to boot Windows.)
5. If rEFInd works at this point, then you’re done – the problem was in some superfluous driver(s) that you weren’t using.
6. If rEFInd hangs, then you can try booting in some other way and using a filesystem check utility like fsck on the filesystem(s) that can be read with the driver(s) you restored. With any luck this will fix the problem.
7. If the problem persists at this point, you have a number of options:
a) Remove the offending filesystem driver, install GRUB, and use it to boot the Linux kernel. GRUB uses a different filesystem driver and so may not be affected.
b) If you don’t already use one, create a small (~1GiB) partition to use as /boot, using a different filesystem than your main Linux partition. You can then install the EFI driver for the /boot partition, copy the contents of /boot to it, and adjust /etc/fstab to mount this partition at /boot. The ext4fs, Btrfs, and ReiserFS EFI drivers are the fastest ones.
c) Do as in option b, but use FAT, which requires no special driver. This works better with some distributions than others, though. Debian-based distributions often use symbolic links, which aren’t supported on FAT, in /boot, for instance. Some Arch Linux users like to use FAT on /boot (or mount the ESP at /boot), by contrast.
d) Completely wipe and re-install the offending partition(s). It’s possible that the EFI driver is flaking out because of leftover data that wasn’t completely erased when you created the partition. If you opt to do this, I recommend completely zeroing the partition (with “dd if=/dev/zero of=/dev/{wherever}” or something similar) before restoring it.
e) Try a different EFI filesystem driver. The efifs project (http://efi.akeo.ie/) offers a large number of EFI filesystem drivers, and its variant of the rEFInd driver might work better on your system.

There may be some other options and potential causes I’m forgetting.

Сегодня мы разберемся с загрузчиком rEFInd. А точнее с вопросом, как его устанавливать в качестве основного загрузчика на жесткий диск компьютера, и на флешку.

Немного о главных возможностях.

Поддержка графического и текстового режима меню. Возможность установки собственных изображений для иконок меню и фонового изображения. Работа с файловыми системами ISO-9660, NTFS, HFS+, ext4fs, и Btrfs. Загрузка других EFI загрузчиков и приложений. Загрузка BIOS загрузчиков. Авто-определение имеющихся EFI и BIOS загрузчиков. Возможность повторного сканирования устройств (если к примеру подключили новое устройство).

Перед началом всех манипуляций с установкой, скачаем последнюю версию загрузчика. Достать его можно по этой ссылке. На момент написания этого текста, последней была версия 0.10.4. Необходимый нам архив называется refind-bin-0.10.4.zip.

Если же, нужен EFI Shell в меню, то скачиваем архив refind-cd-0.10.4.zip с livecd версией загрузчика.

Оба данных архива содержат все необходимые файлы для установки. Разница в лишь в том, что если использовать livecd версию, то мы получаем EFI Shell и экономим время необходимое на создание папок и переименование файлов загрузчика.


Установка rEFInd на флешку

Так как rEFInd загрузчик для UEFI BIOS, это означает что раздел флешки, на котором он будет располагаться, должен быть отформатирован в файловую систему FAT (12,16,32), либо так, как описано в статье «Загрузка в UEFI режиме с NTFS раздела». Во втором случае загрузчик будет загружаться с NTFS раздела.

Пример форматирования раздела.

И так, флешка отформатирована. Неважно каким способом, главное что в итоге она с пустым файловым разделом.

Создадим в корне флешки папку EFI, а внутри нее папку boot.

Извлечем содержимое папки refind архива refind-bin-0.10.4.zip в директорию EFI\boot на флешке.

Переименуем файлы refind_aa64.efi, refind_x64.efi, refind_ia32.efi в bootaa64.efi, bootx64.efi, bootia32.efi соответственно.

Так же переименуем файл refind.conf-sample в refind.conf.

Если в загрузочном меню необходимо наличие EFI Shell, то необходимо извлечь файлы shellia32.efi и shellx64.efi из livecd версии в корень флешки.

Установка загрузчика rEFInd на флешку на этом завершена. Проверим флешку загрузив ее в виртуальной машине VirtualBox.

Так выглядит меню если загрузчик не нашел установленных ОС на дисках компьютера. Если к виртуальной машине подключить жесткий диск с установленными ОС Windows и Linux Ubuntu, а потом снова попробовать загрузиться с подготовленной флешки, результат будет следующим.

Теперь перейдем к установке rEFInd на жесткий диск компьютера в качестве основного загрузчика.

Установка rEFInd из Windows.

Рассмотрим установку загрузчика rEFInd из ОС Windows. Специально для этого я установил операционные системы Windows 8.1 и Ubuntu 16.10 на виртуальную машину, для последующей демонстрации мульти-загрузки. По умолчанию основной загрузчик Windows Boot Manager (BOOTMGR),

Первым делом, распаковываем скачанный архив с дистрибутивом rEFInd в удобное для вас место. В моем случае я это был рабочий стол.

Подключим ESP (EFI System Partition) раздел. Воспользуемся для этого DISKPART‘ом. Запускаем для этого командную строку WIN+X  > Командная строка (администратор) пишем diskpart и нажимаем ENTER.

Выведем список дисков командой list disk чтобы определить номер нужного диска.

Как можно наблюдать диск в списке один с нулевым номером. Укажем что все дальнейшие действия нужно проводить с ним. Выполняем для этого команду select disk 0.

Отобразим список разделов выбранного диска командой list partition, чтобы узнать номер ESP раздела.

Определить ESP раздел можно по его маленькому размеру и «системному» типу. Как видно он расположен под вторым номером. Выберем его для дальнейших манипуляций командой select partition 2.

Подключим раздел к системе присвоив ему букву диска. Буква может быть любой незанятой системой. Выполним команду assign letter=S.

После успешного выполнения команды, проводнике можно увидеть подключенный диск. Но, к сожалению, получить доступ к нему через проводник не получится.

Чтобы увидеть содержимое диска S: нужно обладать правами администратора. То есть, если к примеру запустить Far Manager от имени администратора, то он сможет войти на данный раздел.

Или же с помощью командной строки запущенной от имени администратора, так же можно попасть в данный раздел.

Дальнейшие действия я буду проводить в командной строке, с Far Manager все слишком просто.

Переименуем файл refind.conf-sample в папке refind распакованного дистрибутива в refind.conf.

Скопируем путь до папки refind.

Теперь нам нужно скопировать папку refind в S:\EFI. Выполним для этого команду xcopy C:\Users\USER\Desktop\refind-bin-0.10.4\refind S:\EFI\refind\ /E используя при этом скопированный ранее путь.

Убедимся что все скопировано как надо командой dir S:\EFI\refind.

И последнее, укажем загрузчику Windows что нужно по умолчанию загружать rEFInd. Делается это командой bcdedit /set {bootmgr} path «\EFI\refind\refind_x64.efi».

Перезагрузимся и проверим результат.

Установка rEFInd закончена.

Итог.

rEFInd очень прост в установке. Обладает красивым меню, удобным авто-определением загрузочных устройств, отсутствием необходимости начальной конфигурации (все работает «с коробки»). Сегодня мы рассмотрели установку на флешку, и  компьютер с ОС Windows. В следующей статье мы займемся конфигурационным файлом загрузчика. Разберем его как можно подробнее. И конечно же попробуем заявленную возможность загрузки старых ОС.

Время на прочтение
12 мин

Количество просмотров 217K


КДПВ. Бут-менеджер rEFInd с темой оформления Regular.

На сегодняшний день практически все уже слышали про технологию UEFI. Говорить о том, что это такое и зачем оно нужно, я не собираюсь. Сегодня я бы хотел описать простейший сценарий установки Dual Boot системы с полной поддержкой UEFI, а также рассмотреть отдельно установку и настройку бут-менеджера rEFInd. Возможно вы уже видели подобные мануалы и гайды, но я постараюсь донести весьма доходчиво суть того, что мы будем делать и зачем. В других мануалах вы лишь смотрите за «магией» картежника и пытаетесь её повторить, делая, зачастую, элементарные ошибки. Кому эта тема интересна — прошу под кат.

В целом UEFI призвана наоборот упросить процесс загрузки, а не усложнить его. К примеру, посредством этой технологии компьютер можно загружать ОС и вовсе без прослойки в лице GRUB / LILO / etc, загрузчиком может выступать сама UEFI. Однако этот метод имеет свои недостатки, например, вам придется повозиться после обновления ядра, можно, разумеется, написать скрипт, но в целом этим и занимается grub2-efi

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

  1. Запись образа Windows 10 (8/8.1) на диск/флешку.
  2. Установка Windows 10 на часть диска.
  3. Запись образа Linux-дистрибутива с поддержкой EFI (большинство) на диск/флешку.
  4. Установка Linux-дистрибутива на оставшуюся часть диска.
  5. Установка и конфигурация rEFInd.
  6. Удаление GRUB и полный переход на rEFInd.

На первый взгляд всё очень просто, всего 4 базовых пункта, но тут есть огромное количество нюансов.

Ошибки делают на всех этапах: входят в режим Legacy-bios, указывают не тот загрузочный раздел, просто не понимают, что делают и т.д. В конечном итоге всё это приводит к массе боли и страданиям на форумах, в чатах, и т.д. На деле же всё нереально просто, нужно просто понимать, что ты делаешь на каждом этапе и проверять себя.

Сначала немного теории

UEFI видит только один специальный ESP-раздел, обычно он имеет размер 100-200 мегабайт и форматирован в FAT32 (бывает в FAT16), в нем содержаться папки с названиями а-ля Boot, Microsoft, Fedora, Ubuntu и т.д. Если вы перепробовали достаточное количество ОС и никогда не форматировали этот раздел, то там могло набраться приличное количество папок. К примеру, у меня было 2 живых оси и лежало около 6 папок.

P.S. CodeRush подсказал, что поддерживаются все FS, если на них есть соответствующие драйверы:

Это неверно. UEFI видит все разделы, для ФС которых в конкретной реализации прошивки имеются драйверы. ESP же отличается от остальных разделов только тем, что а) для FAT драйвер иметь обязательно и б) на разделе ESP осуществляется поиск загрузчиков и автоматическое создание соответсвующих переменных BootXXXX, если загрузчики нашлись.

В самих папках лежат исполняемые файлы .efi которые и выступают в роли загрузчиков ОС. В папке debian вы наверняка обнаружите файл grubx64.efi, а в папке Microsoft – bootmgr.efi.

Большинство Linux-дистрибутивов монтируют ESP-раздел к /boot/efi, то есть загрузчик Debian будет лежать примерно на таком пути: /boot/efi/EFI/debian/grubx64.efi

C директорией разобрались, а что дальше?

А дальше нужно понимать, что существует ещё порядок загрузки, которым можно руководить с помощью утилиты efibootmgr, если у вас её нет, то можете скачать через свой пакетный менеджер, во всех стандартных репозиториях она присутствует. Для начала можете просто ввести эту команду и увидеть список порядка загрузки, а также все UEFI-записи. Если хотите разобраться с утилитой, то курите ман и читайте интернеты, в целом она весьма простая. Злой Windows как раз-таки тут и затирает наш GRUB и ставит Windows Boot Manager первым приоритетом, поэтому его приходится восстанавливать. Скажу лишь как редактировать записи:
efibootmgr -b <номер записи> -<модификатор редактирования> <параметр модификатора>
К примеру, efibootmgr -b 0 -B означает удалить запись 0.

P.S. CodeRush и другие комментаторы заметили, что efibootmgr является весьма опасной утилитой и отмечают, что гораздо безопасней пользовать EFI Shell.

По факту GRUB можно вообще не трогать, потому что он наверняка так и лежит в папке EFI/<название дистрибутива>, нужно лишь восстановить запись и выставить первый приоритет, но зачем что-то копать если можно chroot’нуться и ввести grub-install? В большинстве случаев он сделает всё сам.

Кстати, стоит не забывать, что базовым функционалом efibootmgr обладает и сам, собственно, UEFI, он умеет читать эти записи и выстраивать приоритеты. Но сам просматривать ESP-разделы и добавлять новые записи он не умеет, эти обязанности возложены на EFI Shell и операционные системы.

P.S. CodeRush

Еще как умеет, и это умение требуется спецификацией начиная с UEFI 2.2 (SecureBoot появился в UEFI 2.3.1C).

И на последок: Все ваши действия в efibootmgr записываются в NVRAM! В большинстве случае UEFI умеет восстанавливать битый NVRAM каждый раз проверяя его и перезаписывая, в случая неполадок. Однако некоторые недобросовестные производители выпускают сырые прошивки и можно получить самый настоящий кирпич. К примеру ноутбуки с UEFI на базе Phoenix SCT окирпичиваются! Так что перед тем как продолжить читать, удостоверьтесь, что ваша модель материнской карты или ноутбука, устойчива к таким экспериментам.

P.S. Уже после написания большей части статьи я вспомнил про Secure Boot. Обычно UEFI тянет его за собой, но в большинстве случаев его можно весьма просто отключить в настройках UEFI. Многие Linux-дистрибутивы поддерживают его, но я всё же рекомендую его отключить, так как он может потянуть за собой массу проблем.

Базовый экскурс в теорию закончен.

Теперь можно перейти к практике

Дисклеймер: Сразу оговорю, что я предпочитаю стерильные условия и сам делаю полную переустановку с помощью проверенных лично мной утилит. Если вы будете использовать другие утилиты, то, пожалуйста, не пишите почему у вас что-то не получается на том или ином этапе. Мой вариант проверен сотнями переустановок друзьям и коллегам.

Первым делом нам нужно записать Windows

Потому что если поставить Windows второй, то она затрет загрузчик. Восстановить? Без проблем. Но зачем возня, если можно сразу сделать всё по уму? Впрочем я всё равно обговорю нюансы восстановления чуть позже в конце статьи.

В отличии от Linux, Windows записать гораздо проще, на мой взгляд. Первый способ до возможно многим знаком, нужно просто зайти в cmd.exe от имени администратора и ввести эти команды. Не сложно заметить, то тут нет абсолютно никакой магии. Мы просто форматируем флешку в FAT32:

diskpart
list disk
select disk <номер флешки>
clean
create partition primary
select partition 1
active
format fs fat32 quick
assign
exit

После этого нужно просто открыть ISO-файл архиватором и перекинуть содержимое на чистую флешку. Всё, UEFI-флешка готова. На Linux можно сделать всё аналогичным образом, просто форматируем в FAT32 и копируем содержимое.

Полученную флешка должна отлично загружаться любым ПК с поддержкой UEFI.

Кстати, обратимся к теории: наш образ с Windows 10 содержит папочку efi, в ней как раз лежит всё добро для начала загрузки, которое должен увидеть наш UEFI. Поэтому простого форматирования и копирования в большинстве случаев хватает для большинства ПК.

Однако я предпочитаю второй способ с использованием утилиты Rufus. Он меня никогда не подводил. Однако это Windows-only способ. На Linux-системах использование ddresque для создания загрузочной флешки Windows НЕ РАБОТАЕТ. Так что пробуйте другие утилиты, если первый способ с простым форматирование не помог.

Всё что вам будет нужно: выбрать вашу флешку, выставить параметр «Схема раздела и тип системного интерфейса» на «GPT для компьютеров с UEFI», и нажать старт. Остальные параметры трогать не нужно. Лучше использовать флешки помельче (на 8-16 гигабайт).

Наверняка один из способов должен был прокатить, лично я ни разу с проблемами на этом этапе не встречался, главное чтобы компьютер поддерживал UEFI.

Поэтому перейдем к этапу установки

После загрузки в UEFI-режиме делаем всё по стандартной схеме, но на этапе выбора типа установки выбираем «экспертную», то есть мы разметим раздел сами. Размечать рекомендую аккуратно, особенно если дисков много. Наконец, выбрав диск, удалите все существующие разделы. Создайте один раздел с нужным вам размером, к примеру, 150 гигабайт. (Если вы предпочитаете создавать два и более разделов для ОС и файлов — без проблем, создавайте). Выберете этот раздел кликом мышки и нажмите «Далее». И если вы всё сделали верно, то Windows попросит вас создать дополнительные. Обязательно отвечайте «Да». Система создаст три раздела. Два своих для системных нужд и один тот самый нужный нам EFI-раздел. У меня он по нумерации всегда второй, всего получится 4 раздела, включая пользовательский NTFS. Если установщик не предложил создать разделы или создал всего один, то значит вы загрузились в Legacy-режиме и нужно перезаписывать флешку, что-то пошло не так. К сожалению редактор разделов Windows-установщика крайне слаб по возможностям, поэтому пробовать размечать разделы под будущий Linux тут смысла нет, оставляем это место попросту свободным. Дальше устанавливаем всё в штатном режиме.

Кстати, один из признаков правильной установки Windows в UEFI-режиме, появление логотипа производителя материнской карты / ноутбука / планшета при загрузке. Во многих UEFI (к примеру от ASUS и ASRock) есть отдельная настройка для этого. Так что если логотипа нет, но всё остальное прошло как по маслу, то ничего страшного в этом нет.

Тонко настраивать Windows на данный момент не рекомендую, так как если что-то пойдет не так, то возможно придется переустановить.

Записываем Linux?

Ага. После входа в Windows рекомендую сразу скачать образ выбранного вами дистрибутива и записать его аналогичным образом через Rufus. Правда в случае с Linux-дистрибутивами Rufus может спросить массу вопросов, к примеру он может попросить подгрузить загрузчик syslinux с интернета или выбрать режим записи образа: ISO или DD. На все вопросы отвечаем «Да.», то есть да, скачиваем последнюю версию syslinux и записываем в режиме ISO. Проверено на Ubuntu (и её вариациях Server, Mate, GNOME), Fedora, RHEL7, Debian и других.

До Dual Boot буквально один шаг

В отличии от Windows большинство дистрибутивов имеют отличную индикацию UEFI-режима. К примеру Debian в своем установщике черным по белому пишет, что система запущенна в UEFI-mode. Другие дистрибутивы проявляют это странным grub-загрузчиком, который выглядит «как-то не так».

Думаю если вы собрались ставить Linux, то вы наверняка сами знаете как ставить ваш любимый дистрибутив, поэтому я не буду заострять внимание на подробностях установки отдельно взятого дистрибутива. Потому что этот этап до боли прост. Если вы уже действительно прогрузились в UEFI-режиме и установили Windows как надо, то Dual Boot уже практически в кармане.

Итак всё что вам потребуется сделать при установке Linux:
Выбрать раздел /dev/sda2 (в вашем случае это может быть другой раздел) и указать точку монтирования — /boot/efi. Всё. Нет, правда, всё. Разумеется не забудьте разметить ext4 / Btrfs / ReiserFS / XFS / JFS раздел, примонтировать его в корень /. Кому нужен swap (если нужен) создайте и его. Дальше установщик вашего дистрибутива сделает всё сам, установит в директорию EFI/<название дистрибутива> свой GRUB и найдет запись Windows (EFI/microsoft).

Данная логика была проверена во всех вышеозначенных дистрибутивах. То есть повторюсь ещё раз: Главное показать вашему дистрибутиву где у вас этот заветный ESP-раздел и куда надо ему кидать загрузчик. Он его не форматирует, а просто добавляет GRUB. А вот уже сам GRUB вершит магию, изменяет приоритеты загрузки и т.д. Замечу, что некоторые дистрибутивы сами монтируют этот раздел куда надо, так как видят флаги ESP и BOOT. К примеру в установщике Debian нужно просто создать пользовательский раздел и всё.

Наводим красоту, ставим rEFInd

К сожалению счастью я болею сильной формой перфекционизма. И простой GRUB2 меня не устраивал, больно он страшный и не красивый. Беглый гуглинг рассказал мне о BURG, «красивом» форке GRUB, но он был заброшен и на данный момент скорее мертв, чем жив. К счастью для UEFI-машин есть отличная альтернатива — rEFInd. rEFInd является форком, заброшенного ныне rEFIt, а также его логическим продолжением. Первый создавался в первую очередь для Mac’ов и работы рядом с Boot Camp, нынешний форк такой узкой специализации не имеет и подходит практически для любых конфигураций.

Стоит сразу заметить, что rEFInd НЕ является загрузчиком. Это так называемый Boot Manager, он вызвает другие .efi-бинарники к исполнению, а также может направить UEFI на запуск ядра прямо с раздела /boot. Другими словами то есть систему загружает не он, а сам UEFI. Для Multi-Boot машин является отличным решением. Сам по себе rEFInd является .efi-приложением, собранным средствами UEFI Shell. Сам находится в директории EFI/refind/refind_x64.efi

Помимо того, что можно выбирать между уже установленными системами на ПК, приятным плюсом можно выделить автоматическое обнаружение загрузочных флешек и дисков. На КПДВ это можно увидеть. У меня имеется загрузочная флешка с Debian (не установщиком, а полноценной ОС) и можно увидеть удобную индикацию того, что это именно флешка, а не что-то другое. Если у вас имеется несколько ядер, то их список можно увидеть по нажатию клавиши F2. Помимо этого в файле /boot/refind_linux.conf можно задать несколько вариантов с разными параметрами ядра (например первый — стандартный для загрузки GUI, второй — безопасный режим без видеодрайвера и т.д, можно сделать дюжину вариантов, по умолчанию всего три). Также в папку EFI/tools можно накидать различных .efi-бинарников, к примеру UEFI Shell или memtest86+. rEFInd их автоматически подхватит и покажет в нижнем ряду как утилиты.

Хотите также?

Процесс установки из под Linux необычайно прост. Все способы описаны на официальном сайте, устанавливать можно практически из любой ОС. Для начала посетите эту страничку и скачайте .deb- или .rpm-пакет.

Если у вас редкий дистрибутив вроде Slackware или Gentoo, то лично я вам помочь не смогу, но на сайте есть обычный .zip-архив и другие варианты установки, так что если уж вы работаете в подобных дистрибутивах, то наверняка поставить своими силами вы сможете без проблем.

Сделайте бэкап EFI-директории:
cp -r /boot/efi/EFI /boot/EFI.bkp
После загрузки пакета, выполните:
cd Downloads или cd Загрузки
И установите пакет:
sudo dpkg -i <имя пакета>.deb или sudo dnf install <имя пакета>.rpm
В моем случае dpkg не мог иногда подтянуть зависимости, если у вас возникнут такие же трудности, то установите gdebi (sudo apt-get install gdebi) и выполните sudo gdebi <имя пакета>.deb.

Если у вас RHEL или CentOS, то используйте yum вместо dnf.

В логах установки пакета можно отследить лог установки rEFInd, в котором возможно будут ошибки их надо сразу отследить. Однако по моему опыту ошибок не возникает, если всё сделать правильно. Проверить результат работы установщика rEFInd можно, воспользовавшись утилитой efibootmgr, там первым приоритетом должна должен быть именно rEFInd Boot Manager.

Установить rEFInd повторно, если пакет уже установлен, можно с помощью команды:
refind-install
Установку rEFInd первым приоритетом можно произвести в ручную, с помощью команды:
refind-mkdefault

Перезагружаемся.

Всё очень страшно и откуда у меня столько ОС?

Да, всё страшно, пока. На самом деле ОС у вас всего две. Просто rEFInd собрал все .efi-бинарники и ещё отобразил ОС с возможностью загрузки напрямую. Для исправления этого недоразумения мы удалим лишнее, напишем свой конфиг и поставим красивую тему на rEFInd.

Первым делом зайдите в Linux, выбрав один из рабочих пунктов загрузки. В меню должен быть пункт для загрузки БЕЗ использования grubx64.efi! В разделе /boot проще работать из под администратора (потому у команду cd не хватает привелегий, а sudo она не работает), так что su и вводим пароль root’а.

Этот пункт не зря опциональный, потому что если у вас недостаточно опыта, то можно очень просто что-то сломать и не заметить. Рекомендую подготовить флешку с рабочим LiveCD, чтобы проводить восстановление, в случае неожиданностей.

Наша первая задача — удалить лишние директивы загрузки, их запросто может быть штук 6, а системы всего две.

Заходим в директорию:
cd /boot/efi/EFI && ls
Вероятно тут будет пять папок:
BOOT, microsoft, <ваш дистрибутив>, refind и tools.
Если будет что-то лишнее — смело удаляйте.

Способ 1 (через очищение, опаснее):
Убедившись что вы загрузились через rEFInd (!) и НЕ использовали для этого GRUB можете смело удалить папку вашего дистрибутива. Перезагрузитесь и проверьте, можете ли вы загрузиться в ваш Linux. Если можете, то вероятно в меню загрузки осталось 4 директивы: Windows, Linux и два странных пункта, которые приводят (скорее всего) к загрузке Linux. Можно было догадаться, что это .efi-бинарники из папки EFI/BOOT. Папку можно удалить полностью. НО! Убедитесь, что у вас есть бэкап. Перазагружаемся. Всё отлично?

Удаляем GRUB:
sudo apt-get remove grub2 grub2-efi grub grub-efi
Или:
sudo dnf remove grub2

Теперь можно ставить тему.

Некоторые UEFI другие директории вовсе не видят. Поэтому небольшой work around для таких систем существует. Удаляем папку BOOT, переименовываем папку refind в папку BOOT, а также сам файл refind_x64.efi в bootx64.efi. Перезагружаемся.

Способ 2 (через конфиг rEFInd, безопаснее):
Этот способ гораздо безопаснее, потому что удалять и что либо трогать мы не будем, мы добьемся результата правильной настройкой конфига. Сам конфиг лежит тут: /boot/efi/EFI/refind/refind.conf
Чтобы настроить свой набор директив загрузки нужно использовать два параметра scanfor и menuentry, после настройки должен получится примерно такой конфиг:

# Сканируем записи созданные ручкуами, флешки и оптически приводы
scanfor manual,external,optical
# Пункт для загрузки Linux
menuentry Linux {
loader /EFI/ubuntu/grubx64.efi
icon /EFI/refind/icons/os_linux.png
}
# Пункт для загрузки Windows 10
menuentry "Windows 10" {
loader \EFI\Microsoft\Boot\bootmgr.efi
icon /EFI/refind/icons/os_win.png
}

Разумеется это только часть конфига, другие параметры можно взять из примера

Мой конфиг на базе первого способа с комментариями

# Ожидание в секундах перед авто-выбором ОС
timeout 20
# Скринсервер через 300 секунд, если ничего не выбрали,
# но нажали любую клавишу и отменили автовыбор
screensaver 300
# Разрешение бут-менеджера
resolution 1280 1024
# Использовать графику при загрузке Linux. Этот параметр позволит загружать ОС с красивой Plymouth
# заставкой в разрешении указанном выше
use_graphics_for linux
scanfor internal,external,optical,netboot,biosexternal
# Подключение темы
include themes/refind-theme-regular/theme.conf

Отдельно про Plymouth можно почитать здесь.

Включение красивой темы

С этим всё просто, чуть выше последняя строчка конфига указывает на .conf-файл темы. Сами темы желательно класть в папку /boot/efi/EFI/refind/themes. По-умолчанию её нет, создайте через mkdir.
Заходим в директорию themes и просто пишем git clone https://github.com/munlik/refind-theme-regular.git. В конфиге прописываем строку include themes/refind-theme-regular/theme.conf
Другие темы можно посмотреть на оф. сайте.

Там же можно посмотреть подробные процессы установки, параметры для тонкой настройки конфига и многое другое.

Пожалуй на этом всё. Мы получили красивый бут-менеджер для выбора нужной ОС с полной поддержкой UEFI. Пункт с установкой rEFInd наиболее сложный, а поэтому опциональный, большинству хватит grub2-efi.

Напоследок небольшое видео от меня:

Наверняка закралось приличное количество ошибок в тексте, буду рад, если вы отпишите о них мне ЛС.

UPD 28.10.2022: Друзья, статье уже 6 лет, несмотря на то, что rEFInd технически до сих пор актулен, я перешёл на systemd-boot, на мой взгляд он проще и удобней в настройке.

Установка rEFInd Boot Manager не выходя из Windows при помощи командной строки

Идексация картинки в Яндексе

Меняем внешний вид Диспетчера загрузки Windows, не ради забавы, а токмо пользы для. Пример с моим ноутбуком UEFI.

Для того чтобы загрузиться с флешки, мне нужно во время перезагрузки нажать клавишу F9 и попав в boot menu, выбрать приоритет загрузки с загрузочного USB-устройства.

После установки Linux, мне нужно заходить в UEFI-BIOS (клавиша F10) и в менеджере загрузок перемещать строку Ubuntu выше Windows. Сохранять настройки и снова делать перезагрузку. Только после этих манипуляций, смогу увидеть загрузчик Grub и спокойно загрузиться в Linux. Но загружаться в Windows, снова приходится сначала козьими тропами, потом волчьими дорогами:).

Всё это порядком надоедает, когда у тебя несколько разных операционных систем и различные загрузочные внешние накопители.

Предлагаю установить более современный и гибкий rEFInd Boot Manager, где в одном окне соберётся весь «Цыганский табор»: http://www.rodsbooks.com/refind/index.html  
Темы rEFInd: http://www.rodsbooks.com/refind/themes.html

Путь к архиву rEFInd —> на гланой странице (ссылка выше) переходим в Contents —> Getting rEFInd—Links to download rEFInd —> A binary zip file—Download или сразу по этой ссылке: https://sourceforge.net/projects/refind/files/0.11.4/refind-bin-0.11.4.zip/download

Далее нужно придерживаться чётких правил. Открываем архив и в корень диска с операционной системой извлекаем не все файлы, а только папку refind (кликай по картинке):

Корень диска с системой:

Теперь файлы rEFInd нужно перенести на скрытый, системный, загрузочный раздел EFI (инструкция для UEFI, хотя в BIOS еще легче).

От имени администратора открываем интерпретатор командной строки (cmd) и пишем следующие команды:
mountvol S: /S 
cd.. 
cd.. 
xcopy /E refind S:\EFI\refind\ 
S: 
cd EFI\refind\ 
rename refind.conf-sample refind.conf 
bcdedit /set «{bootmgr}» path \EFI\refind\refind_x64.efi 
bcdedit /set «{bootmgr}» description «rEFInd description»
bcdedit
exit

Измените refind_x64.efi для refind_ia32.efi, если вы на 32-битной версии. Напоминаю, refind должна лежать в корне диска (С:).

Некоторые UEFI другие директории не видят. Поэтому небольшой work around
для таких систем существует. В папку BOOT, переносим refind_x64.efi и
refind.conf. В папке BOOT файл bootx64.efi переименуем в bootx642.efi.
Файл refind_x64.efi переименуем в bootx64.efi.

Как это сделать используя cmd от имени администратора:
mountvol S: /S 
cd.. 
cd.. 
xcopy 1\*.* S:\EFI\Boot (В корне диска (C:) создать папку 1. Положить
файлы refind_x64.efi и refind.conf)
S: 
cd EFI\Boot\ 
rename BOOTx64.efi BOOTx642.efi 
rename refind_x64.efi BOOTx64.efi

Что получаем визуально:

Далее в моём случае нужно сделать перезагрузку (у вас возможно всё будет по другому) и зайти в UEFI-BIOS (клавиша F10) —> System Configuration —> Boot Options —> OS Boot Manager —> «Подымаю» rEFInd выше других записей.

После этого сохранив настройки уходим на перезагрузку. Радуемся новому Boot Manager, где в одном окне и загрузочная флешка и Linux и Windows и жена со сковородкой и любимая тёща с заумными советами:)

Ролик для закрепления материала прилагается:

Помните, всё, что Вы делаете, только на свой страх и риск. Блог не несёт ответственность за действия пользователя.

Есть второй способ: Установка rEFInd Boot Manager из памяти компьютера.

Этим способом легче и команд на порядок меньше:

Кажется, что всё трудно, долго, не понятно… на самом деле если хорошо вникнуть — легкотня. Зато потом рай в выборе операционных систем и загрузочных дисков.

 
 

One way to do this is to have 2 EFI partitions.

I use rEFInd as bootmanager — this is screenshot:

rEFInd

As you can see the selected OS is the middle one and text says Boot Microsoft EFI Boot from ESP This will then start Windows on Disk2 partition 4. Were I to select the left hand one it would say Boot Microsoft EFI Boot from EFI and start Windows on Disk0 partition 3 (see partitions below).

These are picked up automatically using refind.conf like this (the manual stanza for Windows 10 is disabled as it always showed it on the right hand side that I didn’t like):

timeout 5
use_nvram false

# UI
hideui hints,arrows,badges
banner themes/colourful/10-6.png
selection_big   themes/colourful/selection_big.png
selection_small themes/colourful/selection_small.png
showtools shell,csr_rotate,apple_recovery,shutdown

# mac stuff
csr_values 10,77
spoof_osx_version 10.9
enable_and_lock_vmx true

# search locations
scanfor internal,external,biosexternal,optical,manual
dont_scan_volumes "RECOVERY","FAT VOLUME","Windows"
#dont_scan_dirs +,EFI:/EFI/Boot,EFI:/EFI/GRUB,C12A7328-F81F-11D2-BA4B-00A0C93EC93B:/EFI/Microsoft
dont_scan_dirs +,EFI:/EFI/Boot,EFI:/EFI/GRUB

menuentry "Windows 10" {
    icon \EFI\refind\myicons\os_win_old.png
    loader \EFI\Microsoft\Boot\bootmgfw.efi
    disabled
}

These are my physical partitions:

A1398% diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *251.0 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:         Microsoft Reserved                         16.8 MB    disk0s2
   3:       Microsoft Basic Data Windows                 68.2 GB    disk0s3
   4:           Windows Recovery                         1.1 GB     disk0s4
   5:       Microsoft Basic Data Data                    107.4 GB   disk0s5
   6:           Linux Filesystem                         12.9 GB    disk0s6
   7:                 Apple_APFS Container disk1         53.7 GB    disk0s7

/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *250.1 GB   disk2
   1:                        EFI ESP                     209.7 MB   disk2s1
   2:                  Apple_HFS SamsungHFS              76.3 GB    disk2s2
   3:                 Apple_APFS Container disk3         50.0 GB    disk2s3
   4:       Microsoft Basic Data SamsungNTFS             85.2 GB    disk2s4
   5:       Microsoft Basic Data exFAT                   26.8 GB    disk2s5
   6:           Linux Filesystem                         10.7 GB    disk2s6

I have 2 disks and ESP is the volumes name of one of the EFI partitions. The volume names are not important — I just named the internal one EFI and the external one ESP so I could remember the difference.

Both ESP and EFI volumes contain a directory EFI/Microsoft/Boot and both contain the Microsoft bootloader bootmgrfw.efi and within the same directory the BCD file.

rEFInd calls the chosen bootmgrfw.efi which can see NTFS (so there is no need for the rEFInd NTFS driver) and this looks at the BCD file in its own directory which defines which Windows bootloader to run.

EFI partition

Each instance of Windows BCD has only one entry (it’s own) and so selecting the relevant icon in rEFInd boots the separate Windows instance direct without the Windows bootloader asking anything.

This you set on the boot tab in msconfig in Windows where in each instance of Windows you define only the one boot entry.

It may be possible to duplicate this behavior with only one EFI partition by copying the whole of EFI/Microsoft/Boot to EFI/Boot or creating a second EFI partition on the same disk but I haven’t tried this as I only want second Windows instance to be available when the external drive is connected.

  • Установка reinhold bmw на windows 10 enet
  • Установка red os рядом с windows
  • Установка rdp на windows server 2019
  • Установка rdp лицензий windows server 2016
  • Установка rdp windows server 2012 r2