Как получить доступ к efi диску

Обновлено: 07.07.2024

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

При установке Windows создаётся как минимум 4 раздела:

  • EFI
  • Microsoft Reserved Partition
  • Раздел для восстановления
  • Основной раздел с данными (он становится диском C:)

Кроме Основного раздела, все остальные не имеют буквы и являются скрытыми. С помощью графического интерфейса невозможно назначить им букву и просмотреть содержимое (но назначить букву можно с помощью консольной утилиты diskpart).

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

Начните с установки программы 7-Zip, как это сделать подробно описано в статье «Бесплатная альтернатива WinRAR».

Откройте 7-Zip, для этого в общесистемный поиск введите «7-Zip» и запустите программу.


Теперь с помощью иконки «Вверх» перейдите в самый верх иерархии файловой системы, пока не увидите символ «\\.».


Кликните на «\\.» и вы попадёте в список физических дисков.


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

Диск с операционной системой Windows обычно имеет следующие разделы:

  • 0.Basic data partition.img
  • 1.EFI system partition.img
  • 2.Microsoft reserved partition.img
  • 3.Basic data partition.img


Если вы хотите просмотреть содержимое Recovery раздела, то перейдите в 0.Basic data partition.img.


Можно просматривать содержимое даже некоторых файлов, которые являются контейнерами для других папок и файлов.


Чтобы узнать, что находится в разделе UEFI, перейдите в «1.EFI system partition.img\».


Раздел «2.Microsoft reserved partition» не удаётся открыть с помощью 7-Zip, скорее всего дело в неподдерживаемой файловой системе, либо раздел зашифрован.

Откройте том «3.Basic data partition.img» чтобы увидеть полное содержимое корня диска C:, будут показаны даже скрытые папки и файлы.


Итак, теперь вы знаете очень простой способ, как извлечь и просмотреть файлы с томов Recovery и UEFI.

date

28.07.2020

directory

Windows 10, Windows 7, Windows 8

comments

комментариев 79

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

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

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

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

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

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

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

На основном разделе находится установленная Windows, программы и данные пользователя. Могут присуствовать дополнительные разделы с данными.

Совет. Для установки Windows на компьютерах с UEFI понадобится оригинальный DVD или специально подготовленная загрузочная флешка c Windows 10 для UEFI компьютера (или установочная флешка с Windows Server).

Что будет, если в Windows 10 отсутствует раздел 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.

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

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

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

Т.к. ОС не загружается корректно, нам понадобится установочный диск с Windows 10 (Win 8 или 7) или любой другой загрузочный диск. Итак, загрузитесь с установочного диска и на экране начала установки нажмите комбинацию клавиш Shift+F10. Должно открыться окно командной строки:

Shift+F10 - окно командной строки на экране установки Windows 7

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

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

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

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

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

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

  • Раздел MSR — 128 Мб
  • Системный раздел с Windows – 9 Гб

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

Раздел EFI отсутствует

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

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

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

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

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

Вручную удаляем MSR раздел

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

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

create partition efi size=100

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

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

Теперь нужно создать MSR раздел размером 128 мб (в Windows 10 размер MSR раздела можно сделать всего 16 Мб).

create partition msr size=128
list partition
list vol

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

select vol 1
assign letter=C
exit

Пересоздание EFI и MSR разделов

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

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

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

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

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

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

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

Вы можете заменить надпись “My Windows 10”, на любую другую.

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

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

bcdedit - создаем BCD запись


bcdedit /store BCD /set default
bcdedit /store BCD /set path \EFI\Microsoft\Boot\bootmgfw.efi
bcdedit /store BCD /set displayorder

bcdedit пересоздаем конфигурацию bootmgr

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

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

bcdedit пересоздаем загрузочную конфигурацию default

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

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

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

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

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

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

Жесткий диск или твердотельный накопитель в вашей системе разделен на меньшие тома / диски. Проводник показывает только диски, на которые пользователи могут сохранять файлы, но есть и другие диски / разделы меньшего размера, которые вы не видите. Эти разделы содержат EFI, загрузочную информацию или информацию для восстановления. Если вы просмотрите список томов на жестком или твердотельном диске через командную строку или через утилиту управления дисками в Windows 10, вы сможете увидеть размер этих разделов и их количество.


Доступ к загрузочному разделу в проводнике

Разделы загрузки и / или восстановления не указаны в проводнике. Нет адреса, который можно было бы ввести в адресную строку для доступа к ним. Вместо этого вам нужно пройти через командную строку.

  1. Открыть Командная строка с правами администратора.
  2. Выполните следующую команду.


Пример

  1. Коснитесь Enter.
  2. Новый Откроется окно проводника. Вам может быть предложено предоставить доступ администратора. Нажмите «Продолжить», чтобы получить доступ к диску.


Показать раздел восстановления

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

Чтобы отобразить раздел восстановления, выполните следующие действия.

  1. Открыть Командная строка с правами администратора.
  2. Откройте инструмент diskpart с помощью этой команды: diskpart
  3. Список всех подключенных дисков с помощью этой команды: list disk . Обратите внимание на номер, указанный на диске.
  4. Выберите диск с помощью этой команды: select disk 0 (замените номер на номер вашего диска).
  5. Список всех разделов с помощью этой команды: list partitions .
  6. Выберите раздел, который хотите показать: select partition 1 (замените номер номером, присвоенным разделу, который вы хотите показать.
  7. Перепроверьте, чтобы убедитесь, что раздел действительно скрыт с помощью этой команды: detail partition .
  8. Наконец, показать это с помощью этой команды; set override .


Нужно снова спрятать диск? Следуйте этому руководству по скрытию диска для восстановления / зарезервированного диска.

Вывод

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

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