Управление дисками:
Нажмите одновременно “Win” + “R”
в окне “Выполнить” ввести команду:
diskmgmt.msc
Определяем диск на котором установлен EFI раздел.
Подключим раздел к системе:
Нажмите одновременно “Win” + “R”
в окне “Выполнить” ввести команду:
diskpart
Откроется командная строка Windows.
Вводим команду:
sel disk X
Меняем вместо X, номер диска.
Вводим команду:
sel part X
Меняем вместо X, номер раздела.
Вводим команду:
assign
Открываем примонтированный раздел EFI для дальнейшего редактирования.
Скачайте и запустите программу Explorer ++ от имени администратора.
Выберите 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.
Это именно минимальная конфигурация. Эти разделы создает установщик 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.
При загрузке 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).
Если в столбце GPT отсутствует *, значит на диске MBR таблица разделов. Вам нужно убедиться, что ранее вы загружали компьютер в нативном UEFI режиме (иначе следовать данной инструкции бессмысленно). Если вы уверены, что тип таблицы разделов сменился, возможно его нужно стоит переконвертировать из MBR в GPT.
Выберите этот диск:
Select disk 0
Выведите список разделов на диске:
List partition
В нашем примере в системе осталось всего 3 раздела:
- Раздел Reserved (MSR) — 16 Мб
- Системный раздел с Windows – 30 Гб
- Recovery (раздел восстаовления0) – 541 Мб
Как вы видите, раздел EFI (может называться System) отсутствует (удален).
Совет. Если на разделе 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
Теперь вы можете вручную создать разделы 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 раздела может появится ошибка
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).
В этом случае вам нужно уменьшить раздел основного раздела с Windows на 128 Мб(в нашем примере это volume 1):
select volume 1
shrink desired=128 minimum=128
После этого создайте разделы 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.
В результате на 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:
Перезагрузите компьютер (для перезагрузки из среды WinPE нужно выполнить команду wpeutil reboot) и извлеките загрузочную флешку.
Опционально! Вы можете вручную выполнить действия, которые выполняет команда bcdboot. Далее мы покажем, как самостоятельно скопировать системные файлы 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 не загрузился, выполните следующие действия:
- Отключите питание компьютера;
- Отключите (физически) жесткий диск;
- Включите ПК, дождитесь появления окна с ошибкой загрузки Operating System not found. Выключите компьютер;
- Подключите диск обратно.
Если это не помогло, опять загрузитесь с установочной USB флешки и выполните команду:
bootrec /rebuildbcd
Перезагрузите компьютер
Затем в нашем случае (тестирование проводилось на виртуальной машине VMWare с UEFI средой) пришлось добавить новый загрузочный пункт меню, выбрав файл EFI\Microsoft\Boot\bootmgrfw.efi на EFI разделе.
В некоторых UEFI меню по аналогии нужно изменить приоритет загрузочных разделов.
После всех рассмотренных манипуляций Windows должна загрузиться корректно.
Совет. Если что-то не заработало, рекомендуем проверить, что загрузочный флаг (boot flag) установлен только у раздела EFI. Проще всего в этом убедится с помощью LiveCd GParted.
В некоторых случаях после пересоздания разделов EFI и MSR и восстановления BCD Windows может перестать корректно выключаться. Если у вас проявляется эта проблема, чтобы исправить ее нужно отключить функцию быстрого запуска в Windows в настройках электропитания компьютера:
- Откройте панель управления электропитанием
powercfg.cpl
; - Выберите Choose what the power buttons does;
- Нажмите кнопку Change settings that are currently unavailable и отключите опцию «Turn on fast startup» в разделе «Shutdown settings».
I am having trouble accessing the EFI partition on windows 10 I tried this method in cmd (I used Administrative privileges
):
open cmd as admin…
diskpart
sel disk 0
sel part 1 (efi part)
assign letter=b
exit
taskkill /im explorer.exe /f
explorer.exe
But it is not working since windows 10, I used this method fine on 8.1.
this picture shows the error I get when I try to access the partition
Máté Juhász
21.5k6 gold badges55 silver badges74 bronze badges
asked Sep 1, 2015 at 11:01
11
Try the following, which works in Windows 7 and 8, but I can’t promise anything with 10:
- Open an Administrator Command Prompt window by right-clicking the Command Prompt icon and selecting the option to run it as Administrator.
- In the Command Prompt window, type
mountvol P: /S
. (You can changeP:
to any unused drive letter; that’s arbitrary.) - Use the Command Prompt window to access the
P:
(EFI System Partition, or ESP) volume.
You’ll need to use text-mode commands, rather than the GUI, but this method should work.
Another alternative is to use another OS. Even if you can’t boot your other OS now, which you strongly imply, you might be able to use an emergency disk. An Ubuntu installation medium, for instance, should let you access the ESP pretty easily. IIRC, it should show up as a volume in the lower-left corner of the screen; or you can use the standard Linux mount
command to mount it in any way you like.
answered Sep 1, 2015 at 22:46
Rod SmithRod Smith
21.5k3 gold badges43 silver badges55 bronze badges
11
The answer is by @pat2015 :
Interestingly I find that the mounted EFI drive is accessible from the ‘Browse’ button from Task Manager -> ‘Run New Task’ You can then perform basic operations possible with Context Menu (Copy/Paste etc) and even when you run other apps with Admin Privileges e.g. Notepad.exe it can also access the drive from its file menu. The issue seems to be with Explorer.
answered Sep 3, 2015 at 9:47
Raffi CHRaffi CH
7111 gold badge6 silver badges10 bronze badges
5
Update
in Windows 8.1, Windows 10 and Windows Server starting as of 2012 R2 you can use the following Powershell oneliner for getting Read-Write access to EFI partition:
start ((Get-Partition | ? IsSystem).AccessPaths[0])
Original answer
I have found more straightforward way of getting read/write access to EFI partition from Windows 10:
- Open an Administrator Command Prompt window by right-clicking Start button and clicking on Command Prompt (Admin)
- In the Command Prompt window, type
mountvol
, disregard help message in the beginning and notice the list of GUID-based paths of all volumes known to Windows, eg.:
- GUID of EFI partition is one of those marked with «NO MOUNT POINT» description — in my case it was the first volume
- type
start \\?\Volume{.......-....-....-....-...........}\
(of course replace dots with the exact GUID from step #3) and new explorer window will pop up with the contents of EFI partition and read/write access to it — voila!
answered Sep 3, 2016 at 23:02
maoizmmaoizm
1,05310 silver badges21 bronze badges
9
You must log in to answer this question.
Not the answer you’re looking for? Browse other questions tagged
.
Not the answer you’re looking for? Browse other questions tagged
.
Если ваш системный диск GPT в Windows 11/10 комп, есть EFI и раздел восстановления. Многие люди не знают, для чего они используются и как расширить эти разделы без ущерба для операционной системы. В этой статье рассказывается о том, что EFI и Recovery, почему они находятся на разных позициях диска и как продлить EFI/ Раздел восстановления в Windows 11 ноутбук/настольный/планшет с бесплатным инструментом.
Содержание:
- Что такое EFI и раздел восстановления в Windows 11
- Как создать EFI/Раздел восстановления на переднем/конце или в середине диска
- Как продлить EFI/ Раздел восстановления в Windows 11
Что такое EFI и раздел восстановления в Windows 11
EFI (Extensible Firmware Interface) системный раздел или ESP — это раздел на устройстве хранения данных (обычно это традиционный механический диск или SSD), который используется компьютерами, поддерживающими Unified Extensible Firmware Interface (UEFI). Когда компьютер загружается, UEFI Прошивка загружает файлы, хранящиеся в ESP, для запуска установленных операционных систем и различных утилит.
An EFI системный раздел содержит несколько типов файлов, в том числе:
- Загрузчики или образы ядра для всех установленных на этом компьютере операционных систем.
- Файлы драйверов устройств для аппаратных устройств, используемые микропрограммой во время загрузки.
- Системные служебные программы, предназначенные для запуска перед загрузкой операционной системы.
- Файлы данных, такие как журналы ошибок.
EFI раздел в Windows 11/10 отформатирован в нетипичной файловой системе FAT. Это означает, что спецификация этой файловой системы основана на файловой системе FAT, но не зависит от исходной спецификации FAT. В Windows 11 собственный инструмент управления дисками, файловая система не показана для EFI раздел.
Восстановление раздел в Windows 11/10 — это своего рода раздел, который помогает восстановить заводские настройки компьютера в случае какого-либо системного сбоя. У этого раздела нет буквы диска, файловая система не отображается, и в «Управлении дисками» активирована только опция «Справка». Есть 2 типа разделов восстановления в Windows 11/10 компьютеров:
- Windows Раздел восстановления с незначительным объемом дискового пространства.
- Раздел OEM Recovery, установленный производителем компьютера (например, Lenovo, Dell или HP). Он занимает значительный объем дискового пространства, поскольку содержит настройки производителя для драйверов приложений и другие вещи, позволяющие восстановить эти настройки по умолчанию.
Как создать EFI/Раздел восстановления в другом месте диска
В некоторых Windows 11 компьютер, EFI раздел находится в передней части диска, а раздел восстановления находится в конце диска. В некоторых компьютерах EFI раздел находится в передней части диска, а раздел восстановления находится посередине. На некоторых других компьютерах EFI и раздел восстановления находятся рядом и в конце диска.
Почему такая разница и влияет ли она на производительность компьютера? На самом деле, не имеет значения, где создаются эти разделы. Windows 11 не может продлить Recovery/EFI раздел с собственным Управлением дисками. Но с помощью программного обеспечения для создания разделов диска вы можете изменить размер / переместить / расширить EFI и раздел восстановления in Windows 11 ноутбук/рабочий стол/планшет без повреждения системы.
Где создать EFI/Recovery раздел при установке Windows 11:
1. Если на диске нет раздела и все место на диске «Нераспределено», после установки Windows 11, EFI и разделы MSR (Microsoft System Reserved) создаются в передней части этого диска. Раздел восстановления создается в конце диска.
Советы: Раздел MSR пуст, и его можно безопасно удалить. Управление дисками не показывает небольшой раздел MSR. Чтобы удалить его, вы должны запустить стороннее программное обеспечение.
2. Если вы создали несколько разделов и выбрали первый для установки Windows 11, EFI и разделы MSR также создаются в передней части этого диска. Но раздел Recovery создается за диском C:, остальные разделы находятся в конце диска.
3. Если у вас есть Windows 10 на диске MBR до и преобразовал этот диск в GPT, после обновления до Windows 11, EFI и раздел восстановления будет создан за диском C:. Если вы сожмете диск C, чтобы создать дополнительные разделы в «Управлении дисками», оба EFI и разделы восстановления находятся в конце диска.
Примечание: если вы включили UEFI в BIOS нельзя установить Windows 11 на MBR-диске до удаления всех существующих разделов. Если вы установите Windows 11 на диске MBR с существующим разделом вы получите сообщение об ошибке «Windows не может быть установлен на этот диск. На выбранном диске есть таблица разделов MBR. На EFI системы, Windows может быть установлен только на GPT-диски.«.
Как продлить EFI и раздел восстановления в Windows 11
Как я покажу вам выше, EFI и разделы восстановления могут быть на любом месте в Windows 11 компьютер, поэтому я не могу дать вам точные шаги для продления Recovery/EFI раздел в Windows 11. Но вы можете следовать универсальному методу ниже.
Как продлить Recovery/EFI раздел в Windows 11 без потери данных:
- Скачать NIUBI Partition Editor бесплатное издание. Если EFI или раздел восстановления находится слева, сократите его правый соседний раздел и сделайте нераспределенное пространство налево, Если EFI или раздел восстановления находится справа, сократите его левый соседний раздел и сделайте нераспределенное пространство справа. Чтобы уменьшить соседний раздел, щелкните его правой кнопкой мыши в NIUBI и запустите «Изменить размер / перемещение тома», перетащите одну границу к другой во всплывающем окне.
- Получив непрерывное нераспределенное пространство с обеих сторон, щелкните правой кнопкой мыши EFI или Recovery в NIUBI и снова запустите «Resize/Move Volume». Перетащите одну границу противоположность к другому, чтобы объединить это нераспределенное пространство.
- Если есть третий раздел в середине EFI/ Раздел восстановления и нераспределенное пространство, щелкните правой кнопкой мыши средний раздел и запустите «Изменить размер / перемещение тома», перетащите средний этого раздела, то вы можете переместить его влево или вправо. Затем следуйте 2, чтобы расширить EFI/раздел восстановления.
Чтобы лучше показать вам, как расширить EFI/ Раздел восстановления в Windows 11/10, есть несколько видео с разным расположением разделов. Следуйте соответствующему методу в соответствии с вашим собственным расположением разделов.
1. Когда EFI раздел находится в передней части диска, диск C — в середине, а раздел восстановления — в конце диска:
Раздел Microsoft Reserved пуст, и его можно безопасно удалить.
2. Когда EFI раздел находится в передней части диска, диск C и раздел восстановления — в середине, остальные разделы — в конце диска:
3. Когда оба EFI и разделы восстановления находятся в конце диска:
На GPT-диске нет раздела «Зарезервировано системой». GPT-диск в видео был конвертирован из MBR-диска.
Помимо расширения EFI/ Раздел восстановления в Windows 11/10 компьютер, NIUBI Partition Editor помогает выполнять многие другие операции по управлению разделами диска. У него есть бесплатная версия для Windows 11/10/8/7/Пользователи домашних компьютеров Vista/XP.
Скачать
Время на прочтение
6 мин
Количество просмотров 527K
Как устроена загрузка современных ОС? Как при установке системы настроить загрузку посредством UEFI, не утонув в руководствах и ничего не сломав?
Я обещал «самое краткое руководство». Вот оно:
- Создаём на диске таблицу разделов GPT
- Создаём FAT32-раздел на пару сотен мегабайт
- Скачиваем из интернета любой UEFI-загрузчик
(нам нужен сам загрузчик, это один бинарный файл!) - Переименовываем и кладем этот файл на созданный раздел по адресу /EFI/Boot/bootx64.efi
- Создаём текстовый конфиг, кладем его там, где загрузчик ожидает его увидеть
(настройка и местоположение конфига зависят от конкретной реализации загрузчика, эта информация доступна в интернете) - После перезагрузки видим меню загрузчика
(Если на диске установлена Windows 8 или 10 — с большой вероятностью это руководство сокращается до пунктов 3 — 5.)
TL;DR не надо прописывать путь к загрузчику в новых загрузочных записях UEFI — надо файл загрузчика расположить по стандартному «пути по-умолчанию», где UEFI его найдет, и вместо загрузочного меню UEFI пользоваться меню загрузчика, которое гораздо проще и безопаснее настраивается
Как делать не надо
Есть, на самом-то деле, несколько способов настроить UEFI-загрузку. Я начну с описания других вариантов — чтобы было понятно, как (и почему) делать не надо. Если вы пришли за руководством — мотайте в самый низ.
Не надо лезть в NVRAM и трогать efivars
Наиболее «популярная» процедура установки загрузчика в систему такова: установщик ОС создаёт специальный раздел, на нём — структуру каталогов и размещает файлы загрузчика. После этого он с помощью особой утилиты (efibootmgr в linux, bcdedit в windows) взаимодействует с прошивкой UEFI-чипа, добавляя в неё загрузочную запись. В этой записи указывается путь к файлу загрузчика (начиная от корня файловой системы) и при необходимости — параметры. После этого в загрузочном меню компьютера появляется опция загрузки ОС. Для linux существует возможность вообще обойтись без загрузчика. В загрузочной записи указывается путь сразу к ядру вместе со всеми параметрами. Ядро должно быть скомпилировано с опцией EFISTUB (что давно является стандартом для большинства дистрибутивов), в этом случае оно содержит в себе заголовок «исполняемого файла EFI», позволяющий прошивке его запускать без внешнего загрузчика.
При старте системы, когда пользователь выбирает нужную ему загрузочную запись, прошивка UEFI сперва ищет на прописанном в этой записи диске особый EFI-раздел, обращается к файловой системе на этом разделе (обязательно FAT или FAT32), и запускает загрузчик. Загрузчик считывает из файла настроек свой конфиг, и либо грузит ОС, либо предоставляет загрузочное меню. Ничего не замечаете? Да, у нас два загрузочных меню — одно на уровне прошивки чипа UEFI, другое — на уровне загрузчика. В реальности о существовании второго пользователи могут даже не догадываться — если в меню всего один пункт, загрузчик Windows начинает его грузить без лишних вопросов. Увидеть экран с этим меню можно, если поставить вторую копию Windows или просто криво её переустановить.
Обычно для управления загрузочными записями руководства в интернете предлагают взаимодействовать с прошивкой UEFI. Есть аж пять основных вариантов, как это можно сделать: efibootmgr под linux, bcdedit в windows, какая-то софтина на «Маках», команда bcfg утилиты uefi shell (запускается из-под UEFI, «на голом железе» и без ОС, поскольку скомпилирована в том самом особом формате) и для особо качественных прошивок — графическими средствами UEFI (говоря популярным языком, «в настройках BIOS»).
За всеми вышенаписанными «многобуков» вы могли легко упустить такую мысль: пользователь, чтобы изменить настройки программной части (например, добавить параметр запуска ОС), вынужден перезаписывать flash-память микросхемы на плате. Есть ли тут подводные камни? О да! Windows иногда способна сделать из ноутбука кирпич, linux тоже, причём разными способами. Качество прошивок часто оставляет желать лучшего — стандарты UEFI либо реализованы криво, либо не реализованы вообще. По логике, прошивка обязана переживать полное удаление всех переменных efivars без последствий, не хранить в них критичных для себя данных и самостоятельно восстанавливать значения по-умолчанию — просто потому что пользователь имеет к ним доступ, и вероятность их полного удаления далека от нуля. Я лично в процессе экспериментов неоднократно (к счастью, обратимо) «кирпичил» свой Lenovo — из загрузочного меню исчезали все пункты, включая опцию «зайти в настройки».
Работа с загрузочными записями UEFI — тоже не сахар. К примеру, утилита efibootmgr не имеет опции «редактировать существующую запись». Если ты хочешь немного изменить параметр ядра — ты удаляешь запись целиком и добавляешь её снова, уже измененную. При этом строка содержит в себе двойные и одинарные кавычки, а также прямые и обратные слеши в не особо очевидном порядке. Когда я наконец заставил эту магию работать — я сохранил её в виде bash-скриптов, которые до сих пор валяются у меня в корневой ФС:
efibootmgr -c -L "Archlinux (debug)" -l '\EFI\archlinux\vmlinuz-linux' -u "root=/dev/mapper/vg1-lvroot rw initrd=\EFI\archlinux\initramfs-linux.img systemd.log_level=debug systemd.log_target=kmsg log_buf_len=1M enforcing=0"
Не надо использовать GRUB
Это чёртов мастодонт, 90% функциональности которого предназначено для дисков с MBR. Для настройки необходимо отредактировать ряд файлов, после чего выполнить команду генерации конфига. На выходе получается огромная малопонятная нормальному человеку простыня. В составе — гора исполняемых файлов. Ставится командой, которую просто так из головы не возьмешь — надо обязательно лезть в документацию
grub-install --target=x86_64-efi --efi-directory=esp_mount --bootloader-id=grub
Для сравнения — самый простенький UEFI-bootloader, который есть в составе пакета systemd, ставится командой
bootctl install --path=/boot
Эта команда делает ровно две вещи: копирует исполняемый файл загрузчика на EFI-раздел и добавляет свою загрузочную запись в прошивку. А конфиг для неё занимает ровно СЕМЬ строчек.
«Самое краткое руководство» — чуть более подробно
Загрузочное меню надо реализовывать на уровне загрузчика — править текстовые конфиги гораздо проще и безопасней.
Загрузочная запись нам не нужна — дело в том, что при выставлении в настройках BIOS загрузки с диска прошивка UEFI сначала ищет на нём EFI-раздел, а затем пытается исполнить файл по строго фиксированному адресу на этом разделе: /EFI/Boot/BOOTX64.EFI
Что такое «EFI-раздел»? В теории, он должен иметь особый тип «EFI System» (ef00). На практике, годится первый раздел на GPT-диске, отформатированный в FAT32 и имеющий достаточно места, чтобы разместить загрузчик и вспомогательные файлы (если есть).
Пункт 3: «Скачиваем из интернета любой UEFI-загрузчик». Что это значит? Загрузчик — это просто исполняемый файл определенного формата, к которому в комплекте идет конфиг. К примеру, если у вас есть под рукой установленный пакет с systemd — файл загрузчика можно найти по адресу /usr/lib/systemd/boot/efi/systemd-bootx64.efi, переименовать его в bootx64.efi и скопировать в /EFI/Boot/ на EFI-разделе. Нет под рукой systemd? Скачайте архив с сайта Archlinux. Или с репозитария Ubuntu. Или Debian. Есть под рукой система с Windows? Возьмите виндовый загрузчик оттуда, тоже сгодится )) Если сумеете настроить, я честно говоря не пробовал.
Пункт 4: «Настроить конфиг». Как и обычная программа, когда загрузчик запускается — он ожидает найти по определенным путям файлы конфигурации. Обычно эту информацию легко найти в интернете. Для загрузчика systemd-boot нам необходимо в корне EFI-раздела создать каталог «loader», а в нём файл «loader.conf» с тремя строчками (привожу свои):
default archlinux
timeout 10
editor 1
Параметр editor отвечает за возможность отредактировать пункт загрузочного меню перед запуском.
Рядом с loader.conf необходимо создать каталог entries — один файл в нём будет отвечать за одну загрузочную запись в boot-меню. У меня там один файл arch.conf с таким содержанием:
title Arch Linux
linux /efi/archlinux/vmlinuz-linux
initrd /efi/archlinux/initramfs-linux.img
options root=/dev/mapper/vg1-lvroot rw initrd=\EFI\archlinux\intel-ucode.img
Я не упомянул, но довольно очевидно — ядро и initramfs должны лежать в одной файловой системе с загрузчиком, то есть на EFI-разделе. Пути к ним в конфигах отсчитываются от корня этой ФС.
Другие загрузчики
systemd-boot очень простой и предоставляет спартанского вида чёрно-белое меню. Есть варианты красивей, если душа просит красоты.
rEFind — очень красивый загрузчик. Скачать можно тут в виде deb-пакета. Использую на своём ноуте. Умеет создавать загрузочное меню автоматически, без конфига — просто сканируя файлы.
Clover. Позволяет выставлять нативное разрешение экрана, имеет поддержку мыши на экране загрузки, разные темы оформления. Дефолтная тема ужасна, конфиг в виде xml нечитаем, настроить не смог.
Различные неочевидные последствия
Вы можете легко попробовать эту схему в работе. Берёте USB-флешку, форматируете в таблицу разделов GPT, создаете FAT-раздел и копируете туда загрузчик. Комп сможет с неё стартовать.
Если просто скопировать на такую флешку boot-раздел установленного linux — система будет спокойно загружаться с флешки, не видя разницы.