Uefi shell установка windows

Обновлено: 04.07.2024


Начну немного с предисловия. Понадобилось мне, значит, переустановить ОС на новеньком ноутбуке. Установщик запустился, да не дал продолжить - не буду, мол, ставиться на GPT-разметку, т.к. загружен в режиме MBR. При попытке загрузиться в режиме UEFI (тыканием в устройство с припиской UEFI в меню загрузки) ничего не происходило. Почесал я репу и понял, что надо это дело довести до конца. Погуглив, столкнулся тем, что информации по этой теме чрезвычайно мало (особенно в рунете), но кое-какой материал, который меня натолкнул на дальнейшую работу, нашелся. Ну что же, постараюсь привести собранную и полученную информацию в более-менее понятную и удобную инструкцию, дабы другие не наступали на те же грабли.

Из семейства Windows Vista и 7 на UEFI можно поставить только 64-битную редакцию. В 32-битной версии просто-напросто отсутствуют необходимые для загрузки файлы. Попытки взять их от x64-версии ни к чему, кроме ошибок загрузчика, не привели, что логично. Учитывая то, что современные UEFI-устройства оснащаются обычно 4 и более гигабайтами ОЗУ, проблем здесь не должно быть. Работает данный метод, понятное дело, только для 64-битных версий EFI (все современные устройства на рынке). Не пытайтесь грузить 32-битный boot.wim, это бесполезно, он просто не запустится. В Windows 8 появилась поддержка UEFI32, таких устройств на рынке мало, в основном это планшеты с 1-2гб озу. UEFI32 и UEFI64 между собой несовместимы, поэтому и файлы разные применяются - BOOTX86.EFI и BOOTX64.EFI соответственно.

Данный материал применим ко всем редакциям Windows Vista SP2 и Windows 7 RTM/SP1, а также их серверных собратьев - Windows Server 2008/2008 R2, вне зависимости от локализации. В Windows 8 и выше все аналогично, кроме того, что там появилась поддержка UEFI32.

Командная строка во всех примерах была запущена из корня дистрибутива (где лежат папки sources и efi), для удобства.

Загрузочное меню до правки:



4.Ну вот и все. Втыкаем флешку в UEFI-устройство, вызываем загрузочное меню, тыкаем на UEFI USB Device и радуемся загрузке.


Работоспособность проверена на ASUS K45A и VMware 9 (в последнем случае, установщик Windows не видел USB-хард и не мог продолжить установку, по всей видимости, это связано с кривой реализацией EFI, в VirtualBox даже bootmgr не запускался).
На Apple MacBook Pro Sandy Bridge загрузка происходит, но какой-то глюк с видеорежимом, видно что установщик запускается, но все сжато в полоску, отображаемую поверх меню загрузки EFI. Отключение графической загрузки в bootmgr не помогло.

Если вдруг выкинуло в EFI Shell и загрузка не пошла, не отчаивайтесь. Обычно, в таком случае, высвечивается список доступных устройств и дисков (первые идут как blk, вторые как fs). Просто находим нужный нам диск (в моем случае - fs1:, т.к. он Removable USB), убеждаемся, что это точно наш диск (делам ls /EFI/BOOT/BOOTX64.EFI) и запускаем установщик - /EFI/BOOT/BOOTX64.EFI.
Обычно, EFI Shell отключен, в реальности я его видел только на виртуалках. Однако, никто не мешает использовать тот же rEFIt. Скриншот для примера:


Можно обойтись и без форматирования. Главное чтобы на флешке был раздел отформатированный в файловую систему 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, рассмотрена тут.


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

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

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

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


С учетом того, что на смену БИОС постепенно приходит UEFI, вопрос о том, как сделать загрузочную флешку (или другой USB накопитель) для последнего варианта, становится довольно-таки актуальным. В этой инструкции подробно показано, как создать загрузочную флешку UEFI для установки Windows 7, Windows 10, 8 или 8.1 с использованием дистрибутива операционной системы в файле образа ISO или на диске DVD. Если вам требуется установочный накопитель для 10-ки, рекомендую более новую инструкцию Загрузочная флешка Windows 10.

Все нижеописанное подходит для 64-битных версий Windows 7, Windows 10, 8 и 8.1 (32-битные версии не поддерживаются). Кроме этого, для того, чтобы успешно загрузиться с созданного накопителя, временно отключите Secure Boot в вашем UEFI BIOS, а также включите CSM (Compatibility Support Module), все это находится в разделе настроек Boot. На эту же тему: Программы для создания загрузочной флешки.

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

Ранее я писал, о том, Как сделать загрузочную флешку Windows 10 UEFI в Rufus, как сделать загрузочную флешку Windows 8 и 8.1 с поддержкой UEFI в программе Rufus. Вы можете использовать указанное руководство, если нет желания выполнять все действия в командной строке — в большинстве случаев, все проходит успешно, программа отличная.

В этой инструкции загрузочная флешка UEFI будет создаваться с помощью командной строки — запустите ее от имени администратора (В Windows 7 найдите командную строку в стандартных программах, кликните правой кнопкой мыши и выберите запуск от имени администратора. В Windows 10, 8 и 8.1 нажмите клавиши Win + X на клавиатуре и выберите нужный пункт в меню).

В командной строке по порядку введите следующие команды:


В списке дисков посмотрите, под каким номером находится подключенная к компьютеру флешка, на которую будет производиться запись, пусть это будет номер N. Введите следующие команды (все данные с USB накопителя будут удалены):


В списке, который отобразится после выполнения команды list volume, обратите внимание на букву, которая была присвоена USB накопителю. Впрочем, это можно посмотреть и в проводнике.

Копирование файлов Windows на флешку

Следующий шаг — скопировать все файлы из дистрибутива Windows 10, 8 (8.1) или 7 на подготовленную флешку. Для начинающих пользователей отмечу: не нужно копировать сам файл ISO, если вы используете образ, требуется его содержимое. Теперь подробнее.

Если вы создаете USB накопитель UEFI на компьютере с Windows 10, Windows 8 или 8.1

В данном случае, если у вас имеется образ ISO, смонтируйте его в системе, для этого кликните по файлу образа правой кнопкой мыши и в меню выберите «Подключить».


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

Если у вас на компьютере Windows 7

Если вы используете Windows 7 на своем компьютере и у вас установлена какая-либо программа для монтирования образов, например, Daemon Tools, смонтируйте образ с дистрибутивом ОС и скопируйте все его содержимое на USB накопитель.

Если такой программы у вас нет, то вы можете открыть образ ISO в архиваторе, например, 7Zip или WinRAR и распаковать его на флешку.

Дополнительный шаг при создании загрузочной флешки с Windows 7

Если вам требуется загрузочная флешка UEFI для установки Windows 7 (x64), то потребуется также проделать следующие шаги:

  1. На USB флешке скопируйте папку efiMicrosoftoot на один уровень выше, в папку efi.
  2. С помощью архиватора 7Zip или WinRar откройте файл sourcesinstall.wim, в нем перейдите в папку 1WindowsBootEFIootmgfw.efi и скопируйте этот файл куда-либо (на рабочий стол, к примеру). Для некоторых вариантов образов, этот файл может находиться не в папке 1, а в следующих по номеру.
  3. Переименуйте файл bootmgfw.efi в bootx64.efi
  4. Скопируйте файл bootx64.efi в папку efi/boot на загрузочной флешке.

На этом установочная USB флешка готова. Вы можете выполнить чистую установку Windows 7, 10 или 8.1 с использованием UEFI (не забудьте про Secure Boot и CSM, о чем я писал выше. См. также: Как отключить Secure Boot).

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

Почему бы не подписаться?

Рассылка новых, иногда интересных и полезных, материалов сайта remontka.pro. Никакой рекламы и бесплатная компьютерная помощь подписчикам от автора. Другие способы подписки (ВК, Одноклассники, Телеграм, Facebook, Twitter, Youtube, Яндекс.Дзен)

26.07.2016 в 23:17

Благодарю автора за статью. У меня Zalman VE-300, который читает образы, винда 8.1 PRO корпоративная, изначально установить с данного девайса не получалось VE-300 имитирует ODD привод и были сомнения на счет этого метода. После настройки биоса, установка удалась. Использование данного способа является решением данного вопроса? (Есть ли опыт использования?)

27.07.2016 в 07:57

Тут не знаю точно, опыта с такими устройствами нет.

26.07.2016 в 23:50

Параметры bios: UEFI Only, CSM Support — NO

15.09.2016 в 08:58

Вот читаю и удивляюсь. Зачем вам GPT и UEFI. Вы хоть знаете что железо и проги работают в новом биосе совсем по другому. если уж тянет вас на старый биос то флаг вам в руки и MBR.
Отключайте UEFI и не лезте на GPT.
GPT не будет работать в старом биосе.
Можно устанавливать 7 10 на UEFI в GPT раздет ничего не отключая с включенным секуре бот. для этого загрузочную флешку надо делать по другому. есть в гоогле пояснения достаточно. Рубусом не получится. преимущества. железо грузится в несколько раз быстрее. винда 10-7 летает. загрузка системы 5-10 секунд. на SSD ещё быстрей…
Если у вас новое железо от 2014 года зачем вам старьё биос и MBR. покупать комп за 1 и выше к и устанавливать старьё это маразм…

22.03.2017 в 17:41

все системы с secure boot имеют uefi с gop
базовый видеодрайвер windows 7 (vga.sys) не поддерживает gpt
вы не загрузитесь без csm

29.10.2016 в 20:55

А зачем здесь вообще использовать командную строку? разве почистить и отформатировать диск просто через explorer (проводник) или Total Commander нельзя?

30.10.2016 в 08:55

30.10.2016 в 13:41

понятно, спасибо за подробный ответ!

02.06.2017 в 14:17

Здравствуйте. Имеется ноутбук Acer Aspire ES 15. Как установить на этот ноутбук виндовс 7? Все делал как описано вами. Делал флешку UEFI. Но в в биосе почему то не видно этой флешки в UEFI, в Legacy видит. Как быть? Что делать? Благодарю.

02.06.2017 в 15:19

А secure boot отключен? флешка fat32?

10.04.2018 в 16:17

Здравствуйте, такая же проблема
UEFI флешку не видит -> Operating System Not Found ,
a Legacy флешка грузится, но установить виндовс не получается, ругается что GPT ..
Secure boot отключен, и флешка FAT32
делал по вашей инструкции и при помощи rufus..
подскажите пожалуйста. Sony vaio svs131e21m
спасибо

11.04.2018 в 09:58

А какая ОС? 7-ка? А режим загрузки там в биос меняется? Может там выставлено что только Legacy (CSM) грузить?

12.07.2017 в 23:40

В командной строке, после format fs=fat32 quick, пишет, что том не выбран. Что делать?

13.07.2017 в 08:25

А предыдущие команды удачно выполняются?
Если да, то попробуйте так, перед этой командой:
list volume
select volume N (номер раздела на флешке).

04.08.2017 в 18:27

Особенно улыбнул совет о форматировании флешки в FAT32 и перемещении на неё файла install.wim размером более 4 Гб.

05.08.2017 в 08:44

Ну, в оригинальной Windows он не более 4 Гб, а про сборки всяческие я тут не пишу. Хотя, WinSetupFromUSB умеет писать образы такие на FAT32 (разбивает файлы)

29.08.2017 в 16:26

30.08.2017 в 10:35

А порядок загрузки в БИОС какой установлен? Грузиться с жесткого диска?
Ну и еще есть идея что как-то загрузчик мог оказаться на флешке, а не на жестком диске… тогда посмотрите статьи на тему восстановления загрузчика Windows 7.

01.11.2017 в 17:17

Ну короче пробовал пробовал, ничего не вышло таким образом. При попытке установки win 7 в самом начале выдает неведомые ошибки касающиеся winload.efi

02.11.2017 в 10:09

А образ оригинальный? На неоригинальных такое бывает. Также попробуйте при установке (если до этого этапа доходит) удалить все разделы в начале диска, выбрать незанятое пространство и, не форматируя, нажать «далее».

12.11.2017 в 13:36

Как вы рекомендуете скопировать файл install.wim, размером 5200 Mb, на флешку с FAT32 ? или есть дистрибутивы с размером файла меньше 4 Gb ?

13.11.2017 в 10:22

Здравствуйте. В оригинальном дистрибутиве — меньше (3.8 Гб для финальной 1709 x64), сама официальная Media Creation Tool пишет на FAT32.
Но: вообще WinSetupFromUSB сейчас умеет писать такие файлы на FAT32 флешку, разбивая их, причем установка потом проходит успешно.

25.11.2017 в 18:41

Банально велик для фат32 файл install.wim объемом > 6Gb. Что тут поделать?

26.11.2017 в 08:07

ого, какие гигантские сборки появились. В общем, WinSetupFromUSB умеет такие файлы писать на FAT32 флешку (разбивает, а в процессе установки уже «сливает» их обратно).

05.03.2018 в 02:09

Приветствую..У меня вопрос вот какой-хочу установить windows 7 professional на компьютер с UEFI и на ЖД, размеченный в MBR.. Как мне следует отформатировать флешку, в какой формат? Обязательно FAT32, или можно в старый-добрый NTFS?И какие еще настройки сделать,чтоб не было надписи «не обнаружены драйвера» или что-то в этом роде?

05.03.2018 в 09:37

Здравствуйте.
Если вы диск планируете оставить MBR, то можно и NTFS (с флешки UEFI на MBR не поставится), но в биос обязательно включить Legacy загрузку и отключить Secure boot. Чтобы драйверов не требовал, подключайте флешку к USB 2.0. Вроде всё учёл.

07.05.2018 в 16:56

Здравствуйте
Проблема такая, на ноуте корявый БИОС, UEFI не отключается, хочу поставить 7-ку на GPT диск, флешку сделал UEFI, ноут ее видит, установка проходит, после перезагрузки виснет на цветном квадратике «starting windows»
Да, еще, Secure boot отключил, конечно.
А вот с файлом install.wim непонятно, нет такого… Есть boot.wim и install.esd
внутри у обоих есть файл bootmgfw.efi разных размеров 1160kb и 720kb соответственно. Какой мне нужно переименовать?

08.05.2018 в 12:18

install.esd — тот же install.wim, только сжатый и шифрованный.

15.03.2019 в 13:03

Такая же проблема. Вам удалось решить?

28.05.2018 в 14:14

Не помогло. С флешки установка не пошла ни в какую. Только через CD-ROM.

19.08.2018 в 17:42

«На USB флешке скопируйте папку efiMicrosoftoot на один уровень выше, в папку efi. »

Что если нет такой папки на флешке?

20.08.2018 в 11:56

Образ без поддержки EFI-загрузки?

31.08.2018 в 09:34

А расскажите как изменить вашу инструкцию так что бы грузиться с двух флешек ? Я создал флешку и usb-hdd по инструкции. и в обоих случаях она uefi, содержит все OS с выбором из файла BCD. но ох уж это ограничение в 4 GB. Можно ли оставить загрузчик на uefi носителе, а файл install.wim в котором все OS положить на NTFS носитель. Нужно для удобства обслуживания образов. пересборка, интеграция обновлений и драйверов. и тд. для универсальности так сказать.

31.08.2018 в 14:19

Не расскажу. Но: версия WinSetupFromUSB 1.6 beta 1 (эта версия доступна для загрузки на оф. сайте) умела писать образы больше 4 Гб на FAT32/EFI флешку (разбивая их и соединяя, когда нужно. Только для образов Windows, но если остальные меньш 4 Гб, то вполне подойдет). Оставили ли возможность в последующих версиях четко ответить не могу (есть сомнения некоторые, нужно проверить).

15.11.2018 в 23:47

Значит у меня такая ситуация. Ноут Асер аспаер загружаюсь в уэфи -в биосе видит флешку все нормально,но с флешки грузиться не хочет-начинает загружать операционку. Значит я в биосе переключаюсь на Легаси — начинает грузить с флешки, я все форматирую, но не устанавливаю пока систему. Потом перезагружаюсь, снова захожу в биос, переключаюсь на уэфи. Начинается загрузка комп не видит установленной операционки (так как я ее форматнул) и начинает искать откуда загрузиться тут и включается флешка. Вот такие танцы с бубном у меня.

09.01.2019 в 23:41

17.11.2018 в 23:56

Добрый день, у меня возник вопрос как записать Winodws 10 и windows 8.1 на одну флешку для установки через Uefi? Одну систему легко записать, а как их совместить.

При установке Windows® на компьютер на базе EFI необходимо включить режим EFI в микропрограмме ПК как при ручной, так и при автоматической установке. Необходимо загрузиться в 64-разрядном режиме EFI с предустановочного диска (64-разрядная версия среды предустановки Windows или 64-разрядная версия программы установки Windows в режиме EFI). Windows невозможно установить на компьютеры на базе UEFI, в режиме BIOS. (Дополнительные сведения о переключении режимов см. в документации по микропрограммам EFI.) Шаги, приведенные в данном разделе, служат только для справки и могут не соответствовать определенным командам вашего типа микропрограмм EFI.

После установки Windows можно выполнить дополнительные настройки образа. Образ Windows становится основным образом, который используется для развертывания на других компьютерах.

  1. Установите Windows, запустив установку Windows с записи загрузки EFI на компьютере-образце. Используйте оболочку EFI или меню микропрограммы Boot from file (Загрузка из файла), чтобы запустить загрузчик Windows EFI с установочного диска. Дополнительные сведения см. в документации по микропрограммам.

Для компьютеров с архитектурой Itanium используйте следующую команду:

Если диспетчер загрузки EFI поддерживает загрузку с DVD-диска, то командная оболочка EFI не требуется. Можно загрузить DVD-диск непосредственно из диспетчера загрузки EFI.

При загрузке среды предустановки Windows с компакт-диска или DVD-диска можно пропустить приглашение «Нажмите любую клавишу для загрузки с компакт-диска или DVD-диска» и загрузиться напрямую в данную среду. Для архитектур x86 и AMD64 удалите файл Bootfix.bin из своего пользовательского образа среды предустановки Windows. Для компьютеров с архитектурой Itanuim при создании образа со средой предустановки Windows для своих клиентов используйте файл Efisys_noprompt.bin вместо файла Efisys.bin.

Некоторые платформы EFI поддерживают как микропрограммы UEFI, так и микропрограммы BIOS. На некоторых из этих систем не всегда ясно, какой вариант загрузки с DVD-диска стоит по умолчанию - EFI или BIOS. В этих системах может потребоваться использование командной оболочки EFI. Можно использовать стандартную запись загрузки микропрограмм для BIOS, если запись загрузки EFI не используются для запуска установки Windows. Если установка Windows запускается в режиме BIOS в комбинированной системе EFI/BIOS, то разделы ESP и MSR не создаются. После завершения установки Windows, используйте команду Diskpart чтобы проверить, что разделы ESP и MSR были созданы.

Как устроена загрузка современных ОС? Как при установке системы настроить загрузку посредством UEFI, не утонув в руководствах и ничего не сломав?

Я обещал "самое краткое руководство". Вот оно:

  1. Создаём на диске таблицу разделов GPT
  2. Создаём FAT32-раздел на пару сотен мегабайт
  3. Скачиваем из интернета любой UEFI-загрузчик
    (нам нужен сам загрузчик, это один бинарный файл!)
  4. Переименовываем и кладем этот файл на созданный раздел по адресу /EFI/Boot/bootx64.efi
  5. Создаём текстовый конфиг, кладем его там, где загрузчик ожидает его увидеть
    (настройка и местоположение конфига зависят от конкретной реализации загрузчика, эта информация доступна в интернете)
  6. После перезагрузки видим меню загрузчика
    (Если на диске установлена Windows 8 или 10 — с большой вероятностью это руководство сокращается до пунктов 3 — 5.)

TL;DR не надо прописывать путь к загрузчику в новых загрузочных записях UEFI — надо файл загрузчика расположить по стандартному "пути по-умолчанию", где UEFI его найдет, и вместо загрузочного меню UEFI пользоваться меню загрузчика, которое гораздо проще и безопаснее настраивается

Как делать не надо

Есть, на самом-то деле, несколько способов настроить UEFI-загрузку. Я начну с описания других вариантов — чтобы было понятно, как (и почему) делать не надо. Если вы пришли за руководством — мотайте в самый низ.

Не надо лезть в NVRAM и трогать efivars

Наиболее "популярная" процедура установки загрузчика в систему такова: установщик ОС создаёт специальный раздел, на нём — структуру каталогов и размещает файлы загрузчика. После этого он с помощью особой утилиты (efibootmgr в linux, bcdedit в windows) взаимодействует с прошивкой UEFI-чипа, добавляя в неё загрузочную запись. В этой записи указывается путь к файлу загрузчика (начиная от корня файловой системы) и при необходимости — параметры. После этого в загрузочном меню компьютера появляется опция загрузки ОС. Для linux существует возможность вообще обойтись без загрузчика. В загрузочной записи указывается путь сразу к ядру вместе со всеми параметрами. Ядро должно быть скомпилировано с опцией EFISTUB (что давно является стандартом для большинства дистрибутивов), в этом случае оно содержит в себе заголовок "исполняемого файла EFI", позволяющий прошивке его запускать без внешнего загрузчика.

При старте системы, когда пользователь выбирает нужную ему загрузочную запись, прошивка UEFI сперва ищет на прописанном в этой записи диске особый EFI-раздел, обращается к файловой системе на этом разделе (обязательно FAT или FAT32), и запускает загрузчик. Загрузчик считывает из файла настроек свой конфиг, и либо грузит ОС, либо предоставляет загрузочное меню. Ничего не замечаете? Да, у нас два загрузочных меню — одно на уровне прошивки чипа UEFI, другое — на уровне загрузчика. В реальности о существовании второго пользователи могут даже не догадываться — если в меню всего один пункт, загрузчик Windows начинает его грузить без лишних вопросов. Увидеть экран с этим меню можно, если поставить вторую копию Windows или просто криво её переустановить.

Обычно для управления загрузочными записями руководства в интернете предлагают взаимодействовать с прошивкой UEFI. Есть аж пять основных вариантов, как это можно сделать: efibootmgr под linux, bcdedit в windows, какая-то софтина на "Маках", команда bcfg утилиты uefi shell (запускается из-под UEFI, "на голом железе" и без ОС, поскольку скомпилирована в том самом особом формате) и для особо качественных прошивок — графическими средствами UEFI (говоря популярным языком, "в настройках BIOS").

За всеми вышенаписанными "многобуков" вы могли легко упустить такую мысль: пользователь, чтобы изменить настройки программной части (например, добавить параметр запуска ОС), вынужден перезаписывать flash-память микросхемы на плате. Есть ли тут подводные камни? О да! Windows иногда способна сделать из ноутбука кирпич, linux тоже, причём разными способами. Качество прошивок часто оставляет желать лучшего — стандарты UEFI либо реализованы криво, либо не реализованы вообще. По логике, прошивка обязана переживать полное удаление всех переменных efivars без последствий, не хранить в них критичных для себя данных и самостоятельно восстанавливать значения по-умолчанию — просто потому что пользователь имеет к ним доступ, и вероятность их полного удаления далека от нуля. Я лично в процессе экспериментов неоднократно (к счастью, обратимо) "кирпичил" свой Lenovo — из загрузочного меню исчезали все пункты, включая опцию "зайти в настройки".

Работа с загрузочными записями UEFI — тоже не сахар. К примеру, утилита efibootmgr не имеет опции "редактировать существующую запись". Если ты хочешь немного изменить параметр ядра — ты удаляешь запись целиком и добавляешь её снова, уже измененную. При этом строка содержит в себе двойные и одинарные кавычки, а также прямые и обратные слеши в не особо очевидном порядке. Когда я наконец заставил эту магию работать — я сохранил её в виде bash-скриптов, которые до сих пор валяются у меня в корневой ФС:

Не надо использовать GRUB

Это чёртов мастодонт, 90% функциональности которого предназначено для дисков с MBR. Для настройки необходимо отредактировать ряд файлов, после чего выполнить команду генерации конфига. На выходе получается огромная малопонятная нормальному человеку простыня. В составе — гора исполняемых файлов. Ставится командой, которую просто так из головы не возьмешь — надо обязательно лезть в документацию

Для сравнения — самый простенький UEFI-bootloader, который есть в составе пакета systemd, ставится командой

Эта команда делает ровно две вещи: копирует исполняемый файл загрузчика на EFI-раздел и добавляет свою загрузочную запись в прошивку. А конфиг для неё занимает ровно СЕМЬ строчек.

"Самое краткое руководство" — чуть более подробно

Загрузочная запись нам не нужна — дело в том, что при выставлении в настройках BIOS загрузки с диска прошивка UEFI сначала ищет на нём EFI-раздел, а затем пытается исполнить файл по строго фиксированному адресу на этом разделе: /EFI/Boot/BOOTX64.EFI

Что такое "EFI-раздел"? В теории, он должен иметь особый тип "EFI System" (ef00). На практике, годится первый раздел на GPT-диске, отформатированный в FAT32 и имеющий достаточно места, чтобы разместить загрузчик и вспомогательные файлы (если есть).

Пункт 3: "Скачиваем из интернета любой UEFI-загрузчик". Что это значит? Загрузчик — это просто исполняемый файл определенного формата, к которому в комплекте идет конфиг. К примеру, если у вас есть под рукой установленный пакет с systemd — файл загрузчика можно найти по адресу /usr/lib/systemd/boot/efi/systemd-bootx64.efi, переименовать его в bootx64.efi и скопировать в /EFI/Boot/ на EFI-разделе. Нет под рукой systemd? Скачайте архив с сайта Archlinux. Или с репозитария Ubuntu. Или Debian. Есть под рукой система с Windows? Возьмите виндовый загрузчик оттуда, тоже сгодится )) Если сумеете настроить, я честно говоря не пробовал.

Пункт 4: "Настроить конфиг". Как и обычная программа, когда загрузчик запускается — он ожидает найти по определенным путям файлы конфигурации. Обычно эту информацию легко найти в интернете. Для загрузчика systemd-boot нам необходимо в корне EFI-раздела создать каталог "loader", а в нём файл "loader.conf" с тремя строчками (привожу свои):

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

Рядом с loader.conf необходимо создать каталог entries — один файл в нём будет отвечать за одну загрузочную запись в boot-меню. У меня там один файл arch.conf с таким содержанием:

Я не упомянул, но довольно очевидно — ядро и initramfs должны лежать в одной файловой системе с загрузчиком, то есть на EFI-разделе. Пути к ним в конфигах отсчитываются от корня этой ФС.

Другие загрузчики

systemd-boot очень простой и предоставляет спартанского вида чёрно-белое меню. Есть варианты красивей, если душа просит красоты.

Clover. Позволяет выставлять нативное разрешение экрана, имеет поддержку мыши на экране загрузки, разные темы оформления. Дефолтная тема ужасна, конфиг в виде xml нечитаем, настроить не смог.

Различные неочевидные последствия

Вы можете легко попробовать эту схему в работе. Берёте USB-флешку, форматируете в таблицу разделов GPT, создаете FAT-раздел и копируете туда загрузчик. Комп сможет с неё стартовать.

Если просто скопировать на такую флешку boot-раздел установленного linux — система будет спокойно загружаться с флешки, не видя разницы.

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