Uefi legacy boot что это


This drive can only boot in uefi mode что делать?

С данной ошибкой обычно сталкиваются те, кто пытается загрузиться с флешки для установки операционной системы Windows. После выставления очередности загрузки через BIOS или через меню быстрой загрузки (Boot menu) вместо привычного экрана с надписью “Windows is Loading Files…” отображается сообщение: “Error: legacy boot of uefi media. This drive can only boot in uefi mode”. Перезагрузка компьютера проблему не решает.

Окно с ошибкой

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

Суть проблемы

Чтобы Вас долго не грузить техническими данными сразу перейдем к главному. На данный момент существует два основных режима загрузки: Legacy Mode и UEFI Mode. Переключаются эти режимы в настройках BIOS. Также стоит отметить, что Legacy Mode работает с загрузочными устройствами (флешки, жесткие диски)с MBR разметкой, а UEFI Mode с устройствами с типом разметки GPT.

Разница между MBR и GPT.

Так вот ошибка “Error: legacy boot of uefi media. This drive can only boot in uefi mode ” говорит о том, что вы пытаетесь загрузиться в режиме Legacy с устройства, на котором находится файловая разметка GPT. Загрузку с такого носителя можно выполнить только в режиме UEFI.

Что делать?

Если вы не собираетесь переустанавливать Windows, а вышеописанная ошибка появляется при попытке просто включить компьютер, то вам стоит проверить все USB порты (спереди и сзади) на предмет наличия в них флешек/внешних жестких дисков. Если они есть – вытаскиваем и перезагружаемся. Также проверьте, чтобы в DVD приводе не было дисков.

Если же ошибка появляется при попытке запуска с загрузочного носителя (флешка/диск), то вот что нужно сделать.

Есть два возможных варианта решения проблемы. 1-ый – это переключение режима загрузки с Legacy на UEFI. 2-ой – перезапись установочного образа на флешку с параметрами под Legacy.

Как переключить с Legacy на UEFI?

Сразу отметим, что не на всех компьютерах и ноутбуках есть такая возможность. Более старые компьютеры (2010-2015 годов выпуска) могут не поддерживать режим UEFI и это значит что на них возможна загрузка только в режиме Legacy.

Чтобы попробовать переключить режимы загрузки нужно зайти в BIOS. Далее идем на вкладку “Boot” (названия могут отличаться в зависимости от производителя и версии прошивки), где устанавливается приоритет загрузочных устройств.

Теперь находим опцию «UEFI/BIOS Boot Mode» или Boot List Option и переводим значение в ней на UEFI.

Вариант переключения режимов загрузки с Legacy на UEFI

На материнских платах Gigabyte эта настройка называется “Storage Boot Option Control”. Ее нужно перевести в “UEFI First”.

Переключение режимов загрузки Legacy/ UEFI в BIOS от gigabyte

Теперь смотрим, чтобы флешка стояла первой в списке загрузки. При этом возле ее имени должен быть указан режим UEFI. Выглядит это так:

Загрузка с флешки в UEFI режиме

Сохраняем (F10) изменения и перезагружаемся, пробуя запустить установку операционной системы.

Создание загрузочной флешки под legacy (MBR)

Для этого лучше всего подойдет программа Rufus, которая является лучшей в своем роде. Скачиваем ее и запускаем от имени администратора.

В ее главном окне, после выбора образа с Windows вам нужно установить параметры так, как на скриншоте ниже:

Настройки программы Rufus для создания загрузочной флешки под MBR Legacy

После этого жмем “Старт” и дожидаемся окончания процесса. Далее пробуем запускаться с только что созданной загрузочной флешки. Ошибки “Error: legacy boot of uefi media. This drive can only boot in uefi mode” уже точно больше не будет.

helpadmins.ru

Использование новых NVMe SSD в качестве загрузочного диска на старых системах с Legacy BIOS (для любой ОС) / Habr

Короткий мануал — как реализовать поддержку загрузочного NVMe SSD на старых материнских платах с Legacy BIOS и с использованием Clover (для любых ОС). По следам вот этого поста, где на мой взгляд, решение не так изящно и не для всех BIOS & OS.

Суть проблемы


Старые BIOS не видят новые NVMe SSD, в отличии от EFI (UEFI). Современные ОС эти диски, как правило, видят, и после загрузки ОС работать с диском можно, а вот старый BIOS нет, следовательно, загрузиться с нового быстрого диска не получится. Ну, потому что нельзя дать команду на загрузку тому, чего не видно.

Прелюдия


NVMe SSD диск, как правило, имеет разъем М.2, и работает как бы на прямую с процессором, по шине PCI-E.

Поэтому если на вашей материнской плате нет разъема М.2, то для начала рекомендуется обзавестись переходником PCI-E >> М.2, или PCI-E RAID контроллером для SSD формата М.2.

Существует немного продвинутых NVMe SSD дисков, которые имеют на борту собственные эмулятор Legacy устройства. Например Samsung 950 Pro имеет дополнительный rom для загрузки как Legacy устройство на старых BIOS. А вот вся серия EVO такой возможности не имеет.

Решение


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


Много лет назад, когда компания Intel стала поставлять Apple свои процессоры и компоненты для применения в Маках, возникла потребность предварительного тестирования железа на совместимость с MacOS. Тогда инженеры Intel написали хитрый загрузчик DUET, который представляет собой эмулятор UEFI, загружаемый поверх Legacy BIOS и позволяющий запускать операционные системы, требующие UEFI (MacOS, например).

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

В дальнейшем, DUET был взят за основу для нескольких проектов по созданию мульти-загрузчиков. Один из них Hackintosh — проект по установке последних MacOS на любые Intel, а в последствии и AMD машины. В результате развития Hackintosh появился многофункциональный загрузчик Clover (Клевер), который заточен, разумеется, под загрузку MacOS и Intel, но сейчас может с успехом применяться для загрузки чего угодно на, практически, чём угодно. Вот им, Клевером, мы и воспользуемся для решения нашей проблемы.

Clover Configurator


Клевер сам по себе настраивается тоже не абы как, и для того, чтобы как-то облегчить в дальнейшем процесс тюнинга, была выпущена настроечная утилита Clover Configurator, и множество мануалов по использованию.

Но беда в том, что Clover Configurator работает только в MacOS, и на Windows вы его, в лучшем случае, запустите только в VmWare.

Web-конфигуратор для CloverНекоторые пользователи рекомендует воспользоваться вместо Clover Configurator web-конфигуратором для Clover. Правда не факт, что прессет для вашей MB будет в списке. А документация по Клеверу объемна и подробна. Но, попробуйте, а вдруг.

Так же ходят слухи (в комментах), что сам автор Клевера (SergeySlice) не рекомендует использовать Clover Configurator а рекомендует редактировать конфигурационный файл руками.

Не пойдем этим путем… у нас лапки и Мастдай.

Boot Disk Utility (BDUtility.exe)


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

Не пугайтесь вырвиглазного сайта, утилита работает отлично :-)

Для загрузки утилиты нажмите на картинку с буквами «Bu» и синей стрелкой, посредине сайта :-)

Примечание

Для решения нашей проблемы мы будем использовать дополнительную загрузочную флешку, с которой поверх BIOS будет загружаться Clover, идентифицировать ваш новый быстрый NVMe SSD и передавать ему команду на загрузку вашей новенькой 64-битной Windows 10 (или любой другой).

Отныне флешка навсегда будет установлена в свободном USB порту вашего компьютера, до тех пор, пока вы обновите старое железо!

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

С другой стороны, теперь ваша флешка является крутейшим ключом защиты к вашему компьютеру, ибо без него комп просто не включится, а догадаться, что флешка должна БЫТЬ, да еще и с Клевером — это задача для истинных спецслужб.


Если остался лишний SATA диск...

Теоретически, можно попробовать поставить Clover на лишний SATA диск или даже карту памяти, если таковые имеются в системе и с них поддерживается загрузка (у меня дисков не осталось, снес все, жужжат, а с карт памяти опции загружаться не было и нет). Во всяком случае документация по Клеверу такое допускает. Однако, в этом случае придется вручную поколдовать с загрузочной областью.


Создание установочной флешки


Если вам удалось загрузить утилиту BDUtility — запустите ее. Она запускается под Windows и с правами администратора, будьте внимательны.

Счастливым обладателем других операционных систем стоит пропустить этот пункт и вернуться к Clover Configurator выше.

Запускаем BDUtility.exe


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

Примечание


В настоящий момент утилита BDUtility забирает релизы Clover с сайта sourceforge.net, где размещены релизы вплоть до версии Clover_v2.5k_r5070.zip. После этого разработка Clover была перенесена на GitHub, где сейчас размещен релиз Clover_v2.5k_r5097.zip. Учтите это в работе. BDUtility может опционально пользоваться предварительно скаченными релизами Clover (но совместимыми с BDUtility), если вам необходимо использовать именно последний релиз.
Мы отправили запросы разработчикам Clover и BDUtility с просьбой прокоммуницировать между собой и переключить BDUtility на GitHub.

Настройка BDUtility:


  1. Убедитесь, что ваша флешка определилась утилитой
  2. Зайдите в настройки утилиты Options => Configuration
  3. Поставьте галочку Check at Startup, чтобы новая версия Clover проверялась при каждой загрузке
  4. Нажмите кнопку Check Now, чтобы загрузить последний релиз Clover прямо сейчас
  5. (опционально, рекомендация) Уберите галочку Boot Partition Size, чтобы весь объем вашей флешки был отведен поз загрузчик Colver, в противном случае вы будете видеть дополнительные диски (незанятые и не размеченные разделы флешки) в «Моем компьютере», что через какое-то время начнет вас раздражать
  6. Нажмите ОК
  7. Нажмите кнопку Format, изучите конфигурацию создаваемого загрузчика и нажмите ОК
  8. Ожидайте положительного результата (сядь на печку, приободрись...)

Теперь, когда флешка готова, попробуйте с нее загрузиться. Не забудьте настроить в BIOS загрузочный диск => ваша флешка.

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

Драйвера NVMe


Если ваш NVMe SSD диск уже вставлен в компьютер, не пытайтесь его найти в настройках Clover — его там нет. Дело в том, что по-умолчанию Clover не загружает драйвера для NVMe устройств. Драйвера необходимо включить в загрузку вручную.

Для этого открываем флешку в проводнике.

Заходим в папку G:\EFI\CLOVER\drivers\off (где диск «G» — это ваша флешка, а папка «off» — это папка с не подключенными драйверами Клевера).

Находим файл NvmExpressDxe.efi

Нажимаем Ctrl + C, чтобы скопировать файл в буфер обмена, и копируем файл в папки G:\EFI\CLOVER\drivers\BIOS и G:\EFI\CLOVER\drivers\UEFI. Копируем на всякий случай в обе папки, чтобы не разбираться, какой у вас сейчас биос, старый BIOS или старый UEFI.

Перезагружаем компьютер, загружаемся с флешки-Clover и наблюдаем за количеством иконок на экране, обозначающих варианты загрузки — их должно стать больше, ибо теперь Clover видит ваш NVMe SSD.

Пол дела позади!

Установка новой ОС на новый NVMe SSD диск


Далее, чтобы воспользоваться преимуществом загрузки с быстрого NVMe SSD нам необходимо, собственно, поставить на него систему. И тут есть нюанс. Чтобы в дальнейшем не возникло проблем с попытками загружаться именно с вашего NVMe диска из-под Клевера, крайне рекомендуется не переносить вашу текущую систему на новый диск, а установить на NVMe диск новую систему с нуля. Проблема восходит корнями к типу загрузчика вашей операционной системы, который был выбран и использован при ее установке на компьютер. Если сейчас у вас система с BIOS без поддержки NVMe то и текущей загрузчик ОС ориентирован на BIOS, а не на EFI.
Именно этому загрузчику Clover передает управление, причем в режиме эмуляции EFI. Для справки, клеверный загрузчик моей Win64 лежит на клеверной флешке здесь G:\EFI\BOOT\BOOTX64.efi
Перенести такую ОС на NVMe диск и использовать для загрузки в режиме EFI просто так не получится, потребуется вручную сменить загрузчик ОС, а это трудоемко, не вполне оправданно и чревато, имхо.

Поэтому смело запасаемся лицензионным ключом от новой ОС (ну, или находим, где старый) и идем на страничку загрузки Media Creation Tool, чтобы сделать загрузочный диск вашей операционной системы Windows. Дело в том, что с некоторых пор Микрософт стал сам включать оба загрузчика BIOS и EFI в образ, создаваемый Media Creation Tool. И теперь эта загрузочная флешка может загружаться абсолютно на любых системах с Legacy BIOS, UEFI и EFI. А раньше приходилось обрабатывать полученный загрузочный образ и интегрировать в него Rufus, для загрузки в режиме EFI (пример, промотать до середины).

Примечание

Да, вам понадобится вторая загрузочная флешка, чтобы установить ОС на NVMe SSD.
Нет, на флешку с Clover дистрибутив Windows записать не получится.

Установка ОС


Установка операционной системы на новый NVMe SSD происходит вполне штатно и быстро.
Вам необходимо загрузиться с двумя вставленными флешками, причем загрузиться с клеверной флешки, а не с дистрибутива Windows, не перепутайте.

В интерфейсе Клевера найдите загрузку с флешки с дистрибутивом вашей ОС. Далее должна начаться установка ОС. В какой-то момент система перезагрузится (вы же ставите Windows), и вам придется выбрать для продолжения уже загрузку с вашего NVMe SSD, опять же не перепутайте! Не выбирайте повторно загрузку с дистрибутива ОС, иначе установка просто начнется заново, а нам нужно чтобы она продолжилась с SSD и, желательно, завершилась.

После установки новой системы на ваш новый NVMe SSD, в Clover появится запись, что из-под него была установлена новая ОС. Также иконка загрузки новой ОС должна появиться первой в списке загрузок, и, если я ничего не путаю, то называться она будет «Boot Microsoft EFI Boot from EFI».

И после окончательной установки ОС выньте флешку с ее дистрибутивом, чтобы она не отображалась больше в Клевере и в «Моем компьютере».

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

Тогда, и только тогда, вы сможете гордо поставить первым ваш, к тому времени уже постаревший, NVMe SSD!.

Вот, собственно, и все


Теперь при каждой перезагрузке вы будете попадать в интерфейс Clover, и нажимать на клавишу Enter (если ваша ОС стоит в списке первой). Зато потом наслаждаться новой системой и быстрым SSD :-)
Мне, к сожалению, в отсутствии Clover Configuator так и не удалось настроить Клевер, чтобы он автоматически загружал мою ОС, например спустя 5 сек. бездействия. Чтобы каждый раз не нажимать клавишу Enter. Но такая опция в Клевере разумеется есть.

Буду признателен, если кто-то знает как вручную, без конфигуратора, настроить такой режим загрузки. Файл настроек Клевера обычно лежит здесь G:\EFI\CLOVER\config.plist
Говорят, что за эту опцию отвечают теги:

<key>Timeout</key> <integer>5</integer> и <key>DefaultVolume</key> <string>LastBootedVolume</string>

В первом указывается время задержки перед автозагрузкой, а во втором — id диска с которого мы хотим грузиться по умолчанию, или значение LastBootedVolume, в котором запоминается id последнего диска, с которого производилась загрузка.

Но у меня почему-то не работает :-(

Есть подозрение, что с этими значениями какой-то лаг в Клевере на AMD. То ли таймер не считает, то ли LastBootedVolume не запоминается, но не уверен.



P.S.
Но если бы вы изначально заплатили чуть побольше, и купили бы не переходник PCI-E >> М.2, а Raid контроллер для M.2 дисков, то вам бы не пришлось читать все вышенаписанное, и тем боле все это делать… Потому что Raid контроллер имеет сою собственную микросистему и эмулирует (или имитирует) себя как Legacy устройство, делая доступными все вставленные в него диски во всех биосах, старых и новых.

UPD
Пользователи alpha_ds и walkman7 любезно дополнили пост тегом DefaultVolume и ссылкой на web-конфигуратор Clover.
Спасибо igrblkv за наводку на CloverGitHub .

habr.com

Переключить Legacy BIOS на UEFI без переустановки Windows 10

Некоторые материнские платы нового поколения для ПК и ноутбуков поддерживают как интерфейс UEFI, так и Unified Extensible Firmware Interface, а также BIOS или базовую систему ввода-вывода. Основное преимущество UEFI перед традиционным BIOS заключается в том, что UEFI поддерживает жесткий диск емкостью более 2 терабайт. Но недостатком UEFI является тот факт, что поддерживаются только 64-разрядные версии операционной системы Windows, а жесткий диск должен использовать структуру GPT. Если ваш компьютер поддерживает и совместим с UEFI, и вы хотите перейти с Legacy на UEFI, мы обсудим различные шаги для этого здесь.

Мы будем обсуждать следующие два метода, с помощью которых мы можем изменить Legacy на UEFI без переустановки Windows 10.

  1. Конвертировать MBR в GPT, используя встроенные утилиты Windows.
  2. Конвертировать MBR в GPT, используя среду восстановления.

Прежде чем мы продолжим, вам необходимо выполнить следующие предварительные условия:

  • Материнская плата вашего компьютера должна поддерживать как Legacy, так и UEFI.
  • Ваш компьютер должен работать под управлением Windows 10 версии 1703 или новее в разделе MBR.

1] Конвертировать MBR в GPT, используя утилиты Windows

Запустите CMD от имени администратора и выполните следующую команду:

mbr2gpt.exe /convert /allowfullOS

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

Когда это будет сделано, вам нужно перейти в BIOS вашего ПК.

Перейдите в Настройки → Обновление и безопасность → Дополнительные параметры запуска. Когда вы нажмете «Перезагрузить сейчас», он перезагрузит ваш компьютер и предложит вам все эти дополнительные параметры.

Выберите «Устранение неполадок» → «Дополнительные параметры». На этом экране предлагаются дополнительные параметры, в том числе восстановление системы, восстановление запуска, возврат к предыдущей версии, командная строка, восстановление образа системы и параметры прошивки UEFI.

ip-calculator.ru

Multiboot, UEFI, NTFS или почти рецепт счастья / Habr

Пост написан по мотивам публикации «Живительная флешка».

Предисловие


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

Далеко ходить не пришлось — еще со времен безумной популярности сборки Windows XP Zver Edition ее разработчики использовали набор утилит под названием RMPrepUSB для записи сборки на USB-накопитель. Сборка ушла из памяти людей, ну а сам проект пакета утилит продолжает развиваться и крепнуть. Ну а сама основа — проект Easy2Boot. Изучая их сайт я нашел универсальный способ создания мультизагрузочной флешки, которая может содержать в себе любой дистрибутив, LiveCD или образы дискет, которые Вы только захотите добавить. Итак, приступим к созданию такой чудо-флешки.

Начинаем


Идем на сайт и качаем последний архив с Install_RMPrepUSB_Full в названии. Распаковываем и устанавливаем.
Внимание: для любителей переносимости — можно открыть установочник в 7-zip (к примеру) и распаковать его в папку без установки.
Далее идем на сайт Easy2Boot и качаем архив с самим E2B, распаковываем в любую папку на ПК.

Подготовка флешки


Заходим в папку с E2B и запускаем файл _ISO\docs\Make_E2B_USB_Drive.cmd.
Внимание: если Вы не устанавливали, а распаковывали RMPrepUSB, то на первом же этапе Вас попросят указать путь в папке RMPrepUSB.
Нас попросят указать номер накопителя из приведенного списка, спросят, действительно ли мы хотим форматировать накопитель и попросят выбрать ФС.
И вот тут внимание! Выбираем FAT32 — грузимся в UEFI без проблем, но нет поддержки файлов >4 Гб, и наоборот — NTFS без UEFI, но с поддержкой больших файлов. Если Ваши образы весять меньше 4 Гб каждый, то смело выбирайте FAT32. С NTFS немного сложнее, а именно — флешка в UEFI не загрузится, но если загрузить ее на обычном биосе, а потом выбрать образ для UEFI (об этом ниже), то Easy2Boot перепишет MBR флешки и она будет загружаться в UEFI, при условии, что в том образе есть его поддержка (наличие файлов efi\bootia32.efi и efi\boot\bootx64.efi)

Идем по сложному пути — пишем N (то есть форматируем в NTFS), вылезет окошко с подтверждением, жмем ОК и ждем. После форматирования будут скопированы файлы E2B и на зеленом фоне появится надпись «Нажмите любую клавишу».

Скриншоты

Структура папок или куда же класть образы?


Заходим на накопитель, видим файлы и папку _ISO. Кратко опишу структуру (подробности есть на сайте):
  • ANTIVIRUS — закидываем образы антивирусных LIveCD (Kaspersky, Dr.Web и иже с ними)
  • AUTO — кидаем любой образ в подпапку с нужным названием (к примеру, по пути Ubuntu\My_Ubuntu_Distro.iso)
  • LINUX — соответственно любой Лунксовый образ закидываем в эту папку.
  • MAINMENU — закидываем образ в эту папку и он появится в главном меню Grub4DOS при загрузке (не в подменю, об этом позже)
  • UTILITIES — образы дискет кидаем сюда
  • UTILITIES_MEMTEST — то же самое, но, увы, точнее сказать не могу
  • WIN — сюда мы будем складывать образы, подготовленные для загрузки в UEFI. Об этом позже
  • WINDOWS — по структуре подпапок несложно понять, что для каждого семейства Windows нужно положить образ в соответствующую ему подпапку.

Далее запускаем RMPrepUSB, выбираем накопитель в списке и жмем Ctrl+F2, соглашаемся и ждем пару секунд. Программа пошаманит с файлами и можно грузиться с флешки.

Постой, а как же UEFI?


Ах, ну да. То, ради чего мы здесь и собрались. Для подготовки образа к загрузке в UEFI, скачаем архив, распакуем его. Устанавливаем файл ImDisk\imdiskinst.exe из папки, после чего перетаскиваем файл образа на скрипт MakePartImage_AutoRun_FAT32.cmd в основной папке. Данный скрипт переделает образ в формат .imgPTN, при монтировании которого E2B будет переписывать MBR и монтировать образ как раздел FAT32. Подробнее Вы можете прочитать тут.

Как все это выглядит?


Рабочий пример — накидал разных образов на накопитель, структура такова:
  • _ISO\LINUX\linuxmint-17-xfce-dvd-64bit.iso
  • _ISO\WIN\ru-en_win7_sp1_x86-x64_18in1_activated_v2.imgPTN
  • _ISO\WIN\Boot_USB_Sergei_Strelec_2014_v.6.9.imgPTN
  • _ISO\WIN\ru_windows_8_1_pro_vl_x86_dvd_LITE_3.iso


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

Внимание! Если Вы загружались с образов, подготовленных для UEFI, то Вы заметите, что при следующей загрузке с накопителя будет меню загрузки с того самого образа. А где же все те, что мы набросали на флешку? Да и файлы на флешке не те… Тут два варианта — из загрузчика выбрать верхний пункт EASY2BOOT или в ОС запустить с флешки скрипт e2b\RestoreE2B (run as admin).cmd.

В сухом остатке


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

Информация с сайта разработчиков


habr.com

Как я научился напрямую перезагружаться в нужную ОС через UEFI / Habr

Добрый вечер, Habrahabr!

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

Дано:


  • Два диска с GPT с разными ОС
  • Материнская плата с UEFI и отключеным Legacy Mode
  • Windows, которую бережно поставили с полной поддержкой UEFI
  • Linux (у меня Manjaro), который бережно поставили, выпилив любое упоминание GRUB и прочих старомодных вещей
  • rEFInd — красивый менеджер загрузки (нет, не загрузчик)

Надо:


  • Написать два скрипта на *sh и cmd (bat), которые позволят перезагрузиться в нужную ОС

Примечания:


  • Рабочие варианты обозначены, как Решение, остальное — мои рассуждения и описание пути к цели.
  • Я сознательно опускаю описание тех деталей, которые не относятся к сути настройки, либо легко варьируются. Упоминаются же эти детали потому, что для меня они не были очевидны на момент настройки, поэтому статья становится более понятной для неискушенных читателей, которые не будут видеть в ней инструкцию по рисованию совы.
  • Почему стоит быть осторожным при модификации NVRAM

Linux:


Linux — прекрасная база для работы с компьютером, поэтому всё, что нам нужно уже есть в репозиториях, а коллективный разум сообщества знает всё и всегда готов помочь. Поэтому, после недолгого изучения интернета, ставим efibootmgr:


У меня это было так
sudo pacman -S efibootmgr

Отлично, теперь запускаем:

sudo efibootmgr

Видим что-то вроде этого
Timeout: 1 seconds BootOrder: 0001,0000 Boot0000* Windows Boot Manager Boot0001* rEFInd Boot Manager

Внимательные читатели уже наверняка заметили, что в выводе что-то не так, но тогда я был окрылён мыслью о том, что через 15 минут буду летать между операционками без проблем, и не обратил на это должного внимания.
Ок, 3 минуты на документацию, и мы находим нужный параметр "-n", который выставляет кастомый порядок загрузки ровно на один раз. Пробуем выполнить эту команду:
Решение

sudo efibootmgr -n 0000 && sync && reboot

И оказываемся в Windows, как того и желали. Теперь эту команду записываем в скрипт/alias/*.desktop-файл и радуемся тому, как всё здорово получилось.


Windows:


Началось всё с поиска аналога efibootmgr для Windows, которого в чистом виде, конечно же, нет. Для успокоения совести я даже попытался использовать Linux Subsystem, но это, конечно же, не сработало.
Беглый поиск по интернетам показал, что схожим функционалом по модификации NVRAM обладает утилита bcdedit. Отлично, думаю я, запускаю PowerShell из-под Администратора и пишу

bcdedit /enum firmware

Вот что я увидел
 Firmware Boot Manager --------------------- identifier {fwbootmgr} displayorder {6893bb38-946b-11e7-b175-9301bd8a88f4} {bootmgr} timeout 1 Windows Boot Manager -------------------- identifier {bootmgr} device partition=\Device\HarddiskVolume2 path \EFI\Microsoft\Boot\bootmgfw.efi description Windows Boot Manager locale ru-RU inherit {globalsettings} default {current} resumeobject {6893bb40-946b-11e7-b175-9301bd8a88f4} toolsdisplayorder {memdiag} timeout 30 Firmware Application (101fffff) ------------------------------- identifier {6893bb38-946b-11e7-b175-9301bd8a88f4} device partition=\Device\HarddiskVolume2 path \EFI\REFIND\REFIND_X64.EFI description rEFInd Boot Manager

Где Linux? Куда грузиться? Ненавижу винду
На самом деле оказалось, что виновата не Windows, а я (да-да, тот самый момент для внимательных пользователей), и вот почему: rEFInd — прекрасная утилита, которая обычно, для корректной работы, требует только установить себя. Она умеет подхватывать все .efi файлы, разные дистрибутивы с разными ядрами, сама подставляет иконки. Прелесть, а не инструмент. Но это сыграло со мной злую шутку, так как оказалось, что UEFI ничего не знает про Linux, так как отсутствует соответствующий ему .efi-файл.
Поэтому презагружаемся обратно в Linux, конфигурируем systemd-boot (bootctl). Теперь всё выглядит вот так:

Timeout: 1 seconds BootOrder: 0001,0003,0000,0002 Boot0000* Windows Boot Manager Boot0001* rEFInd Boot Manager Boot0002* Linux Boot Manager Boot0003* Manjaro

Возвращаемся обратно и снова запускаем.

bcdedit /enum firmware

Вот что я увидел теперь
 Firmware Boot Manager --------------------- identifier {fwbootmgr} displayorder {6893bb38-946b-11e7-b175-9301bd8a88f4} {bootmgr} {ff0bc716-c088-11e7-bf74-000acd2dac7d} {ff0bc716-c088-11e7-bf74-000acd2dac7d} timeout 1 Windows Boot Manager -------------------- identifier {bootmgr} device partition=\Device\HarddiskVolume2 path \EFI\Microsoft\Boot\bootmgfw.efi description Windows Boot Manager locale ru-RU inherit {globalsettings} default {current} resumeobject {6893bb40-946b-11e7-b175-9301bd8a88f4} toolsdisplayorder {memdiag} timeout 30 Firmware Application (101fffff) ------------------------------- identifier {6893bb38-946b-11e7-b175-9301bd8a88f4} device partition=\Device\HarddiskVolume2 path \EFI\REFIND\REFIND_X64.EFI description rEFInd Boot Manager Firmware Application (101fffff) ------------------------------- identifier {ff0bc716-c088-11e7-bf74-000acd2dac7d} device partition=\Device\HarddiskVolume2 path \EFI\SYSTEMD\SYSTEMD-BOOTX64.EFI description Linux Boot Manager Firmware Application (101fffff) ------------------------------- identifier {ff0bc717-c088-11e7-bf74-000acd2dac7d} device partition=\Device\HarddiskVolume1 path \EFI\manjaro\vmlinuz-4.13-x86_64 description Manjaro

Тут стоит упомянуть, что проблему мне помогали решать пользователи reddit. Именно благодаря им мы имеем следующий шаг:

bcdedit /bootsequence {ff0bc716-c088-11e7-bf74-000acd2dac7d}

Где аргументом является identifier необходимого варианта — Linux Boot Manager.


Troubleshooting

Powershell не даёт нормально выполнить эту команду, ругаясь на

The entry list data is not valid as specified.

Всё из-за того, что Microsoft периодически любит что-нибудь сломать. Решение просто и элегантно — вызываем классический CMD и работаем в нём. Это можно сделать командой

cmd

Перезагружаемся и видим, что порядок загрузки не изменился, а мы оказались в первом элементе в BootOrder (у меня это был rEFInd), выбираем Windows и видим страшный привет из времен DOS, который говорит нам, что \EFI\SYSTEMD\SYSTEMD-BOOTX64.EFI не найден. Да, мы изменили параметры загрузчика Windows, но не UEFI.
Борьба с этой ошибкой заняла у меня все праздники, но ничего путного не получалось. Я уже подумывал написать на C++ небольшую программку для этого (то, что это возможно, следует из существования такого софта, как EasyUEFI).
Но тут на очередном сайте я обнаружил вот такую конструкцию

 bcdedit /set {bootmgr} path ....

И тут меня осенило, что можно прямо сказать bcdedit что и куда писать. Дальше стоило только проверить догадку:
Решение

bcdedit.exe /set {fwbootmgr} bootsequence {ff0bc716-c088-11e7-bf74-000acd2dac7d} /addfirst

Тут важно, что мы явно сказали писать не в {bootmgr} (как он, видимо, делает по-умолчанию), а в {fwbootmgr}, что и является нашими настройками UEFI.
Перезагружаемся, и всё работает так, как мы этого хотели. Сохраняем это дело в bat/lnk, дописываем

shutdown /r /t 0

Выставляем запуск из-под администратора и готово!
Спасибо за внимание! Буду крайне рад замечаниям по технической части в комментариях, замечаниям по оформлению — в ЛС.

habr.com


Смотрите также



© 2010- GutenBlog.ru Карта сайта, XML.