Как UEFI может обнаружить раздел ОС?

Вопрос или проблема

UEFI может обнаружить EFI раздел через GUID, но как EFI обнаруживает раздел ОС?

Можно сказать, что с помощью файлов загрузки, которые копируются из раздела ОС, но нет, это просто файлы. Я хочу знать, как он обнаруживает раздел ОС. Например, файлы загрузки Windows копируются из C:\Windows\Boot\EFI в \efi\microsoft, но для обнаружения этого недостаточно.

как EFI может обнаружить раздел ОС?

Он этого не делает. Это работа загрузчика, специфичного для ОС (который находится в EFI разделе).

Каждая ОС имеет свой способ конфигурации своего загрузчика – в случае Windows с Bootmgr, есть файл EFI\Microsoft\Boot\BCD, который содержит ссылку на раздел ОС через некоторый GUID (и путь к папке). Файл BCD создается с помощью bcdboot.exe после копирования обычных файлов из \Windows\Boot\EFI и может быть вручную изучен с помощью bcdedit.exe.

Загрузчик затем получает доступ к разделу напрямую (реализуя свой собственный минимальный NTFS-драйвер поверх механизма EFI “доступа по сырому диску”) и читает необходимые файлы для запуска ОС.

У Linux с GRUB есть аналогичный процесс, где grub-mkconfig используется для генерации grub.cfg. (До Secure Boot даже этап “копирования файлов” в grub-install фактически состоял из сборки специфического для системы grubx64.efi с необходимыми модулями, склеенными вместе, и с GUID раздела /boot, встроенным прямо в исполняемый файл.)

В чем разница между этими двумя директориями boot?

EFI\Boot это определено спецификацией UEFI – она содержит “резервные” загрузчики, которые используются, когда прошивка не имеет подходящих записей загрузки (или когда вы указываете прошивке загрузиться с конкретного диска). Когда UEFI не знает, какой файл *.efi загружать, оно проверяет все совместимые разделы на наличие пути по умолчанию EFI\Boot\Bootx64.efi (для x64 процессоров) и запускает его.

(В предыдущих версиях спецификации UEFI это были загрузчики “съемных носителей”, но теперь они должны использоваться для всех видов хранения.)

EFI\Microsoft это ‘поставщикская’ директория, содержимое которой определяется Microsoft. Она содержит то, что Microsoft хочет в нее поместить, и прошивка UEFI не заглядывает внутрь, если не указано это сделать – например, через запись EFI “Boot entry”, созданную с помощью bcdboot.exe, которая явно указывает путь к <некоторому guid раздела>\EFI\Microsoft\Boot\Bootx64.efi.

(Прошивки некоторых производителей пытаются быть умными и автоматически обнаруживают Windows, проверяя EFI\Microsoft\Boot, но это не является частью никакой официальной спецификации.)

как я могу удалить этот вопрос? все ответы были бесполезны, потому что никто не прочитал вопрос правильно, я получаю ошибку при попытке удалить вопрос

EFI\Boot определяется спецификацией UEFI

я знаю, что такое EFI\Boot :/ я говорю о Boot в EFI разделе вне каталога EFI

Каждая ОС имеет свой способ настройки своего загрузчика – в случае Windows с Bootmgr, у вас есть файл EFI\Microsoft\Boot\BCD, который содержит ссылку на раздел ОС через некоторый GUID (и путь к папке)

это значит, что сначала EFI загружает EFI\Boot > затем \Boot читает файл BCD?

в корне EFI раздела я вижу

1. EFI:
 1. Boot
 2. Microsoft 
2. Boot

В чем разница между этими двумя директориями boot?

.

Ответ или решение

UEFI (Unified Extensible Firmware Interface) представляет собой современный интерфейс между операционной системой и микропрограммным обеспечением аппаратной части компьютера. Вам интересно, как UEFI распознаёт разделы, содержащие ОС. В отличие от некоторой информации, популярной среди пользователей, UEFI сам по себе не распознает разделы операционных систем напрямую. Вместо этого UEFI работает в тандеме с загрузчиками операционных систем, отвечающими за этот процесс.

Теория

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

UEFI и GUID
UEFI раздела EFI представляет собой специальную область на жестком диске, которую прошивка может загружать, чтобы находить и запускать операционные системы. Это организуется с использованием таблицы разделов GUID (GPT), где каждый раздел идентифицируется уникальным GUID. Эти GUID помогают различать специфичные разделы, такие как EFI System Partition (ESP). Однако, сама по себе ESP не является разделом ОС, а таковым является лишь контейнер для загрузочного ПО.

Загрузчики ОС

Каждая операционная система предоставляет свои компоненты загрузки, находящиеся в ESP, которые помогают загрузчику выполнять взаимодействие с ОС на этапе начала запуска системы:

  1. Windows Boot Manager – хранится в разделе EFI под именем \EFI\Microsoft\Boot\BCD. Этот Boot Manager использует конфигурационную базу данных для определения основной (главной) загрузочной записи, включая её GUID, и для указания точного местоположения загрузочных файлов OS на других разделах. Данный файл создается утилитой bcdboot.exe и может быть просмотрен с использованием bcdedit.exe.

  2. GRUB для Linux – Генерация конфигурационного файла с использованием grub-mkconfig, который будет ссылаться на специфичные компоненты ОС. В предыдущих версиях также использовалась команду grub-install для интеграции различных модулей и прописывания GUID раздела в выполняемом файле grubx64.efi.

Применение

На этапе загрузки UEFI лишь инициализирует базовые компоненты платформы и запускает заранее установленный файл из ESP, как правило, Bootx64.efi в каталоге \EFI\Boot. Этот файл, как правило, является резервным загрузчиком, если другие конфигурации не доступны. После загрузки, на работу берёт загрузчик ОС, который далее инициализирует оставшиеся компоненты системы и загрузку ОС. В процессе загрузки он обращается к своему специфицированному конфигурационному файлу, где уже задаются ссылки на другие разделы, содержащие ОС.

Примерная структура

Наиболее частой ошибкой при понимании работы UEFI является путаница между понятиями ESP и раздела ОС. Они выполняют разные функции:

  • ESP (\EFI\Boot и \EFI\Microsoft) – является своего рода "разделом начального запуска", поддерживающим конфигурацию и файлы для старта ОС.
  • Операционная система – хранится на другом разделе, к которому загрузчик обращается позже.

Разница между \EFI\Boot и \EFI\Microsoft

  1. EFI\Boot – задаётся спецификацией UEFI и является резервным местоположением для загрузочника, который будет использован в отсутствии специфических записей загрузки.

  2. EFI\Microsoft – не затрагивается самой спецификацией UEFI. Это структурированные должным образом файлы, которые производитель, в данном случае Microsoft, решил разместить в ESP.

Заключение

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

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

Оцените материал
Добавить комментарий

Капча загружается...