Разработка DRM-совместимых дисплейных драйверов для микроядерной ОС (Денис Молодяков, OSDAY-2025)
Материал из 0x1.tv
- Докладчик
- Денис Молодяков
Цель и подход:
- Разработка универсальных дисплейных драйверов для микроядерной ОС KasperskyOS
- Выбор интерфейса DRM/KMS из Linux для совместимости с прикладным ПО
- Анализ решений в открытых ОС: Linux (оптимален), Android (закрытые компоненты), Fuchsia (недостаточно зрелый)
Реализации драйверов:
- Intel UHD Graphics: аппаратные блоки соответствуют модели KMS
- BGA (Bochs Graphics Adapter): простой эмулируемый контроллер с доступом к фреймбуферу
- Virtio GPU: паравиртуализованное решение для гостевых ОС с кодированием данных
- MediaTek: сложный аппаратный конвейер с коррекцией цвета и специализированными блоками
Особенности микроядерной архитектуры:
- Изоляция компонентов и взаимодействие через IPC
- Ограничения: временные задержки, передача параметров по значению
- Обработка прерываний в пользовательском пространстве
- Контроль данных монитором безопасности
- Управление доступом через политики безопасности
Преимущества и выводы:
- Совместимость с графическими фреймворками и композиторами
- Необходимость эмуляции KMS-блоков на платформах, отличных от Intel
- Временные задержки при инициализации и смене режимов (не критично)
- Безопасность: гранулярный контроль данных и прав доступа
Содержание
Видео
Thesis
Разработка DRM-совместимых дисплейных драйверов для микроядерной ОС
При разработке дисплейных драйверов для ОС общего назначения ключевая сложность – определение универсального интерфейса взаимодействия с вышестоящим уровнем (инфраструктура, прикладное ПО). Среди ОС с открытым исходным кодом анализировались:
- Linux и Android (интересны, но в Android закрыты компоненты render path)
- Fuchsia (мало инсталляций, решения не отработаны)
В KasperskyOS выбран интерфейс DRM (Direct Rendering Manager) из Linux. Доклад отражает опыт разработки и портирования видео-драйверов под этот интерфейс.
Общие сведения о DRM/KMS
За доступ к ресурсам видеокарты в Linux отвечает компонент ядра DRM. Графический стек делится на:
- Render path (не рассматривается)
- Display path (дисплейные драйверы + управление устройствами отображения)
KMS device model – подсистема DRM, определяющая модель конвейера отображения (display pipeline). Основные логические блоки:
- Planes
- CRTCs (Cathode-Ray Tube Controller)
- Encoders
- Connectors
Примеры реализации дисплейных драйверов в KasperskyOS
- Intel UHD Graphics: Аппаратные блоки дисплейного контроллера соответствуют логическим блокам модели KMS. Архитектура рассмотрена на примере графического ускорителя Intel.
- BGA (Bochs Graphics Adapter): Простейший контроллер, эмулируемый qemu для x86_64. Предоставляет доступ к LFB (Linear FrameBuffer). Логические блоки KMS эмулируют аппаратуру.
- Virtio GPU: Драйвер паравиртуализованной видеокарты для ОС-"гостя". Данные кодируются в гостевой ОС и декодируются эмулятором по спецификации virtio. Представлена структурная схема работы.
- MediaTek: Сложный аппаратный конвейер (Overlayer, блоки коррекции цвета, Gamma correction, RDMA, DSI). Описаны архитектура аппаратной части и программной реализации.
Особенности драйверов для микроядерной архитектуры
Компоненты изолированы, взаимодействие через IPC:
- Временной лаг при взаимодействии с компонентами платформы
- Передача параметров by-value (отсутствуют механизмы copy-from-user/copy-to-user)
- Обработка прерываний в user space (критично для событий hot-plug)
- Контроль трансфера данных (включая объекты видеопамяти) монитором безопасности KasperskyOS
- Управление доступом через политики безопасности
Выводы
- Преимущество совместимости с прикладным ПО (фреймворки, композиторы)
- Модель KMS ориентирована на архитектуру Intel, требует эмуляции блоков конвейера на других платформах
- Временные штрафы при инициализации и смене режимов (не критично из-за редкости операций)
- Изоляция обеспечивает:
- Гранулярный контроль потоков данных
- Регулирование прав через политики безопасности
Презентация
Примечания и ссылки
