Uefi shell установка windows
Начну немного с предисловия. Понадобилось мне, значит, переустановить ОС на новеньком ноутбуке. Установщик запустился, да не дал продолжить - не буду, мол, ставиться на 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), то потребуется также проделать следующие шаги:
- На USB флешке скопируйте папку efiMicrosoftoot на один уровень выше, в папку efi.
- С помощью архиватора 7Zip или WinRar откройте файл sourcesinstall.wim, в нем перейдите в папку 1WindowsBootEFIootmgfw.efi и скопируйте этот файл куда-либо (на рабочий стол, к примеру). Для некоторых вариантов образов, этот файл может находиться не в папке 1, а в следующих по номеру.
- Переименуйте файл bootmgfw.efi в bootx64.efi
- Скопируйте файл 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 становится основным образом, который используется для развертывания на других компьютерах.
- Установите 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, не утонув в руководствах и ничего не сломав?
Я обещал "самое краткое руководство". Вот оно:
- Создаём на диске таблицу разделов GPT
- Создаём FAT32-раздел на пару сотен мегабайт
- Скачиваем из интернета любой UEFI-загрузчик
(нам нужен сам загрузчик, это один бинарный файл!) - Переименовываем и кладем этот файл на созданный раздел по адресу /EFI/Boot/bootx64.efi
- Создаём текстовый конфиг, кладем его там, где загрузчик ожидает его увидеть
(настройка и местоположение конфига зависят от конкретной реализации загрузчика, эта информация доступна в интернете) - После перезагрузки видим меню загрузчика
(Если на диске установлена 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 — система будет спокойно загружаться с флешки, не видя разницы.
Читайте также: