Пишем свой uefi загрузчик

Обновлено: 03.07.2024

Всем привет. В рамках проекта от компании Acronis со студентами Университета Иннополис (подробнее о проекте мы уже описали это тут и тут) мы изучали последовательность загрузки операционной системы Windows. Появилась идея исполнять логику даже до загрузки самой ОС. Следовательно, мы попробовали написать что-нибудь для общего развития, для плавного погружения в UEFI. В этой статье мы пройдем по теории и попрактикуемся с чтением и записью на диск в pre-OS среде.

cover

В компании Acronis команд, которые занимаются UEFI, не так много, поэтому я решил разобраться в вопросе самостоятельно. К тому же есть проверенный способ получить огромное количество точных советов совершенно бесплатно и свободно — просто начать делать что-либо и выложить это в интернет. Поэтому комментарии и рекомендации под этим постом очень приветствуются! Вторая цель данного поста собрать небольшой дайджест статей о UEFI и помочь двигаться в этом направлении.

Полезные ссылки

Для начала хочу перечислить список источников, которые мне очень помогли. Возможно вам они тоже помогут и ответят на ваши вопросы.

  • В первую очередь это UEFI and EDK II Learning and Development от tianocore. Прекрасно структурированный и иллюстрированный курс, который поможет понять что же происходит в момент загрузки и что такое UEFI. Если вы ищите точную теоретическую информацию по теме, вам туда. Если хочется поскорее перейти к написанию UEFI драйверов, то сразу в Lesson 3.
  • Статьи на хабре раз, два и три. Автору низкий поклон. Это отличное практическое руководство без лишних сложностей для начинающих. Частично в данной статье я буду цитировать эти шедевры, хоть и с небольшими изменениями. Без этих публикаций, было бы значительно тяжелее начать.
  • Для продолжающих рекомендую эту статью и другие этого же автора.
  • Так как мы планируем писать драйвер, очень поможет официальный гайдлайн по написанию драйвера. Наиболее правильные советы будут именно там.
  • Ну и на крайний случай спецификация UEFI.

Немного теории

Хочу напомнить требования и цели проекта Active Restore. Мы планируем приоритизировать файлы в системе для более эффективного восстановления. Для этого нужно запуститься на максимально раннем этапе загрузки ОС. Для понимания наших возможностей в мире UEFI стоит немного углубиться в теорию о том как проходит цикл загрузки. Информация для этой части полностью взята из этого источника, который я постараюсь популярно пересказать.

UEFI или Unified Extensible Firmware Interface стал эволюцией Legacy BIOS. В модели UEFI тоже есть базовая система ввода-вывода для взаимодействия с железом, хотя процесс загрузки системы и стал отличаться. UEFI использует GPT (Guid partition table). GPT тесно связана со спецификацией и является более продвинутой моделью для хранения информации о разделах диска. Изменился процесс, но задачи остались прежними: инициализация устройств ввода-вывода и передача управления в код операционной системы. UEFI не только заменяет бóльшую часть функций BIOS, но также предоставляет широкий спектр возможности для разработки в pre-OS среде. Хорошее сравнение Legacy BIOS и UEFI есть тут.

arch

В данном представлении BIOS это компонент, обеспечивающий непосредственное общение с железом и является firmware. UEFI это унификация интерфейса железа для операционной системы, что существенно облегчает жизнь разработчикам.

В мире UEFI мы можем разрабатывать драйвера или приложения. Есть специальный подтип приложений — загрузчики. Разница лишь в том, что эти приложения не завершаются привычным нам образом. Завершаются они вызовом функции ExitBootServices() и передают управление в операционную систему. Чтобы принять решение какой же драйвер нужен вам, рекомендую заглянуть сюда, чтобы расширить понимание о протоколах и рекомендациях по их использованию.

Dev kits

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

  • EDKII (Extensible Firmware Interface Development Kit) — является свободно распространяемым проектом для разработки UEFI приложений и драйверов, которую и мы будем использовать, по началу не сильно в неё углубляясь.
  • VisualUEFI — проект облегчающий разработку в Visual Studio. Больше не нужно заморачиваться с .inf файлами и ковыряться в 100500 скриптах на Python. Все это уже сделано за вас. Внутри можно найти QEMU для запуска нашего кода. В проекте представлены примеры приложения и драйверов.
  • Coreboot — комплексный проект для firmware. Его задача — помочь разработать решение для старта железа и передачи управления в payload (например UEFI или GRUB), который в свою очередь загрузит операционную систему. В данной статье мы не будем затрагивать coreboot. Оставим его для будущих экспериментов, когда набью руку с EDKII. Возможно правильным вектором развития будет Coreboot + Tianocore UEFI + Windows 7 x64.

Последовательность загрузки

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

boot_seq


Ссылка

Процесс с момента нажатия на кнопку питания на корпусе и до полной готовности UEFI интерфейса называется Platform Initialization и делится он на несколько фаз:

  • Security (SEC) — зависит от платформы и процессора, обычно реализована ассемблерными командами, проводит первоначальную инициализацию временной памяти, проверку остальной части платформы на безопасность различными способами.
  • Pre EFI Initialization (PEI) — в данной фазе уже начинается работа EFI кода, главная задача — загрузка DXE Foundation который будет стартовать DXE драйверов на следующей фазе. На самом деле, тут происходит еще очень много всего, но то, что мы планируем разрабатывать, сюда не пролезет, так что двигаемся дальше.
  • Driver Execution Environment (DXE) — на данном этапе начинают стартовать драйвера. Наиболее важная для нас фаза, потому, что наш драйвер тоже будет запущен тут. Данная среда исполнения драйверов и является основным преимуществом над Legacy BIOS. Тут код начинает исполняться параллельно. DXE ведет себя на манер операционной системы. Это позволяет различным компаниям имплементировать свои драйвера. DXE Foundation, развернутый на предыдущей фазе, поочередно находит драйвера, библиотеки и приложения, разворачивает их памяти и исполняет.
  • После этой фазы эстафету принимает Boot Device Selection (BDS). Вы наверняка лично видели данную фазу. Тут происходит выбор на каком устройстве искать приложение — загрузчик операционной системы. После выбора начинается переход к операционной системе. DXE boot драйвера начинают выгружаться из памяти. Загрузчик операционной системы наоборот загружается в память с помощью блочного протокола ввода — вывода BLOCK_IO. Здесь не все DXE драйвера завершают свою работу. Существуют так называемые runtime драйвера. Им придется на понятной для загруженной операционной системе нотации разметить память, которую они занимают. Иными словами виртуализировать свои адреса в адресное пространство Windows, когда произойдет вызов функции SetVirtualAddressMap(). Как только среда будет готова, “Main” функция ядра ОС начнет исполнение, а фаза EFI завершится вызовом ExitBootServices(). Контроль полностью передан в операционную систему. Дальше Windows будет решать какие и откуда загрузить дайвера, как читать и писать на диск и что за файловую систему использовать. Картинка обобщающая вышеуказанную последовательность:

image


Ссылка

Классный рассказ о этапах загрузки есть тут.

Подготовка проекта

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

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

Допускаю, что у вас уже есть Visual Studio. В моем случае у меня Visual Studio 2019. Для начала клонируем себе проект VisualUEFI:

NASM_PREFIX

Соберем EDKII. Для этого открываем EDK-II.sln из \VisualUefi\EDK-II, и просто жмем build на решении. Все проекты в решении должны успешно собраться, и можно переходить к уже готовым примерам. Открываем samples.sln из \VisualUefi\samples. Жмем build на приложении и драйвере, после чего можно запускать QEMU простым нажатием F5.

Shell

Проверяем наш UefiDriver и UefiApplication, именно так называются примеры в решении samples.sln.

load

Отлично, драйвер не только собрался, но и успешно загрузился. Выполнив команду drivers, мы даже увидим его в списке.

drivers

Если бы в коде мы не возвращали EFI_ACCESS_DENIED в функции UefiUnload, мы бы даже смогли выгрузить наш драйвер, выполнив команду:

Теперь вызовем наше приложение:

app

Написание кода

Рассмотрим код предоставленного нам драйвера. Все начинается с функции UefiMain, которая находится в файле drvmain.c. Мы бы могли назвать точку входа и другим именем, если бы писали драйвер “с нуля”, указать это можно было бы в .inf файле.

В нашем примере, в функции UefiMain, происходит вызов функции EfiLibInstallDriverBindingComponentName2, которая регистрирует имя нашего драйвера и Driver Binding Protocol. Согласно модели драйверов UEFI, все драйвера устройств должны регистрировать этот протокол для предоставления контроллеру функций Support, Start, Stop. Функция Support отвечает, может ли наш драйвер работать с данным контроллером. Если да, то вызывается функция Start. Подробнее об этом хорошо описано в спецификации (раздел Protocols — UEFI Driver Model). В нашем примере функции Support, Start и Stop устанавливают наш кастомный протокол. Его реализация в файле drvpnp.c:

Фукнция EfiLibInstallDriverBindingComponentName2 реализована в файле UefiDriverModel.c, и, на самом деле, очень простая. Она вызывает InstallMultipleProtocolInterfaces из Boot Services (см. Спецификацию стр 210). Данная функция связывает handle (в нашем случае ImageHandle, который мы получили на точке входа) и протокол.

Соответственно, можно, и нужно, в момент выгрузки драйвера, удалить установленные компоненты. Мы сделаем это в нашей функции Unload. Теперь наш драйвер можно будет выгружать по команде unload , или перед передачей управления в операционную систему.

Как вы могли заметить, в нашем коде мы взаимодействуем с UEFI через глобальное поле gBS (global Boot Services). Также, существует gRT (global Runtime Services), а вместе они являются частью структуры System Table. Источник.

Для работы с файлами нам понадобится Simple File System Protocol (см. Спецификацию стр 504). Вызвав функцию LocateProtocol, можно получить на него указатель, хотя более правильный способ перечислить все handles на устройства файловой системы с помощью функции LocateHandleBuffer, и, перебрав все протоколы Simple File System, выбрать подходящий, который позволит нам писать и читать в файл. Пример такого кода тут. А мы же воспользуемся способом проще. У протокола есть всего одна функция, которая позволит нам открыть том.

Далее, нам необходимо уметь создавать файл и закрывать его. Воспользуемся EFI_FILE_PROTOCOL, в котором есть функции для работы с файловой системой (см. Спецификацию стр 506).

Для записи в файл нам придется вручную двигать каретку. Для этого будем спрашивать размер файла с помощью функции GetInfo.

Вызываем наши функции и пишем случайные данные в наш файл:

Есть альтернативный способ выполнить нашу задачу. В проекте VisualUEFI уже реализовано то, что мы написали выше. Мы можем просто подключить заголовочный файл ShellLib.h и вызвать в самом начале функцию ShellInitialize. Все необходимые протоколы для работы с файловой системой будут открыты, а функции ShellOpenFileByName, ShellWrite и ShellRead реализованы почти так же, как и у нас.

result

→ Код этого примера на github

Если мы хотим перейти в VMWare, то наиболее правильным будет модификация firmware с помощью UEFITool. Например тут демонстрируется как добавляют NTFS драйвер в UEFI.

Выводы

Усложнить идею нашего драйвера и ближе подвести его под требования проекта Active Restore можно следующим образом: открыть протокол BLOCK_IO, заменить функции чтения на диск нашими функциями, которые запишут данные, читаемые с диска в лог и затем вызовут оригинальные функции. Сделать это можно следующим образом:

Нужно будет не забыть подписаться на ExitBootServices(), чтобы вернуть указатели на место. После того, как фильтр файловой системы в Windows будет готов, минифильтр продолжит логировать чтение с диска.

Но это это уже идеи для будущих статей. Спасибо за внимание.

Создание загрузочной флешки в AIO Boot

Сейчас доступно множество отличных программ для создания загрузочной или мультизагрузочной флешки с Windows 10, 8.1 и Windows 7, Linux, утилитами и инструментами. AIO Boot Creator, по мнению многих пользователей — одна из лучших бесплатных программ, позволяющих сравнительно легко создать мультизагрузочную флешку или внешний жесткий диск.

В этой инструкции о способах создания загрузочной или мультизагрузочной флешки для загрузки в режимах UEFI и Legacy (BIOS) в программы, особенности использования AIO Boot Creator и некоторая дополнительная информация. Также может быть полезным: Лучшие программы для создания загрузочной флешки.

Подготовка USB флешки или внешнего диска AIO Boot Creator

Создание мультизагрузочной флешки с помощью AIO Boot Creator предполагает предварительную подготовку накопителя для последующего помещения образов ISO на него. Действия можно выполнить автоматически или вручную.

А теперь несколько примечаний:

  • Вам не обязательно создавать отдельные разделы FAT32 и NTFS. В случае, если образ не будет помещаться на FAT32, AIO Boot Creator автоматически разобьет его на части.
  • В этой статье упомянут только загрузчик Grub2, как самый часто используемый, однако программа позволяет установить и другие типы загрузчиков на флешку.

Процесс создания мультизагрузочной флешки

После того, как флешка или внешний диск подготовлены, можно добавлять на нее загрузочные образы ISO автоматически или вручную. Для автоматического добавления с использованием AIO Boot Creator:

  1. Запустите с флешки файл AIOCreator.exe. Если вы использовали разбиение флешки на разделы, то запускайте этот файл с того раздела, который большего размера. Если в системе включена опция Secure Boot, вам сообщат о том, что включена безопасная загрузка, это будет мешать загрузке с флешки на данном компьютере и потребуется отключить Secure Boot. Главное окно программы AIO Boot выглядит как на скриншоте ниже.
  2. Рекомендую зайти в пункт «Настройки» и выбрать русский язык для Grub2. Там же вы можете установить обои для меню и изменить другие опции.
  3. Перейдите на вкладку «Интеграция», выберите, какой тип образа вы хотите добавить на флешку, после чего укажите файл образа, нажмите Ок, введите как будет называться этот образ в меню при загрузке и дождитесь завершения добавления образа.
  4. Если флешка в файловой системе FAT32, а образ более 4 Гб, вам сообщат о возможности разбить его на части автоматически.
  5. Тем же способом можно добавить дополнительные образы для установки Windows 10, 8.1 и Windows 7, образы утилит и различных LiveCD, антивирусные диски на вашу флешку.
  6. При желании проверить, как выглядит меню и загрузка, вы можете зайти в «Инструменты» и выбрать пункт «Тестовая загрузка QEMU».

Меню при загрузке с флешки AIO Boot Creator на русском языке будет выглядеть примерно следующим образом:

Меню флешки AIO Boot Creator

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

Ручное добавление образов в AIO Boot

После добавления образов в эту папку, вы сможете найти их в меню загрузке в разделе «Загрузка из ISO, WIM, IMG, VHD и IMA.

Видео инструкция

В инструкции приведены лишь базовые действия по созданию мультизагрузочной флешки в программе AIO Boot Creator, в действительности, её возможности значительно шире: вы можете создавать мультизагрузочный ISO образ (в разделе «Инструменты»), использовать встроенные утилиты для создания образов, разбития файлов и работы с разделами, но, как правило, большинство пользователей используют лишь описанный метод.

А вдруг и это будет интересно:

20.06.2020 в 12:04

22.06.2020 в 12:23

Спасибо, интересная программа. Жаль только обновлений не было с 2018 года. В Украине оф. сайт программы открывается без проблем

24.06.2020 в 22:05

Здравствуйте !
Скажите, могу ли я загрузить на флешку полный образ системы?

25.06.2020 в 16:11

А какой именно образ, чем созданный? В теории можете, но как оно будет работать (или не работать) заранее не угадаешь.

26.06.2020 в 21:14

Спасибо! С образом все ясно.
Вопрос теперь в другом. При попытке создать загрузочную флешку компьютер пишет что для загрузки Windows лучше использовать другой загрузчик, а Grub 2 для других систем.

27.06.2020 в 12:17

27.06.2020 в 18:18

Да вот я и пытаюсь экспериментировать. В результате хотелось бы получить мультифлешку с загрузкой и полным образом всей системы на случай аварии. Это делает Acronis, но как-то громоздко, сама программа должна стоять на компьютере. А вот что-нибудь независимое и все на флешке, что-бы если что: вставил флешку и решил проблему. С чем бы поэкспериментировать ? Может как-то через Power Shell?

28.06.2020 в 10:07

Секунду. Если вам нужен именно образ и возможность восстановления, то образ можно просто создать тем же Acronis-ом (установленным на компьютере) и просто положить его в нужное вам место на флешке. А уже на флешку записать загрузочный образ ISO Acronis-а (такой тоже есть, и изнутри Acronis True Image можно создать), в который потом с флешки можно будет загрузиться, выбрать с неё же полный образ системы и развернуть на нужный диск.
Это при условии, что я правильно понял ситуацию.

30.06.2020 в 12:51

Для реанимации системы достаточно записать на флешку WinPE от Стрельца и не выдумывать больше ничего. Либо любой легковесный дистрибутив Linux, они все способны запускаться в режиме Live с флешки

28.06.2020 в 10:54

Программа очень интересная. Особо хочется сказать о установке систем Linux. При установке программа предлагает дополнительно добавить файл сохранения. При выборе его, получается вполне работающая ОС., со всеми сохраненными Вашими настройками. Правда, для новых Linux ISO это не работает, для старых (предыдущих) все ОК.
Выбор типа и размера текста меню слабенький, для меня (ветерана куликовской битвы).

30.06.2020 в 12:54

Зато есть возможность изменить фон Grub при загрузке на свой, это радует

31.07.2020 в 22:16

01.08.2020 в 11:28

26.08.2020 в 11:30

26.08.2020 в 14:36

Здравствуйте.
Боюсь, не подскажу. Со сборками сейчас в принципе не работаю, а потому особенностей не знаю.

09.09.2020 в 02:48

Привет! Скачал прогу и не могу ее распаковать. Просят пароль. Подскажите какой он. Плиииз.

09.09.2020 в 13:49

31.10.2020 в 18:24

Пароль на архив: aioboot

01.11.2020 в 13:37

24.09.2020 в 13:35

09.09.2020 в 17:19

Dmitry, спасибо за ответ. Уже скачал флеш сделал с 3-мя образами.

16.09.2020 в 01:19

Уважаемый Дмитрий.Хочу на флешку, записанную в этой программе, добавить или удалить не нужные образа и не пойму, как это сделать. Запускаю программу и открывается 2скрин, а хотелось бы, чтобы сразу открылся скрин 4, подскажи, как это сделать? Спасибо.

16.09.2020 в 08:25

17.09.2020 в 23:45

Спасибо Дмитрий за помощь, Хочу в эту программу добавить WinPE10_8_Sergei_Strelec_x86_x64_2020.09.15_Russian, куда его кидать или записывать также как и операционные системы, спасибо.

18.09.2020 в 13:52

26.09.2020 в 00:01

Dmitry, ты пишешь, что лучше в WinSetup, а где этот WinSetup находится? Это програма отдельная для записи, я так понимаю. Когда я скопировал оригинальный образ Windows 10 LTSC оригинальный образ 64 бит (release in March 2019), то при установке выдается, что не найден необходимый драйвер носителя, Что делать? Спасибо.

26.09.2020 в 11:26

02.10.2020 в 00:28

Дмитрий, записал на 64-х гб флешку несколько опер. систем, в основном, Windows 10, проверил в тестовом режиме, все работает, а из под биоса не запускается, хоть тресни. Какая может быть причина, спасибо. Что надо сделать?

02.10.2020 в 15:24

02.10.2020 в 19:33

Дмитрий здравствуй.Дело в том,что флешка видна как загрузочное устройство.

03.10.2020 в 11:09

04.10.2020 в 03:11

Дмитрий, интересно то, что флешка не мигает при загрузе и даже при записи на эту флешку. Что может быть.

04.10.2020 в 10:20

Не совсем понял. А запись идет при этом? Тогда может просто диод на флешке вырубился.

04.10.2020 в 19:05

05.10.2020 в 13:36

Флешка ни в каких компьютерах не светится? Тогда разбирать, смотреть, в чем проблема (если умеете и можете новый диод в случае чего припаять).

15.10.2020 в 12:45

20.10.2020 в 21:02

29.10.2020 в 20:44

Непонятное получилось. Указал только FAT32 и форматировать. Все настройки по описанию прошли успешно. Для начала решил закинуть Вин7 х86. Выскакивает таблица: ImDisk не установлен, Вы хотите установить ImDisk прямо сейчас? Ничего подобного в статьях про эту прогу не описывается

31.10.2020 в 10:51

Вроде раньше не требовала (или я не столкнулся с этим). Но вообще многие программы для работы с образами дисков могут требовать ImDisk. Не опасно, можно установить.

08.11.2020 в 01:33

08.11.2020 в 10:36

В управлении дисками не видно? На другом компьютере есть возможность проверить флешку?

19.12.2020 в 14:11

19.12.2020 в 16:17

29.12.2020 в 20:10

16.02.2021 в 13:28

Ни слова не увидел о том, как сделать загрузочную флешку по UEFI.

17.02.2021 в 18:18

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

24.04.2021 в 20:02

25.04.2021 в 09:47

Вообще, форматирование (быстрое) и разбитие флешки так-то не больше вредят флешке, чем запись файлов на неё.
Уверены, что флешка испорчена? Может просто система не умеет работать с флешками с несколькими разделами? Тогда просто в diskpart очистить её от разделов и создать новый на весь накопитель.

24.05.2021 в 14:27

После установки предложенного обновления AIO Boot перестает запускаться. Без обновления все ОК

16.08.2021 в 14:32

16.08.2021 в 16:21

Здравствуйте.
Попробовать найти образ с этой системой но меньше 4 Гб (могут существовать). Других вариантов для решения в рамках FAT32 не подскажу.

23.10.2021 в 16:31

24.10.2021 в 13:08

Здравствуйте.
А на новом ноутбуке в режиме Legacy загружаетесь? Попробуйте именно в нём.

24.10.2021 в 13:58


Если хотите, создайте UEFI флешку в командной строке.

Для создания загрузочной UEFI флешки Windows 7 я бы использовал программу WinSetupFromUSB.

Отличную загрузочную UEFI флешку LiveCD на базе Windows 8.1 можно создать самостоятельно и даже интегрировать в неё программы, читайте информацию здесь.

Также вы можете создать UEFI флешку с программами:

Рекомендуем другие статьи по данной теме

Комментарии (23)

Рекламный блок

Подпишитесь на рассылку

Навигация

Облако тегов

Архив статей

Сейчас обсуждаем

ULBoom

Спасибо за статью в целом и информацию, что на поддерживаемой Microsoft «Десятке» можно поработать

img

admin

Евгений, не буду посылать вас на другие сайты и скажу очень просто. Для SSD не нужна

Гость Павел

Гость Денис, Удалите антивирус, у меня Eset Internet Security блочил.

img

admin

Добрый вечер! А что за загрузочная флешка у вас? Каким способом создавали и что вообще на ней:

img

admin

Здравствуйте. В Windows 10 копирование и вставка между разными устройствами поддерживается на

RemontCompa — сайт с огромнейшей базой материалов по работе с компьютером и операционной системой Windows. Наш проект создан в 2010 году, мы стояли у истоков современной истории Windows. У нас на сайте вы найдёте материалы по работе с Windows начиная с XP. Мы держим руку на пульсе событий в эволюции Windows, рассказываем о всех важных моментах в жизни операционной системы. Мы стабильно выпускаем мануалы по работе с Windows, делимся советами и секретами. Также у нас содержится множество материалов по аппаратной части работы с компьютером. И мы регулярно публикуем материалы о комплектации ПК, чтобы каждый смог сам собрать свой идеальный компьютер.

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


Можно обойтись и без форматирования. Главное чтобы на флешке был раздел отформатированный в файловую систему FAT32. Замечу, что в Windows 10 последних редакций, отсутствует ограничение на создание только одного раздела на USB-флешках.

Для других версий Windows, несколько разделов на флешке можно создать с помощью программы BOOTICE. Подробнее об этом можно почитать по этой ссылке.

Скачиваем UEFI Shell

О самих загрузчиках. Clover - UEFI загрузчик, используемый в хакинтошах, так как в нем присутствуют специальные драйвера и возможность изменять некоторые значения системы. Трудно конфигурировать вручную. Из дополнительного программного обеспечения только UEFI Shell. Запуск возможен только на архитектуре x64. rEFInd - UEFI загрузчик, для организации мультизагрузки. Легко конфигурируется. Присутствует дополнительное программное обеспечение (gdisk - инструмент разметки диска, gptsync - инструмент синхронизации GPT-таблицы с MBR-таблицей разделов). UEFI Shell так же присутствует. Возможен запуск на платформах x64, ia32, aa64.



Загрузочная Флешка с Shell.efi

Открываем флешку, после подготовки. Копируем скачанный файл Shell.efi по пути /EFI/boot. Последовательность данных каталогов нужно создать.


Переименовываем скопированный файл в boot * .efi. Вместо звездочки вписываем архитектуру скачанного файла x64 , ia32 , arm или aa64 . Должно получиться что то подобное boot x64 .efi, boot ia32 .efi, boot arm .efi или boot aa64 .efi.


Можно сделать и универсальный вариант. Разместить Shell.efi файлы всех архитектур, переименовав их в соответствующие имена. В таких условиях флешка будет грузиться на любой из архитектур, файлы которых расположены в папке /EFI/boot.


Проверим флешку в виртуальной машине.


Загрузочная Флешка с Clover

Открываем скачанный ISO-образ с загрузчиком. Для этих целей хорошо подойдет 7-Zip.


Извлекаем содержимое ISO-образа в корень флешки.


Проверяем на виртуальной машине.


Загрузочная Флешка с rEFInd

Открываем скачанный архив с загрузчиком. Для этих целей хорошо подойдет 7-Zip.


Извлекаем содержимое архива в корень флешки.


Проверяем на виртуальной машине.


Для Чего Нужна Флешка с Загрузчиком

Загрузочная флешка с Clover или rEFInd может помочь при различных ситуациях.

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

Ситуация 2 . У вас был установлен дистрибутив Linux, с загрузчиком GRUB2. Вы решили установить второй операционной системой Windows. После установки загрузчик Windows перезаписал загрузчик GRUB2 и установленный Linux больше не доступен для загрузки. В данной ситуации загрузившись с флешки с загрузчиком, вы сможете загрузить установленный Linux, и уже через него вернуть загрузчик GRUB2 обратно. GRUB2 в свою очередь определит установленный Windows, и позволит грузить обе операционные системы.

Ситуация 3 . На используемой материнской плате отсутствует UEFI Shell. А вам он необходим, для установки специального драйвера в автозагрузку (такое обычно делают на системах с процессорами Xeon для увеличения быстродействия), или добавления новой загрузочной записи.

Вопросы рассмотренные в данном материале: Как создать загрузочную флешку с UEFI Shell? Где скачать UEFI Shell? Как установить Clover на флешку? Как установить rEFInd на флешку? Как можно использовать загрузочную флешку с UEFI Shell?

В заключении приведу пару полезных ссылок. Описание командной оболочки UEFI Shell, смотрим тут. Решение проблемы загрузки ОС с помощью UEFI Shell, описано здесь. Загрузка и установка драйверов в UEFI Shell, рассмотрена тут.

Читайте также: