DXE

UEFI

DXE (Driver Execution Environment) — третья стадия работы прошивки UEFI: здесь запускаются драйверы и поднимаются сервисы, которыми потом пользуется загрузчик.

Если PEI — про то, чтобы память заработала, то DXE — про то, чтобы заработало всё остальное.

Из чего состоит DXE

  • DXE Core — диспетчер: определяет, какие драйверы запускать и в каком порядке, и предоставляет базовые сервисы (память, события, образы).
  • DXE-драйверы — модули, каждый из которых инициализирует что-то своё: контроллер дисков, USB, сеть, видео, чипсет.
  • Протоколы — стандартный способ, которым драйверы и приложения общаются между собой. Драйвер не «вызывает диск», а публикует протокол Block I/O, которым могут пользоваться другие.
  • Boot Services и Runtime Services — два набора сервисов UEFI, которые как раз здесь и появляются (см. UEFI).

Что происходит по шагам

  1. Запуск DXE Core — по данным из HOB, собранных PEI.
  2. Диспетчер драйверов — проходит по списку DXE-драйверов и запускает те, чьи зависимости выполнены. Драйверы описаны с «выражениями зависимостей»: например, драйвер NVMe ждёт, пока появится протокол PCI I/O.
  3. Инициализация устройств — по мере запуска драйверов появляются рабочие диски, USB, сетевые интерфейсы, графика.
  4. Консоль — настраивается ввод и вывод: клавиатура, экран, последовательный порт.
  5. Таблицы для ОС — собираются ACPI-таблицы и SMBIOS: описание железа, которое прошивка передаст операционной системе.
  6. Передача управления в BDS — выбирать и запускать загрузчик.

Что доступно после DXE

К концу DXE прошивка умеет практически всё, что нужно для загрузки:

  • читать файлы с разделов (в том числе с EFI System Partition, где лежит загрузчик);
  • работать с дисками, USB и сетью;
  • выводить изображение и принимать ввод;
  • загружать и запускать образы — именно это и делает BDS, запуская загрузчик.

Загрузчик (GRUB) — обычное приложение, работающее на этих сервисах. Поэтому в UEFI загрузчик и не «получает управление навсегда»: он пользуется сервисами прошивки, пока ядро не вызовет ExitBootServices().

Итог стадии

К концу DXE: работают драйверы и устройства, подняты Boot Services и Runtime Services, собраны таблицы для ОС. Дальше — BDS.

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

  • UEFI — общая картина стадий
  • PEI — предыдущая стадия
  • BDS — следующая стадия
  • Setup — приложение, которое тоже живёт в DXE
Оценка статьи 0

Комментарии

Пока комментариев нет.