Rust в UEFI: создание утилиты для сохранения изображения BIOS

Традиционные языки для разработки BIOS – C и ассемблер, но Rust становится все более востребованным. Разработка BIOS схожа с embedded-разработкой: сложная отладка, взаимодействие с аппаратурой, поиск документации. При этом есть и свои преимущества: высокая тактовая частота, большой объем памяти. Современным стандартом для программ запускаемых при старте компьютера является UEFI, заменивший BIOS.
Rust в UEFI: создание утилиты для сохранения изображения BIOS
Изображение носит иллюстративный характер

Для создания EFI-утилит на Rust используется крейт uefi-rs. Он предоставляет необходимые инструменты, включая макросы и обертки для таблиц UEFI. Утилита сохраняет изображение заставки BIOS, расположенной в Boot Graphics Record Table (BGRT), в файл. Таблица BGRT содержит указатель на изображение в памяти.

Для доступа к BGRT, потребовалась разработка собственной обертки для ACPI протокола, так как не все протоколы поддерживаются uefi-rs. Протокол ACPI позволяет получить доступ к таблицам, включая BGRT. Функция get_acpi_table возвращает заголовок таблицы, а также требуемую таблицу.

Для нахождения таблицы BGRT, был разработан обобщенный метод locate_table_by_signature. Структура EfiAcpiBootGraphicsResourceTable описывает формат таблицы BGRT. В итоге, полученные данные изображения из таблицы BGRT сохраняются в файл на диске.


Новое на сайте

19769ДНК раскрыла происхождение человека из испанского мегалита, но его вера так и осталась... 19768Какапо: самый толстый попугай планеты переживает рекордный бэби-бум 19767Docker позволял взломать хост одним большим запросом — и ИИ сам до этого додумался 19766Откуда взялась республиканская партия: революция или консерватизм? 19765ИИ в медицине: когда алгоритм «видит» то, чего нет 19764Почему зрелые системы управления доступом в 2026 году стали опаснее, чем незрелые? 19763Почему пароли до сих пор обходятся бизнесу дороже, чем кажется? 19762Как больше тысячи незащищённых серверов ComfyUI стали фермой для майнинга криптовалют? 19761Почему война Калифорнии со смогом в 1970-х изменила весь автопром? 19760Почему фальшивый «слив» Claude Code оказался ловушкой для сотен разработчиков? 19759Как физики умудрились перевезти антиматерию в обычном грузовике? 19758Атака GPUBreach: как через видеопамять можно получить полный контроль над компьютером 19757Что за ядовито-зелёное пятно на водохранилище в ЮАР видно даже из космоса? 19756Как Storm-1175 из Китая ломает корпоративные сети за сутки и что делает Medusa настолько... 19755Почему 12 000 серверов с ИИ-платформой Flowise оказались беззащитны перед хакерами?
Ссылка