DXE
DXE (Driver Execution Environment) — третья стадия работы прошивки UEFI: здесь запускаются драйверы и поднимаются сервисы, которыми потом пользуется загрузчик.
Если PEI — про то, чтобы память заработала, то DXE — про то, чтобы заработало всё остальное.
Из чего состоит DXE
- DXE Core — диспетчер: определяет, какие драйверы запускать и в каком порядке, и предоставляет базовые сервисы (память, события, образы).
- DXE-драйверы — модули, каждый из которых инициализирует что-то своё: контроллер дисков, USB, сеть, видео, чипсет.
- Протоколы — стандартный способ, которым драйверы и приложения общаются между собой. Драйвер не «вызывает диск», а публикует протокол
Block I/O, которым могут пользоваться другие. - Boot Services и Runtime Services — два набора сервисов UEFI, которые как раз здесь и появляются (см. UEFI).
Что происходит по шагам
- Запуск DXE Core — по данным из HOB, собранных PEI.
- Диспетчер драйверов — проходит по списку DXE-драйверов и запускает те, чьи зависимости выполнены. Драйверы описаны с «выражениями зависимостей»: например, драйвер NVMe ждёт, пока появится протокол PCI I/O.
- Инициализация устройств — по мере запуска драйверов появляются рабочие диски, USB, сетевые интерфейсы, графика.
- Консоль — настраивается ввод и вывод: клавиатура, экран, последовательный порт.
- Таблицы для ОС — собираются ACPI-таблицы и SMBIOS: описание железа, которое прошивка передаст операционной системе.
- Передача управления в BDS — выбирать и запускать загрузчик.
Что доступно после DXE
К концу DXE прошивка умеет практически всё, что нужно для загрузки:
- читать файлы с разделов (в том числе с EFI System Partition, где лежит загрузчик);
- работать с дисками, USB и сетью;
- выводить изображение и принимать ввод;
- загружать и запускать образы — именно это и делает BDS, запуская загрузчик.
Загрузчик (GRUB) — обычное приложение, работающее на этих сервисах. Поэтому в UEFI загрузчик и не «получает управление навсегда»: он пользуется сервисами прошивки, пока ядро не вызовет ExitBootServices().
Итог стадии
К концу DXE: работают драйверы и устройства, подняты Boot Services и Runtime Services, собраны таблицы для ОС. Дальше — BDS.
Комментарии
Пока комментариев нет.