Windows boot efi bootmgfw efi

В этой статье мы покажем, как вручную восстановить случайно удаленный загрузочный EFI раздел Windows на компьютере с UEFI. Этот простой способ ручного пересоздания загрузочного EFI и MSR разделов Windows позволит вам загрузить ОС после случайного форматирования или удаления загрузочного EFI раздела. Инструкции в статье актуальны для всех версий Windows (в том числе Windows 10 и 11, и Windows Server).

Если вы случайно (или не очень случайно, например при попытке удалить с диска OEM разделы производителя) удалили или отформатировали загрузочный EFI раздел на компьютере с UEFI (не BIOS), ваша Windows 11/10/8.1 /7 перестанет загружаться и будет циклически предлагать выбрать загрузочное устройство (
Reboot and select proper boot device or insert boot media in selected
или
Windows Boot Manager: No media
). Далее мы покажем, как восстановить загрузку Windows при удалении раздела диска с загрузчиком Boot Manager без переустановки ОС.

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

Содержание:

  • Структура разделов GPT диска для Windows
  • Что будет, если в Windows отсутствует раздел EFI?
  • Как вручную создать EFI и MSR разделы на GPT диске?
  • Восстановление EFI загрузчика и BCD в Windows

Структура разделов GPT диска для Windows

Рассмотрим, как должна выглядеть таблица разделов загрузочного жесткого диска Windows с GPT разметкой на UEFI компьютере. Как минимум должны присутствовать следующие разделы:

  • Системный раздел EFI (Extensible Firmware Interface, или EFI System Partition — ESP) с загрузчиком – 100 Мб (тип раздела — EFI);
  • Резервный раздел Майкрософт (Microsoft Reserved) – 128 Мб (тип раздела — MSR);
  • Основной раздел Windows – раздел с Windows.

Структура разделов на UEFI системе

Это именно минимальная конфигурация. Эти разделы создает установщик Windows при чистой установке системы на неразмеченный диск.

Производители компьютеров или сами пользователи могут дополнительно создавать собственные разделы, содержащие, к примеру раздел Recovery со средой восстановления Windows в файле winre.wim (Windows RE), раздел с резервным образом системы от производителя (позволяет откатится к исходному состоянию компьютера), пользовательские разделы и т.д.

Раздел EFI c файловой системой FAT32 является обязательным на дисках с GPT разметкой на UEFI системах и имеет GUID
c12a7328-f81f-11d2-ba4b-00a0c93ec93b
. Стандартный размер EFI раздела 100Мб (на дисках расширенного формата с секторами 4Кб /4K Native / размер EFI раздела 260Мб).

MSR раздел раздел (Microsoft System Reserved) на GPT диске используется для упрощения управления разделами и используется для служебных операций (например, при конвертировании диска из простого в динамический). Это резервный раздел c GUID
e3c9e316-0b5c-4db8-817d-f92df00215ae
, которому не назначается код раздела. На этом разделе нельзя хранить данные пользователя. В Windows 10 и 11 размер MSR раздела – всего 16 Мб (в Windows 8.1 размер MSR раздела – 128 Мб), файловая система – NTFS. MSR раздел должен находиться между разделами EFI (ESP) и первичным разделом с операционной системой Windows.

На основном разделе с файловой системой NTFS находится установленная Windows, программы и данные пользователя. Также на диске могут присутствовать дополнительные разделы с данными.

Что будет, если в Windows отсутствует раздел EFI?

На EFI разделе (по аналогии с разделом System Reserved на дисках с MBR разметкой) хранится хранилище конфигурации загрузки (BCD) и ряд файлов, необходимых для загрузки Windows. При загрузке компьютера среда UEFI загружает загрузчик (EFI\Microsoft\Boot\bootmgfw.efi) с раздела EFI (ESP) и передает управление ему. Исполняемый файл bootmgfw.efi выполняет запуск основного загрузчика Windows Boot Manager, который загружает данные конфигурации из BCD. После загрузки BCD начинается загрузка Windows через winload.efi.

Windows Boot Manager отсуствует загрузчик Windows bootmgfw.efi на EFI разделе

При загрузке UEFI компьютера он ищет системный раздел EFI на всех подключенных дисках. Если раздел EFI удален или поврежден, вы не сможете загрузить Windows с такого диска. Появится ошибка UEFI:
could not locate \efi\boot\bootx64.efi – not found
, пустой UEFI Shell с предложением выбрать загрузочное устройство.

Также вы не сможете загрузить Windows, если EFI раздел отформатирован в файловой системе NTFS. Даже при чистой установке Windows в таком случае вы получите ошибку:

Windows detected that the EFI system partition was formatted as NTFS. Format the EFI system partition as FAT32, and restart the installation.
Установлено, что системный раздел EFI отформатированный в NTFS. Отформатируйте системный раздел EFI в формате FAT32 и перезапустите программу установки.

Как вручную создать EFI и MSR разделы на GPT диске?

Т.к. Windows не загружается корректно, нам понадобится загрузочное устройство с Windows 10/11 или любой другой загрузочный диск (см. как создать загрузочную USB флешку c Windows для UEFI компьютера). Загрузите компьютера с установочного диска и на экране начала установки нажмите комбинацию клавиш Shift+F10. Должно открыться окно командной строки

Запустите утилиту управления дисками и разделами:

Diskpart

Выведите список жестких дисков в системе:

list disk

В этом примере к компьютеру подключен только один disk 0. Звездочка (*) в столбце Gpt означает, что на диск создана таблица разделов GPT).

diskpart вывести список дисков

Если в столбце GPT отсутствует *, значит на диске MBR таблица разделов. Вам нужно убедиться, что ранее вы загружали компьютер в нативном UEFI режиме (иначе следовать данной инструкции бессмысленно). Если вы уверены, что тип таблицы разделов сменился, возможно его нужно стоит переконвертировать из MBR в GPT.

Выберите этот диск:

Select disk 0

Выведите список разделов на диске:

List partition

В нашем примере в системе осталось всего 3 раздела:

  • Раздел Reserved (MSR) — 16 Мб
  • Системный раздел с Windows – 30 Гб
  • Recovery (раздел восстаовления0) – 541 Мб

Как вы видите, раздел EFI (может называться System) отсутствует (удален).

отсутствует efi esp раздел в windows на gpt диске

Совет. Если на разделе EFI были повреждены только файлы среды EFI, а сам раздел остался на месте, вы можете пропустить процесс пересоздания разделов с помощью diskpart. В большинстве случаев достаточно восстановить загрузчик по статье Восстановление EFI загрузчика в Windows . Если у вас компьютер с BIOS и MBR диск, вы можете пересоздать BCD так.

Наша задача удалить оставшийся MSR раздел, так чтобы на диске осталось неразмечено как минимум 228 Мб свободного места (для разделов MSR и EFI). Вы можете удалить оставшийся раздел с помощью графической утилиты GParted или непосредственно из командной строки (именно так и поступим).

Важно! Здесь будьте максимально внимательными и не удалите случайно раздел с Windows или разделы с пользовательскими данными (если таковые имеются).

Выберите раздел для удаления:

Select partition 1

И удалите его:
Delete partition override

Убедитесь, что остался только Primary раздел с Windows размером 30 Гб (в нашем случае) и раздел восстановления:

List partition

diskpart удаление лишних разделов

Теперь вы можете вручную создать разделы EFI и MSR для размещения загрузчика Windows. Для этого в контексте утилиты diskpart последовательно выполните команды:

Выберите диск:

select disk 0

Создайте EFI раздел размером 100 Мб, отформатируйте его в файловой системе FAT32 и назначьте ему букву диска:

create partition efi size=100

Убедитесь, что в diskpart выбран раздел 100 Мб с именем System (звездочка напротив строки Partition 1):

list partition
select partition 1
format quick fs=fat32 label="System"
assign letter=G

Теперь нужно создать MSR раздел размером 16 Мб (для Windows 10 и 11):


create partition msr size=16
list partition
list vol

В нашем случае основному разделу с Windows уже назначена буква диска C:. Если это не так, назначьте ему букву следующим образом:

select vol 1
assign letter=C
exit

создать efi и msr разделы вручную с помощью diskpart

Назначьте букву диска вашему EFI разделу:

Select vol 3
Assign letter=G

Закройте diskpart:

exit

назначить букву диска efi разделу

При создании EFI или MSR раздела может появится ошибка

No usable free extent could be found. It may be that there is insufficient free space tocreate a partition at the specified size and offset. Specify different size and offset values or don't specify either to create the maximum sized partition. It may be that the disk is partitioned using the MBR disk partitioning format and the disk contains either 4 primary partitions, (no more partitions may be created), or 3 primary partitions and one extended partition, (only logical drives may be created).

diskpart недостаточно места для создания efi раздела

В этом случае вам нужно уменьшить раздел основного раздела с Windows на 128 Мб(в нашем примере это volume 1):

select volume 1
shrink desired=128 minimum=128

diskpart shrink - уменьшить размер основного разделаumenshit-razdel

После этого создайте разделы EFI и MSR как описано выше.

Восстановление EFI загрузчика и BCD в Windows

После того, как вы создали минимальную структуру разделов для GPT диска на компьютере с UEFI, нужно скопировать загрузочные файлы EFI на ваш диск и создать конфигурационный файла загрузчика (BCD).

Теперь с помощью утилиты bcdboot.exe скопируйте файлы среды загрузки UEFI из системного каталога Windows в загрузочный EFI раздел и пересоздайте конфигурацию загрузчика BCD. Выполните команду:

bcdboot c:\windows /s G: /f UEFI

Boot files successfully created.

bcdboot c:\windows /s G: /f UEFI восстановить загрузчик Windows

В результате на EFI разделе будет создана структура каталогов. На системном разделе EFI должны обязательно присутствовать следующие файлы:

  • \EFI\Microsoft\Boot\bootmgfw.efi
  • \EFI\Microsoft\Boot\bootmgr.efi
  • \EFI\Microsoft\Boot\memtest.efi
  • \EFI\Microsoft\Boot\BCD
  • \EFI\Microsoft\Boot\Fonts\wgl4_boot.ttf
  • \EFI\Boot\bootx64.efi

Выведите текущую конфигурацию загрузчика Windows Boot Manager. В разделе {bootmgr} должна появиться запись, которая указывает на раздел с файлом управления загрузкой UEFI (
\EFI\MICROSOFT\BOOT\bootmgfw.efi
). В этом примере это
partition=G
, или
partition=\Device\HarddiskVolume2
(если вы не назначили букву EFI разделу).

Загрузчик UEFI затем должен передать управление файлу загрузчика Windows Boot Loader
\Windows\system32\winload.efi
на partition=C:

bcdedit: конфигурация загрузчика windows с bootmgfw.efi

Перезагрузите компьютер (для перезагрузки из среды WinPE нужно выполнить команду wpeutil reboot) и извлеките загрузочную флешку.

Опционально! Вы можете вручную выполнить действия, которые выполняет команда bcdboot. Далее мы покажем, как самостоятельно скопировать системные файлы EFI и пересоздать BCD.

Скопируйте загрузочные файлы среды EFI из каталога вашего диска, на который установлена ваша Windows:

mkdir G:\EFI\Microsoft\Boot

xcopy /s C:\Windows\Boot\EFI\*.* G:\EFI\Microsoft\Boot

Копируем загрузочные файлы среды EFI

Пересоздайте конфигурацию загрузчика Windows:

g:
cd EFI\Microsoft\Boot
bcdedit /createstore BCD
bcdedit /store BCD  /create {bootmgr} /d “Windows Boot Manager”
bcdedit /store BCD /create /d “Windows 10” /application osloader

Команда возвращает GUID созданной записи. Этот GUID нужно подставить в следующей команде вместо
{your_guid}
.

bcdedit /store BCD /set {bootmgr} default {your_guid}
bcdedit /store BCD /set {bootmgr} path \EFI\Microsoft\Boot\bootmgfw.efi
bcdedit /store BCD /set {bootmgr} displayorder {default}

bcdedit пересоздать BCD вручную

Дальнейшие команды bcdedit выполняются в контексте {default}:

bcdedit /store BCD /set {default} device partition=c:
bcdedit /store BCD /set {default} osdevice partition=c:
bcdedit /store BCD /set {default} path \Windows\System32\winload.efi
bcdedit /store BCD /set {default} systemroot \Windows
exit

Если с первого раза Windows не загрузился, выполните следующие действия:

  1. Отключите питание компьютера;
  2. Отключите (физически) жесткий диск;
  3. Включите ПК, дождитесь появления окна с ошибкой загрузки Operating System not found. Выключите компьютер;
  4. Подключите диск обратно.

Если это не помогло, опять загрузитесь с установочной USB флешки и выполните команду:

bootrec /rebuildbcd

Перезагрузите компьютер

bootrec rebuildbcd

Затем в нашем случае (тестирование проводилось на виртуальной машине VMWare с UEFI средой) пришлось добавить новый загрузочный пункт меню, выбрав файл EFI\Microsoft\Boot\bootmgrfw.efi на EFI разделе.

Настройка загрузки в UEFI

В некоторых UEFI меню по аналогии нужно изменить приоритет загрузочных разделов.
После всех рассмотренных манипуляций Windows должна загрузиться корректно.

Совет. Если что-то не заработало, рекомендуем проверить, что загрузочный флаг (boot flag) установлен только у раздела EFI. Проще всего в этом убедится с помощью LiveCd GParted.

В некоторых случаях после пересоздания разделов EFI и MSR и восстановления BCD Windows может перестать корректно выключаться. Если у вас проявляется эта проблема, чтобы исправить ее нужно отключить функцию быстрого запуска в Windows в настройках электропитания компьютера:

  1. Откройте панель управления электропитанием
    powercfg.cpl
    ;
  2. Выберите Choose what the power buttons does;настройка электропитания в windows
  3. Нажмите кнопку Change settings that are currently unavailable и отключите опцию «Turn on fast startup» в разделе «Shutdown settings».Отключить быструю загрузку Windows

В минувшие выходные, уважаемые люди попросили склонировать диск 1Tb HDD-240Gb SSD. При том по определенным причинам диск необходимо было именно склонировать сохранив полную структуру текущих разделов иначе, то, ради чего это все делается, просто перестанет работать.

В последнее время, при клонировании все чаще сталкиваюсь с тем, что слетает загрузчик, при том каждое клонирование часто индивидуально. Ранее я уже писал, как восстановить загрузчик MBR.  

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

Тут можно почитать про структуры и различия между MBR и GPT.

Соответственно его надо восстановить или создать, сегодня как раз об этом.

Структура разделов GPT диска для Windows.

Рассмотрим, как должна выглядеть таблица разделов загрузочного жесткого диска Windows с GPT разметкой на UEFI компьютере. Как минимум должны присутствовать следующие разделы:

  • Системный раздел EFI (Extensible Firmware Interface, или EFI System Partition — ESP) с загрузчиком – 100 Мб (тип раздела — EFI);
  • Резервный раздел Майкрософт (Microsoft Reserved) – 128 Мб (тип раздела — MSR);
  • Основной раздел Windows – раздел с Windows.

Это именно минимальная конфигурация. Эти разделы создает установщик Windows при чистой установке системы на неразмеченный диск.

Производители компьютеров или сами пользователи могут дополнительно создавать собственные разделы, содержащие, к примеру раздел Recovery со средой восстановления Windows в файле winre.wim, раздел с резервным образом системы от производителя (позволяет откатится к исходному состоянию компьютера), пользовательские разделы и т.д.

Раздел EFI c файловой системой FAT32 является обязательным на дисках с GPT разметкой на UEFI системах и имеет GUID c12a7328-f81f-11d2-ba4b-00a0c93ec93b . Стандартный размер EFI раздела 100Мб (на дисках расширенного формата с секторами 4Кб /4K Native / размер EFI раздела 260Мб).

MSR раздел раздел (Microsoft System Reserved) на GPT диске используется для упрощения управления разделами и используется для служебных операций (например, при конвертировании диска из простого в динамический). Это резервный раздел c GUID e3c9e316-0b5c-4db8-817d-f92df00215ae , которому не назначается код раздела. На этом разделе нельзя хранить данные пользователя. В Windows 10 и 11 размер MSR раздела – всего 16 Мб (в Windows 8.1 размер MSR раздела – 128 Мб), файловая система – NTFS. MSR раздел должен находиться между разделами EFI (ESP) и первичным разделом с операционной системой Windows.

На основном разделе с файловой системой NTFS находится установленная Windows, программы и данные пользователя. Также на диске могут присутствовать дополнительные разделы с данными.

Что будет, если в Windows отсутствует раздел EFI?

На EFI разделе (по аналогии с разделом System Reserved на дисках с MBR разметкой) хранится хранилище конфигурации загрузки (BCD) и ряд файлов, необходимых для загрузки Windows. При загрузке компьютера среда UEFI загружает загрузчик (EFI\Microsoft\Boot\bootmgfw.efi) с раздела EFI (ESP) и передает управление ему. Исполняемый файл bootmgfw.efi выполняет запуск основного загрузчика Windows Boot Manager, который загружает данные конфигурации из BCD. После загрузки BCD начинается загрузка Windows через winload.efi.

При загрузке UEFI компьютера он ищет системный раздел EFI на всех подключенных дисках. Если раздел EFI удален или поврежден, вы не сможете загрузить Windows с такого диска. Появится ошибка UEFI: could not locate \efi\boot\bootx64.efi – not found , пустой UEFI Shell с предложением выбрать загрузочное устройство.

Также вы не сможете загрузить Windows, если EFI раздел отформатирован в файловой системе NTFS. Даже при чистой установке Windows в таком случае вы получите ошибку:

Windows detected that the EFI system partition was formatted as NTFS. Format the EFI system partition as FAT32, and restart the installation.

Установлено, что системный раздел EFI отформатированный в NTFS. Отформатируйте системный раздел EFI в формате FAT32 и перезапустите программу установки.

Но это не мой текущий случай, в моем случае это просто: отсутствует загрузочный раздел.

Соответственно мне необходимо удалить текущий склонированный boor раздел, и создать новый.

У меня тут установлен Windows 10, поэтому потребуется загрузочная флешка с 10-кой.

-Грузимся с нее, заходим в раздел Дополнительные параметры, запускаем коммандную строку.

Запускаем утилиту управления дисками и разделами:

Diskpart

Выводим список жестких дисков в системе:

list disk

Свою структуру дисков фотографировать не было времени (но у меня там было два диска: основной и сама флешка), поэтому далее на примере других разделов (но все по аналогии):

Выберите этот диск:

Select disk 0

Выведите список разделов на диске:

List partition

В нашем примере в системе осталось всего 3 раздела:

  • Раздел Reserved (MSR) — 16 Мб
  • Системный раздел с Windows – 30 Гб
  • Recovery (раздел восстаовления0) – 541 Мб

Как вы видите, раздел EFI (может называться System) отсутствует (удален).

Выберите раздел для удаления:

Select partition 1

И удалите его:

Delete partition override

Убедитесь, что остался только Primary раздел с Windows размером 30 Гб (в нашем случае) и раздел восстановления:

List partition

Теперь вы можете вручную создать разделы EFI и MSR для размещения загрузчика Windows. Для этого в контексте утилиты diskpart последовательно выполните команды:

Выберите диск:

select disk 0

Создайте EFI раздел размером 100 Мб, отформатируйте его в файловой системе FAT32 и назначьте ему букву диска:

create partition efi size=100

Убедитесь, что в diskpart выбран раздел 100 Мб с именем System (звездочка напротив строки Partition 1):

list partition
select partition 1
format quick fs=fat32 label=»System»
assign letter=G

Теперь нужно создать MSR раздел размером 16 Мб (для Windows 10 и 11):

create partition msr size=16
list partition
list vol

В моем случае основному разделу с Windows уже назначена буква диска C: (так как основной раздел уже перенесся). Если это не так, назначьте ему букву следующим образом:

select vol 1
assign letter=C
exit

Назначьте букву диска вашему EFI разделу:

Select vol 3
Assign letter=G

Закройте diskpart: exit

При создании EFI или MSR раздела может появится ошибка

В этом случае вам нужно уменьшить раздел основного раздела с Windows на 128 Мб(в нашем примере это volume 1):

select volume 1
shrink desired=128 minimum=128

Восстановление EFI загрузчика и BCD

После того, как вы создали минимальную структуру разделов для GPT диска на компьютере с UEFI, нужно скопировать загрузочные файлы EFI на ваш диск и создать конфигурационный файла загрузчика (BCD).

Теперь с помощью утилиты bcdboot.exe скопируйте файлы среды загрузки UEFI из системного каталога Windows в загрузочный EFI раздел и пересоздайте конфигурацию загрузчика BCD. Выполните команду:

bcdboot c:\windows /s G: /f UEFI

В результате на EFI разделе будет создана структура каталогов. На системном разделе EFI должны обязательно присутствовать следующие файлы:

  • \EFI\Microsoft\Boot\bootmgfw.efi
  • \EFI\Microsoft\Boot\bootmgr.efi
  • \EFI\Microsoft\Boot\memtest.efi
  • \EFI\Microsoft\Boot\BCD
  • \EFI\Microsoft\Boot\Fonts\wgl4_boot.ttf
  • \EFI\Boot\bootx64.efi

Выведите текущую конфигурацию загрузчика Windows Boot Manager.

bcdedit

В разделе {bootmgr} должна появиться запись, которая указывает на раздел с файлом управления загрузкой UEFI ( \EFI\MICROSOFT\BOOT\bootmgfw.efi ). В этом примере это partition=G , или partition=\Device\HarddiskVolume2 (если вы не назначили букву EFI разделу).

Загрузчик UEFI затем должен передать управление файлу загрузчика Windows Boot Loader \Windows\system32\winload.efi на partition=C:

Перезагрузите компьютер (для перезагрузки из среды нужно выполнить команду wpeutil reboot) и извлеките загрузочную флешку.

Если все сделали правильно, то должна загрузиться «Винда» и на этом можно закончить, у меня получилось не с первого раза, но тем не менее получилось ☹, и все благополучно завелось.

Мне уже не потребовалось, но знающие люди еще рекомендуют:

Как самостоятельно скопировать системные файлы EFI и пересоздать BCD.

Скопируйте загрузочные файлы среды EFI из каталога вашего диска, на который установлена ваша Windows:

mkdir G:\EFI\Microsoft\Boot

xcopy /s C:\Windows\Boot\EFI\*.* G:\EFI\Microsoft\Boot

Пересоздайте конфигурацию загрузчика Windows:

g:
cd EFI\Microsoft\Boot
bcdedit /createstore BCD
bcdedit /store BCD  /create {bootmgr} /d “Windows Boot Manager”
bcdedit /store BCD /create /d “Windows 10” /application osloader

Команда возвращает GUID созданной записи. Этот GUID нужно подставить в следующей команде вместо {your_guid} .

bcdedit /store BCD /set {bootmgr} default {your_guid}
bcdedit /store BCD /set {bootmgr} path \EFI\Microsoft\Boot\bootmgfw.efi
bcdedit /store BCD /set {bootmgr} displayorder {default}

Дальнейшие команды bcdedit выполняются в контексте {default}:

bcdedit /store BCD /set {default} device partition=c:
bcdedit /store BCD /set {default} osdevice partition=c:
bcdedit /store BCD /set {default} path \Windows\System32\winload.efi
bcdedit /store BCD /set {default} systemroot \Windows
exit

Если с первого раза Windows не загрузился, выполните следующие действия:

  1. Отключите питание компьютера;
  2. Отключите (физически) жесткий диск;
  3. Включите ПК, дождитесь появления окна с ошибкой загрузки Operating System not found. Выключите компьютер;
  4. Подключите диск обратно.

Если это не помогло, опять загрузитесь с установочной USB флешки и выполните команду:

bootrec /rebuildbcd

Перезагрузите компьютер.

Всем хорошей работы !!!


19.04.2023 —


Posted by |
ms windows 10 desktop

Sorry, the comment form is closed at this time.

1. BIOS

BIOS — Basic Input Output System, это базовая система Ввода-Вывода,
то есть набор программ зашитых в микросхему, использовалась ОС MSDOS, более
современные ОС практически не используют BIOS.

За исключением процедуры POST — Инициализация и проверка работоспособности
аппаратуры.

Если POST выполнен без ошибок, код BIOS начнёт поиск кода загрузчика ОС.
Поиск выполняется на доступных и разрешённых в настройках носителях,
код BIOS загрузит код загрузчика ОС в память и передаст ему управление.

https://en.wikipedia.org/wiki/BIOS

Недостатки BIOS

  • 16-битный код, реальный режим(real-mode)
  • Отсутствие прямого доступа к 64-битному железу
  • Отсутствие единого стандарта
  • Сложность разработки.

2. UEFI на смену BIOS

Дословно Extensible Firmware Interface (EFI) — «расширяемый интерфейс прошивки»

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

EFI предназначен для замены BIOS, первый стандарт был разработан Intel,
затем переработан и название заменено на UEFI (Universal).

Интерфейс, определённый спецификацией EFI, включает таблицы данных, содержащие
информацию о платформе, загрузочные и runtime-сервисы, которые доступны для
загрузчика операционной системы (ОС) и самой ОС.

Некоторые существующие расширения BIOS, типа ACPI и SMBIOS, также присутствуют
в EFI, поскольку не требуют 16-разрядного runtime-интерфейса.

В дополнение к разнообразным службам и сервисам, EFI имеет оболочку —
shell environment, для запуска программ, драйверов, создания исполняемых
скриптов, для запуска утилит диагностики и обновления прошивок, работы
с CD/DVD. Скрипты имеют расширение .nsh.

Достижения UEFI

  • Отсутствие ограничений объема разделов и их количества
  • Увеличение скорости загрузки
  • Безопасность: возможность использования Secure Boot
  • Обратная совместимость с BIOS — CSM (Compatibility Support Mode)
  • Поддердка сетевой загрузки PXE
  • Менеджер загрузки

3. Загрузка в UEFI

Как происходит загрузка в UEFI:

Примечание:
в дальнейшем рассматривается только схема разметки GPT GUID Partition Table.

EFI ищет партицию с идентификатором EF00, эта партиция называется
ESP (EFI System Partition) и должна быть оформлена как FS:

  • FAT16

    или
  • FAT32

однако, такие устройства как floppy, usb могут иметь FAT12 на ESP.

На партиции ESP, EFI по умолчанию ищет файл загручик:

\efi\boot\boot[название архитектуры].efi

например: \efi\boot\bootx64.efi и загружает его.

Далее уже работает сам загрузчик, by default это \efi\boot\bootx64.efi,
он ищет корневую FS, на ней bootmanager или ядро, загружает их и передает
им дальнейшее управление.

На самом деле, EFI BIOS, находит все ESP партиции, на всех носителях
компьютера и на них файлы с расширением efi и если мы захотим загрузиться
с какого-то иного носителя, второго диска или флешки, используя клавишу POP-UP
меню загрузки BIOS, ну например F8 (у разных производителей могут разные
функциональные клавиши), увидим все доступные носители с ESP и загрузчиками.

В отличие от BIOS, для UEFI используются другие ПЗУ, они дешевле, экономичней
и имеют NVRAM в которой хранятся указатели на все найденные загрузчки .efi.

Структура ESP партиции выглядит следующим образом:

\efi\
    |
    \Boot\bootx64.efi
         \name1.efi
         ...
         \nameN.efi
    \Microsoft\Boot\
    \Ubuntu\ubuntux64.efi   - на самом деле efi от grub2-efi
    \Debian\debianx64.efi   - на самом деле efi от grub2-efi
    \FreeBSD\freebsdx64.efi - на самом деле bootx64.efi == boot1.efi
    ...

Примечание:
Имена директорий Ubuntu, Debian, FreeBSD — всего лишь пример,
можете использовать какие Вам угодно.

https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface

4. Windows on UEFI/GPT

Ничего необычно в установке Windows 7/8/10 на GPT из UEFI нет,
ОС Windows ставится на диск с разметкой GPT только из UEFI.

Особенности и условия, ничего особенного:

  • настройка в UEFI BIOS -> загрузка UEFY Only
  • отключить Secure Boot
  • как уже было отмечено ранее, использовать официальный носитель с ОС
  • или выбрать правильный дистрибутив, если используете самодельные

Ниже показана структура ESP из Windows 7

Описание    PartitionID   Размер  Тип раздела  Форматировать   Буква диска
--------------------------------------------------------------------------
Системный   1             100MB   EFI          FAT32           нет
раздел EFI
(ESP)
Резервный   2             128MB   MSR          нет             нет
раздел
Windows     3             ост-ное Основной     NTFS            C:

Программа установки Windows создает ESP на компьютере при следующих условиях:

  • ESP еще не создан.
  • На диске достаточно места для создания раздела емкостью 100 МБ.

Программа установки Windows создает MSR при следующих условиях:

  • MSR еще не создан.
  • На диске достаточно места для создания раздела емкостью 128 МБ.

Приоритет создания ESP выше, чем у создания MSR, так как ESP необходим для загрузки компьютера:

https://technet.microsoft.com/ru-ru/library/dd744301(v=ws.10).aspx

Примечание:
В Windows 8.x/10 ESP 350MB, а в Windows 10 MSR=0-16MB

Важно: чтобы из командной строки Windows (cmd.exe), можно было
смонтировать Системный Раздел ESP, нужно отключить UAC,
затем, перезагрузиться, после чего команда:

c:\>mountvol S: /s

отработает без проблем.

Отключение UAC и Windows Defender с командной строки.

выходим в командную строку Windows:

Пуск -> Выполнить -> cmd.exe -> Запустить от Администратора

Отключаем Windows Defender:

C:\>sc config windefend start= disabled
[SC] ChangeServiceConfig: успех

C:\>sc stop windefend
Имя_службы: windefend
        Тип                : 20  WIN32_SHARE_PROCESS
        Состояние          : 4  RUNNING
                                (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
        Код_выхода_Win32   : 0  (0x0)
        Код_выхода_службы  : 0  (0x0)
        Контрольная_точка  : 0x0
        Ожидание           : 0x0
C:\>

Отключаем UAC:

C:\>reg add HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System
            /v EnableLUA /t REG_DWORD /d 0x0 /f
Операция успешно завершена.

C:\>

Перезагружаем Windows:

C:\> shutdown /r /f /t 0

Теперь, если у нас административный account, можно не заботиться
о разрешениях «от Администратора».

Снова выходим в командную строку и выполняем следующие действия
для монтирования Системного раздела ESP — EFI System Partition:

c:\>mountvol S: /s
c:\>

Ниже показано содержимое ESP записанное при установке
Windows 7:

c:\>dir S:\
 Том в устройстве S не имеет метки.
 Серийный номер тома: 5204-DB74

 Содержимое папки S:\

09.04.2017  21:13    <DIR>          EFI
               0 файлов              0 байт
               1 папок      82 043 904 байт свободно

c:\>
c:\>dir S:\EFI
 Том в устройстве S не имеет метки.
 Серийный номер тома: 5204-DB74

 Содержимое папки S:\EFI

09.04.2017  21:13    <DIR>          .
09.04.2017  21:13    <DIR>          ..
09.04.2017  21:13    <DIR>          Microsoft
09.04.2017  21:20    <DIR>          Boot
               0 файлов              0 байт
               4 папок      82 043 904 байт свободно

c:\>dir S:\EFI\Boot
 Том в устройстве S не имеет метки.
 Серийный номер тома: 5204-DB74

 Содержимое папки S:\EFI\Boot

09.04.2017  21:20    <DIR>          .
09.04.2017  21:20    <DIR>          ..
21.11.2010  06:24           672 640 bootx64.efi
               1 файлов        672 640 байт
               2 папок      82 043 904 байт свободно
c:\>dir S:\EFI\Microsoft
 Том в устройстве S не имеет метки.
 Серийный номер тома: 5204-DB74

 Содержимое папки S:\EFI\Microsoft

09.04.2017  21:13    <DIR>          .
09.04.2017  21:13    <DIR>          ..
09.04.2017  21:13    <DIR>          Boot
               0 файлов              0 байт
               3 папок      82 043 904 байт свободно
c:\>dir S:\EFI\Microsoft\Boot\
 Том в устройстве S не имеет метки.
 Серийный номер тома: 5204-DB74

 Содержимое папки S:\EFI\Microsoft\Boot

09.04.2017  21:13    <DIR>          .
09.04.2017  21:13    <DIR>          ..
10.04.2017  10:19            32 768 BCD
21.11.2010  06:24           672 640 bootmgfw.efi
21.11.2010  06:24           669 568 bootmgr.efi
09.04.2017  21:20    <DIR>          cs-CZ
09.04.2017  21:20    <DIR>          da-DK
09.04.2017  21:20    <DIR>          de-DE
09.04.2017  21:20    <DIR>          el-GR
09.04.2017  21:20    <DIR>          en-US
09.04.2017  21:20    <DIR>          es-ES
09.04.2017  21:20    <DIR>          fi-FI
09.04.2017  21:20    <DIR>          fr-FR
09.04.2017  21:20    <DIR>          hu-HU
09.04.2017  21:20    <DIR>          it-IT
09.04.2017  21:20    <DIR>          ja-JP
09.04.2017  21:20    <DIR>          ko-KR
21.11.2010  06:23           611 200 memtest.efi
09.04.2017  21:20    <DIR>          nb-NO
09.04.2017  21:20    <DIR>          nl-NL
09.04.2017  21:20    <DIR>          pl-PL
09.04.2017  21:20    <DIR>          pt-BR
09.04.2017  21:20    <DIR>          pt-PT
09.04.2017  21:20    <DIR>          ru-RU
09.04.2017  21:20    <DIR>          sv-SE
09.04.2017  21:20    <DIR>          tr-TR
09.04.2017  21:20    <DIR>          zh-CN
09.04.2017  21:20    <DIR>          zh-HK
09.04.2017  21:20    <DIR>          zh-TW
09.04.2017  21:20    <DIR>          Fonts
               4 файлов      1 986 176 байт
              26 папок      82 043 904 байт свободно

c:\>dir S:\EFI\Microsoft\Boot\ /A:S
 Том в устройстве S не имеет метки.
 Серийный номер тома: 5204-DB74

 Содержимое папки S:\EFI\Microsoft\Boot

10.04.2017  10:19            29 696 BCD.LOG
09.04.2017  21:20            65 536 BOOTSTAT.DAT
09.04.2017  21:20                 0 BCD.LOG1
09.04.2017  21:20                 0 BCD.LOG2
               4 файлов         95 232 байт
               0 папок      82 043 904 байт свободно

c:\>dir S:\EFI\Microsoft\Boot\ /A:A
 Том в устройстве S не имеет метки.
 Серийный номер тома: 5204-DB74

 Содержимое папки S:\EFI\Microsoft\Boot

10.04.2017  10:19            32 768 BCD
10.04.2017  10:19            29 696 BCD.LOG
21.11.2010  06:24           672 640 bootmgfw.efi
21.11.2010  06:24           669 568 bootmgr.efi
21.11.2010  06:23           611 200 memtest.efi
09.04.2017  21:20            65 536 BOOTSTAT.DAT
09.04.2017  21:20                 0 BCD.LOG1
09.04.2017  21:20                 0 BCD.LOG2
               8 файлов      2 081 408 байт
               0 папок      82 043 904 байт свободно

c:\>

Примечание:
В некоторых случаях, команда mountvol не может смонтировать ESP
и выдает сообщение о неверном параметре, это возможно при наличии
нескольких HDD в системе или по иной причине.

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

Выходим в командную строку и выполняем следующие действия
для монтирования Системного раздела ESP — EFI System Partition:

C:\Users\lavr>diskpart

Microsoft DiskPart версии 6.1.7601
(С) Корпорация Майкрософт, 1999-2008.
На компьютере: LAVRPC

DISKPART> list disk

  Диск ###  Состояние      Размер   Свободно Дин  GPT
  --------  -------------  -------  -------  ---  ---
  Диск 0    В сети           30 Gбайт      0 байт        *
  Диск 1    В сети           20 Gбайт    20 Gбайт

DISKPART>

чтобы понять что на каком диске находится:

  • выбираем диск командой sel
  • смотрим содержимое партиций
DISKPART> sel disk 0

Выбран диск 0.

DISKPART> list part

  Раздел    ###  Тип               Размер   Смещение
  -------------  ----------------  -------  -------
  Раздел 1    Системный          100 Mб  1024 Kб
  Раздел 2    Зарезервирован     128 Mб   101 Mб
  Раздел 3    Основной            29 Gб   229 Mб

DISKPART>

смотрим содержимое диска 1 (он пуст)

DISKPART> sel disk 1

Выбран диск 1.

DISKPART> list part

Разделы на диске отсутствуют.

DISKPART>

Из верхнего видно, нам нужен Системный раздел:
Раздел 1 Системный 100 Mб 1024 Kб

  • выбираем диск 0
  • партицию 1
  • назначаем букву для монтирования
DISKPART> sel disk 0

Выбран диск 0.

DISKPART> sel part 1

Выбран раздел 1.

DISKPART> assign letter=S

DiskPart: назначение имени диска или точки подключения выполнено успешно.

DISKPART> exit

Проверяем:

C:\Users\lavr>dir /d s:\
 Том в устройстве S не имеет метки.
 Серийный номер тома: C295-49B9

 Содержимое папки s:\

[EFI]
               0 файлов              0 байт
               1 папок      82 039 808 байт свободно

C:\Users\lavr>

Все, можем работать с Системным разделом EFI, он смонтирован
как диск S:

Загрузчик Windows и BootManager.

Как было сказано ранее, в UEFI NVRAM содержатся настройки, переменные
EFI, прописанные и обнаруженные загрузчики с расширением .efi,
порядок загрузки и тд и тп.

Для настройки BootLoader и BootManager, Microsoft использует целую
ветку в реестре, а работа с ней и управление, осуществляется командой
bcdedit.

Посмотреть текущие настройки можно следующим образом:

вариант с лицензионной системы:

C:\Users\lavr>bcdedit /v

Диспетчер загрузки Windows
--------------------
идентификатор           {9dea862c-5cdd-4e70-acc1-f32b344d4795}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\Microsoft\Boot\bootmgfw.efi
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
description             Windows Boot Manager
locale                  ru-RU
inherit                 {7ea2e1ac-2e61-4728-aaa3-896d9d0a9f0e}
default                 {63166763-1615-11e7-8e80-85ed085cd5a2}
resumeobject            {63166762-1615-11e7-8e80-85ed085cd5a2}
displayorder            {63166763-1615-11e7-8e80-85ed085cd5a2}
toolsdisplayorder       {b2721d73-1db4-4c62-bf78-c548a880142d}
timeout                 30

Загрузка Windows
-------------------
идентификатор           {63166763-1615-11e7-8e80-85ed085cd5a2}
device                  partition=C:
path                    \Windows\system32\winload.efi
description             Windows 7
locale                  ru-RU
inherit                 {6efb52bf-1766-41db-a6b3-0ee5eff72bd7}
recoverysequence        {63166764-1615-11e7-8e80-85ed085cd5a2}
recoveryenabled         Yes
osdevice                partition=C:
systemroot              \Windows
resumeobject            {63166762-1615-11e7-8e80-85ed085cd5a2}
nx                      OptIn

C:\Users\lavr>

строка:

path \EFI\Microsoft\Boot\bootmgfw.efi

говорит об использовании оригинального EFI загрузчика от Microsoft.

Ниже показано что default’ный:

  • \EFI\Boot\bootx64.efi

    и
  • \EFI\Microsoft\Boot\bootmgfw.efi

это одна и та же EFI программа, см размер.

В случае хакерской активации через Slic, возможен такой загрузчик:

path \EFI\Microsoft\Boot\windslic.efi

Если установлен загрузчик rEFInd, path должен быть:
path \EFI\REFIND\REFIND_X64.EFI

Изменить загрузчик из Windows, можно командой bcdedit:

C:\> bcdedit /set {bootmgr} path \EFI\DirName\filename.efi

например:

C:\> bcdedit /set {bootmgr} path \EFI\FreeBSD\bootx64.efi
C:\> bcdedit /set {bootmgr} path \EFI\refind\refind_x64.efi
C:\> bcdedit /set {bootmgr} path \EFI\debian\grubx64.efi

5. Linux on UEFI/GPT

Перед установкой Linux из UEFI, советую настроить BIOS следующим образом;

  • загрузка UEFY Only
  • отключить Secure Boot

Дистрибутивы Debian/CentOS/Ubuntu — при начальной установке не требуют

вмешательства, установщик правильно разбирается с разметкой:

  • если разметка отсутствует создает ESP и прописывает туда загрузчик efi
  • если разметка уже есть и ESP партиция в наличии, добавляет туда
    свой загрузчик и делает его default’ным

Примечание:
В EFI/BIOS предлагается выбрать загрузку UEFI Only
потому что с ней не будет проблем.

Это связано с реализацией UEFI/BIOS различными производителями.

Загрузка: UEFY, Legacy — должна отрабатывать
в последовательности:

  • — сначала найти ESP и попытаться загрузиться
  • — если ESP на устройствах отсутствуют, перейти к загрузке Legacy(BIOS)

Загрузка на некоторых материнских картах в случае выбора двух режимов;
UEFI и затем Legacy
может не найти реально существующий EFI-загрузчик на HDD.

Поэтому, лучше установить UEFY Only и установить ОС,
а потом можно экспериментировать с настройками BIOS.

Кроме того, есть материнские карты отдельных производителей, у которых
загрузчик ищется только в \EFI\Microsoft\Boot\.

Допустим мы ставили Linux на чистый диск из UEFI, посмотрим конфигурацию
системы и загрузки GRUB2 + EFI:

root@host:~# uname -a
Linux host 3.16.0-4-amd64 #1 SMP Debian 3.16.39-1+deb8u2 (2017-03-07) x86_64 GNU/Linux
root@host:~# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk
├─sda1   8:1    0  512M  0 part /boot/efi
├─sda2   8:2    0   19G  0 part /
└─sda3   8:3    0  510M  0 part [SWAP]
sr0     11:0    1 1024M  0 rom
root@host:~#

/dev/sda1 это /boot/efi ESP partition

Посмоотрим разметку диска (GPT):

root@host:~# fdisk -lu /dev/sda

Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 503BF83F-D522-46A2-A1A5-DC23B5CB597A

Device        Start      End  Sectors  Size Type
/dev/sda1      2048  1050623  1048576  512M EFI System
/dev/sda2   1050624 40896511 39845888   19G Linux filesystem
/dev/sda3  40896512 41940991  1044480  510M Linux swap

root@host:~#

рекомендую сохранять значение UUID для ESP (может пригодится для grub)

root@host:~# blkid /dev/sda1
/dev/sda1: UUID="6B75-C505" TYPE="vfat" PARTUUID="dfb01231-7608-4325-99e7-5cfc1379d23c"
root@host:~#

модуль efivars подгружается автоматически при установке из UEFI

root@host:~# lsmod | grep efi
efi_pstore             12805  1
efivars                17257  1 efi_pstore
root@host:~#

благодаря ему, реализован очень полезный функционал, но будьте
осторожны с содержимым, которое монтируется в /sys/firmware/efi!

Очень Важно:
UEFI NVRAM доступна на запись от root’а, удаление
данных в NVRAM, может стать катастрофой для компьютера!

root@host:~# ls -la /sys/firmware/efi/
total 0
drwxr-xr-x  5 root root    0 Apr 13 14:41 .
drwxr-xr-x  6 root root    0 Apr 13 14:04 ..
-r--r--r--  1 root root 4096 Apr 13 14:41 config_table
dr-xr-xr-x  2 root root    0 Apr 13 14:41 efivars
-r--r--r--  1 root root 4096 Apr 13 14:41 fw_platform_size
-r--r--r--  1 root root 4096 Apr 13 14:41 fw_vendor
-r--r--r--  1 root root 4096 Apr 13 14:41 runtime
drwxr-xr-x  5 root root    0 Apr 13 14:41 runtime-map
-r--------  1 root root 4096 Apr 13 14:41 systab
drwxr-xr-x 23 root root    0 Apr 13 14:04 vars
root@host:~#

посмотрим переменные

root@host:~# ls -la /sys/firmware/efi/vars/
total 0
drwxr-xr-x 23 root root 0 Apr 13 14:41 .
drwxr-xr-x  5 root root 0 Apr 13 14:41 ..
drwxr-xr-x  2 root root 0 Apr 13 14:04 Boot0000-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x  2 root root 0 Apr 13 14:04 Boot0001-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x  2 root root 0 Apr 13 14:04 Boot0002-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x  2 root root 0 Apr 13 14:04 Boot0003-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x  2 root root 0 Apr 13 14:04 Boot0004-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x  2 root root 0 Apr 13 14:04 BootCurrent-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x  2 root root 0 Apr 13 14:04 BootOptionSupport-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x  2 root root 0 Apr 13 14:04 BootOrder-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x  2 root root 0 Apr 13 14:04 ConIn-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x  2 root root 0 Apr 13 14:04 ConInDev-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x  2 root root 0 Apr 13 14:04 ConOut-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x  2 root root 0 Apr 13 14:04 ConOutDev-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x  2 root root 0 Apr 13 14:04 ConsoleOutMode-793d9786-44dc-4709-b57f-85b8e8fdbfd2
--w-------  1 root root 0 Apr 13 14:42 del_var
drwxr-xr-x  2 root root 0 Apr 13 14:04 HDDP-fab7e9e1-39dd-4f2b-8408-e20e906cb6de
drwxr-xr-x  2 root root 0 Apr 13 14:04 Lang-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x  2 root root 0 Apr 13 14:04 LangCodes-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x  2 root root 0 Apr 13 14:04 MemoryTypeInformation-4c19049f-4137-4dd3-9c10-8b97a83ffdfa
drwxr-xr-x  2 root root 0 Apr 13 14:04 MTC-eb704011-1402-11d3-8e77-00a0c969723b
--w-------  1 root root 0 Apr 13 14:42 new_var
drwxr-xr-x  2 root root 0 Apr 13 14:04 PlatformLang-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x  2 root root 0 Apr 13 14:04 PlatformLangCodes-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x  2 root root 0 Apr 13 14:04 RTC-378d7b65-8da9-4773-b6e4-a47826a833e1
root@host:~#

Еще один важный и полезный инструмент, утилита efibootmgr позволяет решать проблемы загрузки.

посмотрим текущее состояние:

root@host:~# efibootmgr -v
BootCurrent: 0004
BootOrder: 0004,0000,0001,0002,0003
Boot0000* EFI VMware Virtual SATA Hard Drive (0.0)      ACPI(a0341d0,0)PCI(11,0)PCI(4,0)SATA(0,0,0)
Boot0001* EFI VMware Virtual IDE CDROM Drive (IDE 1:0)  ACPI(a0341d0,0)PCI(7,1)ATAPI(1,0,0)
Boot0002* EFI Network   ACPI(a0341d0,0)PCI(11,0)PCI(1,0)MAC(MAC(000c29bb0ce1,0)
Boot0003* EFI Internal Shell (Unsupported option)       MM(b,e1a3000,e42ffff)FvFile(c57ad6b7-0515-40a8-9d21-551652854e37)
Boot0004* debian        HD(1,800,100000,dfb01231-7608-4325-99e7-5cfc1379d23c)File(\EFI\debian\grubx64.efi)

текущий загрузчик EFI: BootCurrent: 0004

порядок загрузки EFI: BootOrder: 0004,0000,0001,0002,0003

и смотрим кто у нас 4 или 0004: Boot0004* debian HD(1,800,100000,dfb01231-7608-4325-99e7-5cfc1379d23c)File(\EFI\debian\grubx64.efi)

Все верхние примеры были на базе ОС Debian.

Работа c ESP в Linux

Важно: ESP должна быть смонтирована!

В нижнем примере это выглядит следующим образом:

root@host:~# mount -text4,vfat
/dev/sda2 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
/dev/sda1 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=utf8,shortname=mixed,errors=remount-ro)
root@host:~#

содержимое ESP при единственной установленой ОС Debian

root@host:~# ls -la /boot/efi/
total 12
drwx------ 3 root root 4096 Jan  1  1970 .
drwxr-xr-x 4 root root 4096 Apr 13 13:56 ..
drwx------ 3 root root 4096 Apr 13 13:55 EFI
root@host:~# ls -la /boot/efi/EFI/
total 12
drwx------ 3 root root 4096 Apr 13 13:55 .
drwx------ 3 root root 4096 Jan  1  1970 ..
drwx------ 2 root root 4096 Apr 13 13:55 debian
root@host:~# ls -la /boot/efi/EFI/debian/
total 128
drwx------ 2 root root   4096 Apr 13 13:55 .
drwx------ 3 root root   4096 Apr 13 13:55 ..
-rwx------ 1 root root 119808 Apr 13 13:55 grubx64.efi
root@host:~#

В Ubuntu отличаться будет лишь названием: /boot/efi/EFI/ubuntu/

Создание GPT разметки в Linux:

  • Ubuntu и Debian имеют адаптированную утилиту fdisk для работы с GPT
  • или воспользоваться альтернативой: gdisk или parted

Примеры разметки:

  • fdisk
    # fdisk /dev/sdb
    
    Welcome to fdisk (util-linux 2.25.2).
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
    
    Device does not contain a recognized partition table.
    Created a new DOS disklabel with disk identifier 0x9ff31f11.
    
    Command (m for help): g
    Created a new GPT disklabel (GUID: 7560BF09-00E8-4DB8-B75C-2564C6326039).
    
    Command (m for help): n
    Partition number (1-128, default 1):
    First sector (2048-41943006, default 2048):
    Last sector, +sectors or +size{K,M,G,T,P} (2048-41943006, default 41943006): +100M
    
    Created a new partition 1 of type 'Linux filesystem' and of size 100 MiB.
    
    Command (m for help): t
    Selected partition 1
    Partition type (type L to list all types): 1
    Changed type of partition 'Linux filesystem' to 'EFI System'.
    
    Command (m for help): n
    Partition number (2-128, default 2):
    First sector (206848-41943006, default 206848):
    Last sector, +sectors or +size{K,M,G,T,P} (206848-41943006, default 41943006): +17G
    
    Created a new partition 2 of type 'Linux filesystem' and of size 17 GiB.
    
    Command (m for help): n
    Partition number (3-128, default 3):
    First sector (35858432-41943006, default 35858432):
    Last sector, +sectors or +size{K,M,G,T,P} (35858432-41943006, default 41943006):
    
    Created a new partition 3 of type 'Linux filesystem' and of size 2.9 GiB.
    
    Command (m for help): t
    Partition number (1-3, default 3): 3
    Partition type (type L to list all types): 14
    
    Changed type of partition 'Linux filesystem' to 'Linux swap'.
    
    Command (m for help): p
    Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: gpt
    Disk identifier: 7560BF09-00E8-4DB8-B75C-2564C6326039
    
    Device        Start      End  Sectors  Size Type
    /dev/sdb1      2048   206847   204800  100M EFI System
    /dev/sdb2    206848 35858431 35651584   17G Linux filesystem
    /dev/sdb3  35858432 41943006  6084575  2.9G Linux swap
    
    Command (m for help): w
    The partition table has been altered.
    Calling ioctl() to re-read partition table.
    Syncing disks.
    
    # fdisk -l /dev/sdb
    
    Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: gpt
    Disk identifier: 7560BF09-00E8-4DB8-B75C-2564C6326039
    
    Device        Start      End  Sectors  Size Type
    /dev/sdb1      2048   206847   204800  100M EFI System
    /dev/sdb2    206848 35858431 35651584   17G Linux filesystem
    /dev/sdb3  35858432 41943006  6084575  2.9G Linux swap
    
  • parted
    # parted -a optimal -s /dev/sdb mklabel gpt mkpart ESP fat32 1MiB 101MiB mkpart primary linux-swap 101MiB 2101MiB mkpart primary ext4 2101MiB 100%
    root@deb:~# parted /dev/sdb -s unit MiB print
    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sdb: 20480MiB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags:
    
    Number  Start    End       Size      File system  Name     Flags
     1      1.00MiB  101MiB    100MiB    fat32        ESP      msftdata
     2      101MiB   2101MiB   2000MiB                primary
     3      2101MiB  20479MiB  18378MiB               primary
    
    #
    
  • sgdisk
    # sgdisk --zap-all /dev/sdb
    

    или

    # sgdisk -z /dev/sdb
    
    # sgdisk -og /dev/sdb
    # sgdisk -n 1::+100M -t1:ef00  /dev/sdb
    The operation has completed successfully.
    # sgdisk -n 2::+2G -t2:8200  /dev/sdb
    The operation has completed successfully.
    # sgdisk -n 3:0:0 -t2:8300  /dev/sdb
    The operation has completed successfully.
    # sgdisk -p /dev/sdb
    Disk /dev/sdb: 41943040 sectors, 20.0 GiB
    Logical sector size: 512 bytes
    Disk identifier (GUID): EFD15CD3-1CBD-4219-9622-3F61199D392C
    Partition table holds up to 128 entries
    First usable sector is 34, last usable sector is 41943006
    Partitions will be aligned on 2048-sector boundaries
    Total free space is 2014 sectors (1007.0 KiB)
    
    Number  Start (sector)    End (sector)  Size       Code  Name
       1            2048          206847   100.0 MiB   EF00
       2          206848         4401151   2.0 GiB     8300
       3         4401152        41943006   17.9 GiB    8300
    #
    

Примечание:
Комментария и объяснения верхних команд не будет, как ими пользоваться
можно прочитать в man

6. FreeBSD on UEFI/GPT

Установка FreeBSD из UEFI на чистый диск проходит без проблем,
но если диск уже размечен как GPT и на нем есть ESP партиция,
то встраиваться туда FreeBSD не умеет.

Ниже пример чистой установки FreeBSD из UEFI(пусть не смущает что это VM):

  • uname
    root@host:~ # uname -a
    FreeBSD host.dubna.ru 11.0-RELEASE-p1 FreeBSD 11.0-RELEASE-p1 #0 r306420: Thu Sep 29 01:43:23 UTC 2016     root@releng2.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC  amd64
    root@host:~ #
    
  • camcontrol
    root@host:~ # camcontrol devlist
       at scbus1 target 0 lun 0 (cd0,pass0)
      at scbus3 target 0 lun 0 (ada0,pass1)
    root@host:~ #
    
  • gpart
    root@host:~ # gpart show ada0
    
    =>      40  20971440  ada0  GPT  (10G)
            40    409600     1  efi  (200M)
        409640  19511296     2  freebsd-ufs  (9.3G)
      19920936   1048576     3  freebsd-swap  (512M)
      20969512      1968        - free -  (984K)
    
    root@host:~ #
    
  • mount
    root@host:~ # mount
    /dev/ada0p2 on / (ufs, local, journaled soft-updates)
    devfs on /dev (devfs, local, multilabel)
    root@host:~ #
    
  • монтирование ESP и просмотр содержимого
    root@host:~ # mount_msdosfs /dev/ada0p1 /mnt
    root@host:~ # mount
    
    /dev/ada0p2 on / (ufs, local, journaled soft-updates)
    devfs on /dev (devfs, local, multilabel)
    /dev/ada0p1 on /mnt (msdosfs, local)
    
    root@host:~ # ls -la /mnt
    
    total 21
    drwxr-xr-x   1 root  wheel  16384 Jan  1  1980 .
    drwxr-xr-x  18 root  wheel   1024 Apr 13 15:30 ..
    drwxr-xr-x   1 root  wheel    512 Apr 12  2016 efi
    root@host:~ #
    
    root@host:~ # ls -la /mnt/efi/
    
    total 17
    drwxr-xr-x  1 root  wheel    512 Apr 12  2016 .
    drwxr-xr-x  1 root  wheel  16384 Jan  1  1980 ..
    drwxr-xr-x  1 root  wheel    512 Apr 12  2016 boot
    
    root@host:~ # ls -la /mnt/efi/boot/
    
    total 130
    drwxr-xr-x  1 root  wheel     512 Apr 12  2016 .
    drwxr-xr-x  1 root  wheel     512 Apr 12  2016 ..
    -rwxr-xr-x  1 root  wheel  131072 Apr 12  2016 bootx64.efi
    -rwxr-xr-x  1 root  wheel      12 Apr 12  2016 startup.nsh
    
    root@host:~ # cat /mnt/efi/boot/startup.nsh
    BOOTx64.efi
    root@host:~ #
    

Загрузка FreeBSD из UEFI коротко, четко и ясно описана в uefi(8)

# man uefi

UEFI firmware ищет загрузчик OS на EFI System Partition (ESP), если
не установлен, по умолчанию грузит /efi/Boot/bootx64.efi.
Это уже было описано.

По умолчанию FreeBSD устанавливает свой EFI загрузчик: boot1.efi как
/efi/Boot/bootx64.efi

  • boot1.efi читает /boot.config или /boot/config
  • затем ищет на ufs или zfs загрузчик loader.efi и загружает его
  • loader.efi загружает ядро — kernel

Все.

Создание USB/HDD UEFI Bootable в FreeBSD:

FreeBSD UEFI

# gpart create -s gpt da0
# gpart add -t efi -s 800K da0
# gpart add -t freebsd-ufs da0
# dd if=/boot/boot1.efifat of=/dev/da0p1
# newfs -U -L FreeBSD /dev/da0p2

Просто. Далее можем развернуть систему руками, как обычно из /usr/freebsd-dist
при загрузке с CD/DVD или Memstick.

Что из себя представляет /boot/boot1.efifat:

# mdconfig -a -t vnode -f /boot/boot1.efifat
# mount_msdosfs /dev/md0 /mnt
# ls -la /mnt/efi/boot/
total 130
drwxr-xr-x  1 root  wheel     512 Apr 12  2016 .
drwxr-xr-x  1 root  wheel     512 Apr 12  2016 ..
-rwxr-xr-x  1 root  wheel  131072 Apr 12  2016 bootx64.efi
-rwxr-xr-x  1 root  wheel      12 Apr 12  2016 startup.nsh
# cat /mnt/efi/boot/startup.nsh
BOOTx64.efi
#

Немного смущает что разный размер:

# ls -la /boot/boot1.efi
-r-xr-xr-x  1 root  wheel  77824 Mar 12 19:30 /boot/boot1.efi
# ls -la /mnt/efi/boot/bootx64.efi
-rwxr-xr-x  1 root  wheel  131072 Apr 12  2016 /mnt/efi/boot/bootx64.efi
#

Но ничего страшного, при ручной разметке я использовал /boot/boot1.efi
и без автоскрипта для efi-shell startup.nsh

Как во FreeBSD создать свой /boot/boot1.efifat, например, размером 512K:

# cd /tmp
# dd if=/dev/zero of=efiboot.img bs=1k count=512
# ls -la efiboot.img
# mdconfig -a -t vnode -f efiboot.img
# newfs_msdos -F 12 -m 0xf8 /dev/md0
# mkdir efi
# ls -la efi
# mkdir efi
# mount -t msdosfs /dev/md0 /tmp/efi
# mkdir -p efi/efi/boot
# cp /boot/loader.efi efi/efi/boot/bootx64.efi
# umount /tmp/efi
#  ls -la efiboot.img
-rw-r--r--  1 root  wheel  524288 Feb 27 14:58 efiboot.img
#

Верхнее, только в случае отсутствия других ОС на диске, для
DUAL/TRIPLE Boot, ESP должна быть достаточного размера, в случае Windows не менее 100MB

Это легко посчитать установив один раз Windows+Linux+FreeBSD.

Как во FreeBSD создать EFI раздел:

# gpart create -s GPT ada0
# gpart add -t efi -s 100M ada0

создать FAT32:

# newfs_msdos -F 32 /dev/ada0p1
# mount_msdosfs /dev/ada0p1 /mnt
# mkdir -p /mnt/EFI/Boot
# cp /boot/boot1.efi /mnt/EFI/Boot/bootx64.efi

7. Dual/Triple/Multiboot Windows,Linux,FreeBSD on UEFI

Выше была рассмотрена чистая установка трех Операционных систем, на
основании которой, можно сделать несколько важных выводов:

  • Windows 7/8/10
    • использует существующую ESP при установке
    • делает собственый загрузчик default’ным, не интегрирует существующие ОС в меню загрузки
    • имеет утилиту управления загрузчиком: bcdedit
  • Linux
    • использует существующую ESP при установке
    • делает собственый загрузчик GRUB2-EFI default’ным, добавляет существующие ОС в загрузочное меню
    • имеет утилиту управления загрузчиком: efibootmgr
  • FreeBSD
    • процедура установки не умеет использовать существующую ESP
    • не имеет утилит управления загрузчиком
    • имеет пакет(порт) grub2-efi для установки и настройки стороннего загрузочного менеджера

На основании данных выводов, можно легко установить указанные ОС вместе на один компьютер:

  • на один диск
  • на разные диски
  • в любом порядке

однако определенный порядок, может упростить настройку загрузки.

При установке двух систем на один диск, удобней следующий порядок:

  • 1.Windows затем 2.FreeBSD
  • 1.Windows затем 2.Linux
  • 1.Linux затем 2.FreeBSD

А в случае установки трех систем на один диск, удобней следующий порядок:

  1. Windows
  2. FreeBSD
  3. Linux

Следует отметить, верхние рекомендации, являются условными, потому что
опираются на личное, субъективное мнение.

Кроме того, при установке OS FreeBSD, необходимо:

  • использовать ручную разметку диска: Manual
  • не создавать ESP партицию

необходимые дополнительные настройки после установки FreeBSD разберем позже.

DualBoot Linux и Windows

Как уже было сказано, при установке первой системой Windows, а затем Linux, проблем не будет.

Не потребуется никаких дополнительных настроек, при установке Linux,
будет установлен BootManager Grub2-EFI, grub2 найдет вторую систему
и добавит в меню

Меню GRUB2 в Debian будет выглядеть примерно:

*Debian GNU/Linux
 Advanced options for Debian GNU/Linux
 Windows Boot Manager (on /dev/sda1) 

в Ubuntu

*Ubuntu GNU/Linux
 Advanced options for Ubuntu GNU/Linux
 Windows Boot Manager (on /dev/sda1)

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

Нам необходимо создать меню Windows для GRUB2, для этого необходимо загрузить Linux.
Это можно сделать двумя способами:

  1. из Windows с помощью bcdedit
    C:\> bcdedit /set {bootmgr} path \EFI\debian\grubx64.efi
    

    или

    C:\> bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
    
  2. используя POP-UP меню BIOS выбрать загрузку Linux

После того как загрузились в Linux, необходимо:

  1. изменить порядок загрузки через efibootmgr

    имеем by default: BootOrder: 0005, где
    Boot0005* Windows Boot Manager

    root@host:~# efibootmgr -v
    BootCurrent: 0005
    Timeout: 2 seconds
    BootOrder: 0005,0004,0000,0001,0002,0003
    Boot0000* EFI VMware Virtual SCSI Hard Drive (0.0)
    Boot0001* EFI VMware Virtual SATA CDROM Drive (1.0)
    Boot0002* EFI Network
    Boot0003* EFI Internal Shell (Unsupported option)
    Boot0004* debian
    Boot0005* Windows Boot Manager
    

    меняем на debian

    root@host:~# efibootmgr -o 4,5,0,1,2,3
    BootCurrent: 0005
    Timeout: 2 seconds
    BootOrder: 0004,0005,0000,0001,0002,0003
    Boot0000* EFI VMware Virtual SCSI Hard Drive (0.0)
    Boot0001* EFI VMware Virtual SATA CDROM Drive (1.0)
    Boot0002* EFI Network
    Boot0003* EFI Internal Shell (Unsupported option)
    Boot0004* debian
    Boot0005* Windows Boot Manager
    root@host:~#
    
  2. создать меню загрузки Windows для GRUB2

    два варианта:

    1. достаточно выполнить утилиту os-prober (ее используют grub-probe и grub-mkconfig)
      # os-prober
      
    2. или создать руками /etc/grub.d/40_custom
      # cat /etc/grub.d/40_custom
      #!/bin/sh
      exec tail -n +3 $0
      # This file provides an easy way to add custom menu entries.  Simply type the
      # menu entries you want to add after this comment.  Be careful not to change
      # the 'exec tail' line above.
      menuentry "Windows 7/UEFI" {
          insmod part_gpt
          insmod fat
          set root='hd0,gpt1'
          chainloader /EFI/Microsoft/Boot/bootmgfw.efi
      }
      # grub-update
      

Все.

UEFI DualBoot Windows и FreeBSD

Недостатки FreeBSD в случае MultiBoot:

  • Установщик FreeBSD не умеет интегрировать efi загрузчик в уже существующую ESP
  • В FreeBSD отсутствует утилита аналогичная efibootmgr

Существующие решения UEFI Multiboot для FreeBSD:

  1. порт sysutils/grub2-efi
  2. сторонний загрузчик rEFInd

Установщик FreeBSD не умеет интегрировать свой загрузчик в уже
существующую ESP и система не имеет утилиты манипуляции переменными EFI.

Наименее затратный вариант, если FreeBSD будет
установлена первой. При установке нужно
проследить чтобы партиция ESP была размером
не менее 100MB. В ином случае, разметить вручную Manual

Если OS FreeBSD будет устанавливаться не первой системой:

  • разметку диска необходимо выполнить вручную Manual
  • ESP создавать НЕ НУЖНО! Должна быть только одна.
  • по завершению установки выйти в режим Live CD/USB
    и установить пакет sysutils/grub2-efi
  • или вместо grub2-efi установить из Windows загрузочный менеджер rEFInd

Рассмотрим вариант установки FreeBSD позже остальных ОС с установкой
и настройкой sysutils/grub2-efi.

При установке выбираем Manual разметку диска,
создаем как минимум freebsd-ufs для корня и
freebsd-swap для swap, или устанавливаем zfs на пустую партицию.

Рассмотрим на примере, была установлена OS Windows 7,
затем мы установили OS FreeBSD 11.0-Release и после
установки вышли в режим Live CD/USB:

— смотрим разметку диска

root@host:~ # gpart show

=>      34  83886013  da0  GPT  (40G)
        34      2014       - free -  (1.0M)
      2048    204800    1  efi  (100M)
    206848    262144    2  ms-reserved  (128M)
    468992  60971008    3  ms-basic-data  (29G)
  61440000  18464768    5  freebsd-ufs  (9.0G)
  80314368   3571678    4  freebsd-swap  (1.7G)
  83886046         1       - free -  (512B)

root@host:~ #

— задаем под себя переменную PATH и устанавливаем пакетный менеджер pkg:

# export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin
# pkg
# pkg update
# pkg info

— устанваливаем пакет grub2-efi

# pkg install -y grub2-efi

— необходимо смонтировать ESP партицию

# mkdir /boot/efi
# mount_msdosfs /dev/da0p1 /boot/efi

— выполняем grub-install — обязательно с ключами или by default будет искать парцтию boot_bios для Non-UEFI загрузки:

# grub-install --efi-directory=/boot/efi --removable --target=x86_64-efi /dev/da0

GRUB2 прописал свой загрузчик в:

root@host:~ # ls -la /boot/efi/EFI/Boot/
total 128
drwxr-xr-x  1 root  wheel    1024 Apr 14 17:53 .
drwxr-xr-x  1 root  wheel    1024 Apr 14 17:44 ..
-rwxr-xr-x  1 root  wheel  128512 Apr 14 16:18 bootx64.efi
root@host:~ #

— создание меню загрузки Windows для grub2-efi

  1. выполняем grub-mkconfig для создания конфигурации /boot/grub/grub.cfg
    # grub-mkconfig /boot/grub/grub.cfg
    
  2. удаляем секцию 10_kfreebsd из /boot/grub/grub.cfg — она создается НЕВЕРНО может мешать:
    ### BEGIN /usr/local/etc/grub.d/10_kfreebsd ###
    menuentry 'XXXXXXXXXXXXXXX' {
            insmod part_gpt
            insmod ufs2
            set root=(hd0,gpt5)
            chainloader /boot/boot1.efi
    }
    ### END /usr/local/etc/grub.d/10_kfreebsd ###
    
  3. создаем свою секцию 40_custom.dist меню загрузки Windows
    ### BEGIN /usr/local/etc/grub.d/40_custom.dist ###
    menuentry 'Windows 7/UEFI' {
            insmod part_gpt
            insmod fat
            set root=(hd0,gpt1)
            chainloader /EFI/Microsoft/Boot/bootmgfw.efi
    }
    ### END /usr/local/etc/grub.d/40_custom.dist ###
    

    где root=(hd0,gpt1) это ESP партиция с efi-загрузчиком Windows

— выполняем reboot и завершаем установку FreeBSD

— загружаемся в Windows и используя bcdedit. меняем
загрузчик на grub2-efi от FreeBSD:

C:\> bcdedit /set {bootmgr} path \EFI\Boot\bootx64.efi

Все

При использовании rEFInd, не требуется установка grub2-efi, но перед завершением установки FreeBSD необходимо выйти в Live CD/USB,
смонтировать партицию ESP и скопировать туда загрузчик FreeBSD:

  • монтируем ESP
    # mount_msdosfs /dev/da0p1 /mnt
    
  • создаем директорию FreeBSD и копируем в нее загрузчик
    # mkdir /mnt/EFI/freebsd
    # cp /mnt/EFI/Boot/bootx64.efi /mnt/EFI/freebsd/freebsdx64.efi
    
  • установку и настройку rEFInd удобней выполнить из Windows, но можно из FreeBSD.

Установка и настройка rEFInd.

  • монтируем ESP используя команду mountvol
  • Скачиваем rEFInd
  • Разворачиваем архив в S:\EFI\refind
  • Удаляем все лишние из \EFI\refind
    S:\EFI\refind>rd /S /Q drivers_aa64 drivers_ia32 tools_aa64 tools_ia32
    S:\EFI\refind>del /Q refind_aa64.efi refind_ia32.efi
    
  • создаем конфиг refind.conf
    S:\EFI\refind>copy refind.conf-sample refind.conf
    
  • настраиваем в нем нужные нам меню:
    menuentry "FreeBSD 11/UEFI" {
        icon /EFI/refind/icons/os_freebsd.png
        loader /EFI/freebsd/freebsdx64.efi 
    }
    #
    menuentry "Windows 7" {
        icon \EFI\refind\icons\os_win.png
        loader \EFI\Microsoft\Boot\bootmgfw.efi
    }
    
  • используя bcdedit устанавливаем refind как загрузчик by default
    C:\>bcdedit /set {bootmgr} path \EFI\refind\refind_x64.efi
    
  • перезагружаемся и наслаждаемся меню rEFInd

rEFInd имеет достаточное количество настроек и
может быть использован как с текстовым меню или графическим с иконками
и тд и тп. Используйте документацию и пример refind.conf-sample

Теперь не составит труда настроить загрузку UEFI OS FreeBSD,Linux,Windows: Dual, Triple или MultiBoot.


Copyleft lavr@unix1.jinr.ru Андрей Лаврентьев

Создание загрузочной флешки 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 на клавиатуре и выберите нужный пункт в меню).

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

  • diskpart
  • list disk

Выбор USB накопителя в Diskpart

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

  • select disk N
  • clean
  • create partition primary
  • format fs=fat32 quick
  • active
  • assign
  • list volume
  • exit

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

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

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

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

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

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

Выделите все содержимое виртуального диска, который появится в системе, кликните правой кнопкой мыши и в меню выберите «Отправить» — «Съемный диск» (если их несколько, то укажите именно тот, который нужен).

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

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

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

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

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

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

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

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

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

  1. Главная
  2. Форум
  3. Записки Ламера



[Цитировать]

  • 13722
  • Стаж: 7 лет 6 месяцев
  • Сообщений: 8
  • Репутация:2[+] [-]


Доброго времени Господа!
Для успешной загрузки ВИНДОВС в режиме UEFI нужно:
1. Файловая система FAT32
2. В корне носителя папка «efi» в ней: папка «boot» с файлом «bootx64.efi» и папка «microsoft» с под папкой «boot» файлом «BCD» (microsoft\boot\BCD)
Если это слишком просто, почитайте другие статьи.

Где «уефи» ищет загрузочный файл в зависимости от устройства с которого идет загрузка:

in a EFI windows system its; C:\Windows\Boot\EFI\bootmgfw.efi
    From DVD it’s; F:\efi\microsoft\boot\cdboot.efi
    on USB; G:\efi\boot\bootx64.efi (bootmgfw.efi renamed)

Вся цепочка загрузки Виндовс в режиме UEFI:

    >> EFI\BOOT\BOOTx64.EFI
    >> EFI\MICROSOFT\BOOT\BCD
    >> BOOT.WIM Windows\System32\Boot\winload.efi

При загрузке в режиме UEFI bootx64.efi ищет файл BCD в первую очередь рядом с собой, а потом по пути efi\microsoft\boot\

Последний раз редактировалось: Ламер (2019-04-17 20:13), всего редактировалось 1 раз


[Цитировать]

Отправлено: 17-Апр-2019 14:27
(спустя 16 часов)

    Гость

  • Репутация:0[+] [-]


Описал немного подробнее, добавил в Практикум.


[Цитировать]

Отправлено: 17-Апр-2019 14:44
(спустя 16 минут)

    Ander_73

  • 15549
  • Стаж: 6 лет 8 месяцев
  • Сообщений: 3361
  • Репутация:127[+] [-]


У меня сейчас ПК, который при загрузке UEFI помимо классического

    \efi\boot\bootx64.efi

очень неплохо находит и предлагает к загрузке (CSM)

    \efi\microsoft\boot\bootmgfw.efi


Хотя, это, возможно, стандартная фича.


[Цитировать]

Отправлено: 17-Апр-2019 18:45
(спустя 4 часа)

    Ламер

  • 13722
  • Стаж: 7 лет 6 месяцев
  • Сообщений: 8
  • Репутация:2[+] [-]


Приветствую господа! aa
conty9, Как в сегда подробно. Огромное спасибо! az
Но мне ламеру стока букаф и не знакомых слов не прочитать, и не запомнить……

принципиально новой топологии кода, которая называется «драйверность».

ai ai Не ……. нам топологии не надо, нам Виндовс загрузить…..
Тут в шапке и так много сложных слов, но они хоть соответствуют именам файлов.
Ander_73, не знаю кто такой (CSM) ….
А bootmgfw.efi видел, тока он в корне носителя вроде был.


[Цитировать]

Отправлено: 17-Апр-2019 19:10
(спустя 25 минут)

    goga8686

  • 15240
  • Стаж: 6 лет 9 месяцев
  • Сообщений: 849
  • Репутация:70[+] [-]


65770

не знаю кто такой (CSM) ….

aa CSM – это модуль поддержки совместимости для операционной системы. Если ваша материнская плата снабжена отличными от описанных выше разработчиками . грубо говоря грузить старое на новом af


[Цитировать]

Отправлено: 17-Апр-2019 19:16
(спустя 5 минут)

    UserX

  • 667
  • Стаж: 8 лет 5 месяцев
  • Сообщений: 769
  • Репутация:30[+] [-]


65771

Если ваша материнская плата снабжена отличными от описанных выше разработчиками.

Извиняюсь. Можно ещё разок для тех, кто с утра так и не скушал Сникерс.
Я — совершенно без «подначивания». Посто не понял.
Что такое «материнская плата снабжена отличными от описанных выше разработчиками»?
В смысле, в её BIOS-е что-то есть или чего-то нет? Или совсем другое?
Поясню, из-за чего возник вопрос.
Имеется, типа, отечественный комп, сделанный, скорее всего, в Китае. Называется 3Q-Shell на процессоре Intel J1800 и J1900.
В его BIOS-е нет модуля CSM, хотя до обновления BIOS таковой был. Но, как сообщили мне разработчики, не работал.
В общем, режим «Legacy» в его BIOS тоже не предусмотрен.
Меня интересует — возможно ли на таком бульдоге-носороге загрузить Windows в режиме, отличном от UEFI, хотя в его BIOS ничего другого нет.
Сам я полагаю, что нет, но мало ли?

Последний раз редактировалось: UserX (2019-04-17 19:32), всего редактировалось 1 раз


[Цитировать]

Отправлено: 17-Апр-2019 19:30
(спустя 14 минут)

    goga8686

  • 15240
  • Стаж: 6 лет 9 месяцев
  • Сообщений: 849
  • Репутация:70[+] [-]


UserX, это спешка копипастирования ))извиняюсь ah цель сказать была «грузить старое на новом» его кто как не называет этот csm. мне еще нравится «CSM- Compatibility Support Module. Только эта технология способна создать «мостик» между UEFI GOP и Legacy VGA BIOS.» ab


[Цитировать]

Отправлено: 17-Июн-2020 14:40
(спустя 1 год 1 месяц)

    vasyosuol

  • 24039
  • Стаж: 3 года 6 месяцев
  • Сообщений: 50
  • Репутация:0[+] [-]


Подскажите, как создать ISO-образ для UEFI для Windows используя oscdimg.exe?
Делал по методичке от M$, ничего не вышло :confused:
Вот моя строчка (пути реальные, файлы существуют):

C:\oscdimg.exe -m -o-u2-udfver102-bootdata:2#p0,e,b»C:\W7\boot\etfsboot.com»#pEF,e,bC:\W7\boot\efisys.bin C:\W7 C:\Win7_efi.iso

Что у меня не так?


[Цитировать]

Отправлено: 17-Июн-2020 15:10
(спустя 29 минут)

    Ander_73

  • 15549
  • Стаж: 6 лет 8 месяцев
  • Сообщений: 3361
  • Репутация:127[+] [-]


78486

-o-u2-udfver102-bootdata

Четыре ключа сливаются в один. Пробелы поставьте.


[Цитировать]

Отправлено: 17-Июн-2020 15:39
(спустя 29 минут)

    vasyosuol

  • 24039
  • Стаж: 3 года 6 месяцев
  • Сообщений: 50
  • Репутация:0[+] [-]


Ander_73,
Благодарю! Образ создался, загружается. Вот только UEFI проверить не могу — VirtualBox «капризничает». В обычном режиме всё ставится, а вот с UEFI не хочет :(
Ещё раз Спасибо!
Добавлено через 2 часа 17 минут 9 секунд:
В UEFI режиме не загружается ac Проверял на реальных машинах, даже на 2-х. Что-то не так в команде? В обычном режиме загружается, не работает именно загрузка в UEFI-mode.


[Цитировать]

Отправлено: 29-Июн-2020 17:41
(спустя 12 дней)

    vasyosuol

  • 24039
  • Стаж: 3 года 6 месяцев
  • Сообщений: 50
  • Репутация:0[+] [-]


Прошу помощи: вопрос касается создания флэшки, загружающейся в UEFI-режиме.
Диск (образ) создал так:

oscdimg.exe -m -o -u2 -udfver102 -bootdata:2#p0,e,b»C:\W7\boot\etfsboot.com»#pEF,e,b»C:\W7\efi\microsoft\boot\efisys.bin» C:\W7 C:\Win7_efi.iso

Записал образ на DVD, всё работает — установка в режиме UEFI на NVMe-носитель пошла и успешно завершилась.
А как создать USB-флэш, загружающийся в UEFI? У меня на МВ, к сожалению, Legasy BIOS — загружаюсь в UEFI-режим через Clover.
Пробовал сделать флэшку стандартным способом через Rufus (из ISO-образа Win7_efi.iso) — не работает ac
Как можно еще попробовать, может кто-нибудь подскажет?


[Цитировать]

Отправлено: 29-Июн-2020 19:13
(спустя 1 час 32 минуты)

    Ander_73

  • 15549
  • Стаж: 6 лет 8 месяцев
  • Сообщений: 3361
  • Репутация:127[+] [-]


vasyosuol,

  • отформатировать флешку в FAT32
  • записать на флешку содержимое Win7_efi.iso
  • этот файл скачать, распаковать и поместить в папку \efi\boot\


[Цитировать]

Отправлено: 29-Июн-2020 19:34
(спустя 21 минута)

    vasyosuol

  • 24039
  • Стаж: 3 года 6 месяцев
  • Сообщений: 50
  • Репутация:0[+] [-]


Ander_73,
1-3 — Сделал.
Всё тоже самое:


Извиняюсь за качество снимка, вот перевод:

Error: No mapping returned from cdboot.efi
                                         Press any key to boot CD or DVD


Добавлено через 3 минуты 26 секунд:
Я так понимаю, красный шрифт (Error: No mapping returned from cdboot.efi) — это сообщение от Clover.
Ниже — стандартный промт от M$.


[Цитировать]

Отправлено: 29-Июн-2020 19:40
(спустя 6 минут)

    Ander_73

  • 15549
  • Стаж: 6 лет 8 месяцев
  • Сообщений: 3361
  • Репутация:127[+] [-]


vasyosuol, Вы читать умеете? Где в моём сообщении Клевер? И откуда он взялся на отформатированной флешке?


[Цитировать]

Отправлено: 29-Июн-2020 19:56
(спустя 15 минут)

    vasyosuol

  • 24039
  • Стаж: 3 года 6 месяцев
  • Сообщений: 50
  • Репутация:0[+] [-]


Ander_73,
Читать — умею, а вы?

78859

У меня на МВ, к сожалению, Legasy BIOS — загружаюсь в UEFI-режим через Clover.

По-моему, понятно написано.

78862

vasyosuol, Вы читать умеете? Где в моём сообщении Клевер? И откуда он взялся на отформатированной флешке?

Где я написал, что у меня на отформатированной флэшке находится Clover?
Я писал:

78859

загружаюсь в UEFI-режим через Clover.

Но это вовсе не значит, что он — на флэшке ab
Вот как это работает:

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

У меня — 2-е флэшки, так понятно? Я загружаюсь с флшки Clover, и стартую флэшку или DVD, с которого устанавливается Windows. С DVD — работает, теперь хочу добиться, чтобы работало с USB-flash.

Страница 1 из 2

Текущее время: 09-Окт 11:33

Часовой пояс: UTC + 3

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы

  • Windows boot changer windows 10
  • Windows boot animation windows 7
  • Windows bluetooth software windows 7 на русском
  • Windows bluetooth mouse driver windows
  • Windows bluetooth a2dp driver windows 7