Краткое руководство разработчика решений на базе KasperskyOS

30 сентября 2026

ID quick_reference_guide

Подготовка к разработке

KasperskyOS Community Edition SDK поставляется в виде отдельных deb-пакетов для работы с эмулятором QEMU и для каждой из поддерживаемых аппаратных платформ. Для изучения принципов разработки под KasperskyOS рекомендуется использовать версию для работы с эмулятором QEMU.

Чтобы начать разрабатывать решения на базе KasperskyOS, нужно выполнить следующие шаги:

  1. Установить версию KasperskyOS Community Edition SDK, предназначенную для работы с эмулятором QEMU, и среду разработки (например, Microsoft Visual Studio Code с расширениями для разработки на C/C++ и поддержки CMake, а также расширением KasperskyOS SDK Extension) на компьютер, соответствующий системным требованиям.

    Расширение KasperskyOS SDK Extension для Microsoft Visual Studio Code содержится только в SDK для работы под управлением эмулятора QEMU и предназначено только для работы с этой версией SDK.

    KasperskyOS Community Edition SDK включает компиляторы C/C++, генераторы исходного кода, отладчик GDB, эмулятор QEMU, утилиты (например, binutils, cmake) и другие инструменты. Исполняемые файлы инструментов находятся в директории toolchain/bin.

  2. Изучить раздел "Обзор KasperskyOS".
  3. Изучить этот раздел.

    Во время работы над проектом потребуется обращаться к разным разделам для получения детальных сведений.

Изучение примеров из состава KasperskyOS Community Edition SDK

В директории examples из состава KasperskyOS Community Edition SDK находятся примеры проектов решений на базе KasperskyOS, содержащие описание README.md и комментарии в текстовых файлах. Каждый пример помещен в отдельную директорию. Чтобы собрать пример, нужно скопировать его в директорию, где разрешен доступ на запись (например, в домашнюю директорию), и выполнить сборку с помощью утилиты cmake. В результате сборки будет создан образ решения в директории <директория примера>/build/einit/. Если утилита cmake вызвана с параметром --target sim, то собранный образ будет автоматически запущен на QEMU. Также примеры могут быть собраны для запуска на Raspberry Pi 4 B или OrangePi RV2. Подробнее см. "Сборка и запуск примеров".

Сведения о примерах см. в "Примеры в KasperskyOS Community Edition SDK".

В некоторых примерах реализованы паттерны безопасности, используемые при разработке под KasperskyOS.

Расположение библиотек и исполняемых файлов поставляемых компонентов решения

Библиотеки (в том числе транспортные) поставляемых компонентов решения находятся в директории sysroot-*-kos/lib из состава KasperskyOS Community Edition SDK.

Исполняемые файлы поставляемых компонентов решения находятся в директории sysroot-*-kos/bin из состава KasperskyOS Community Edition SDK.

Создание проекта решения на базе KasperskyOS

Нужно создать CMake-проект решения. Для этого требуется создать иерархию директорий и файлов, как описано в разделе "Использование CMake из состава KasperskyOS Community Edition SDK" (аналогично примерам проектов). Помимо файлов с исходным кодом CMake-проект решения включает скрипт сборки *.sh, файлы CMakeLists.txt, файлы *.psl, файлы *.idl, *.cdl, *.edl.

Создание скрипта сборки

Скрипт сборки можно создать, исходя из описания в разделе "Использование CMake из состава KasperskyOS Community Edition SDK". Значение параметра --target при вызове утилиты cmake определяет цель сборки. Целью сборки может быть, например, создание и запуск образа решения на QEMU или создание образа решения для запуска на аппаратной платформе.

Создание сценариев сборки (файлов CMakeLists.txt)

Файлы CMakeLists.txt содержат сценарии сборки. Требуется создать один корневой файл CMakeLists.txt и по одному файлу CMakeLists.txt для каждой программы, включаемой в решение. Чтобы создать файлы CMakeLists.txt, нужно использовать сведения из раздела "Использование CMake из состава KasperskyOS Community Edition SDK" и примеры проектов.

Файлы CMakeLists.txt содержат как стандартные CMake-команды (например, add_executable(), add_library(), target_link_libraries()), так и CMake-команды, специфичные для проектов решений на базе KasperskyOS.

Создание описания политики безопасности решения (файлов security.psl)

Модуль безопасности Kaspersky Security Module генерируется в процессе сборки решения на основе следующих компонентов описания политики безопасности решения:

  • Описание политики безопасности для системных программ, входящих в загрузочный образ InitROMFS. Это описание поставляется в составе SDK.
  • Описание политики безопасности для системных программ, входящих в дополнительный образ VendorROMFS. Это описание генерируется в процессе сборки этого образа.
  • Описание политики безопасности для прикладных программ. Это описание создается пользователем SDK. Подробнее см. "Разработка политик безопасности".

Файл security.psl содержит часть описания политики безопасности решения и ссылается на файлы с другими ее частями. Например, часть описания политики безопасности решения, управляющая взаимодействиями между программами и ядром KasperskyOS, помещается в файл core.psl.

В файл security.psl можно включать декларации для выполнения аудита безопасности.

На ранних этапах разработки можно использовать заглушку политики безопасности решения, которая разрешает любые взаимодействия (см. "Примеры описаний простейших политик безопасности решений на базе KasperskyOS").

Создание формальных спецификаций компонентов решения (файлов *.idl, *.cdl, *.edl)

Для каждой программы в решении должна быть создана формальная спецификация, которая описывает программу с точки зрения взаимодействия с другими программами. Формальная спецификация задает, например, предоставляет ли программа службы другим программам или нет, какие службы предоставляет программа, какие интерфейсы у служб программы, может ли программа обращаться к модулю безопасности Kaspersky Security Module через интерфейс безопасности.

Файл *.edl обязателен, а файлы *.cdl и *.idl опциональны. Если программа не предоставляет служб другим программам в решении, то ее формальная спецификация может состоять из одного файла *.edl.

Файлы формальных спецификаций поставляемых компонентов решения находятся в директории sysroot-*-kos/include/kl из состава KasperskyOS Community Edition SDK. Также поставляется формальная спецификация ядра KasperskyOS, файлы которой расположены в директории sysroot-*-kos/include/kl/core из состава KasperskyOS Community Edition SDK. Исполняемый файл компонента решения сопровождается полным набором файлов формальной спецификации. Библиотеки для создания компонента решения сопровождаются файлами *.cdl и *.idl.

Для программ, разрабатываемых в проекте, формальные спецификации нужно создать. При этом для создания файла *.edl можно использовать CMake-команду. Если исполняемый файл программы компонуется с поставляемыми в составе KasperskyOS Community Edition SDK библиотеками, то в формальную спецификацию этой программы нужно включить файлы *.cdl и *.idl, сопровождающие эти библиотеки.

Создание IPC-каналов

IPC-каналы можно создать статически и динамически. См. "Создание IPC-каналов".

Создание и использование транспортного кода

Чтобы создать транспортный код на языке C, нужно использовать CMake-команды nk_build_*dl_files() (см. "Библиотека nk"). В результате использования этих CMake-команд создаются файлы *.edl.h, *.cdl.h, *.idl.h, содержащие транспортный код. Эти файлы нужно включить в исходный код как клиентов, так и серверов. Какие именно файлы включать, зависит от того, какие элементы транспортного кода требуются. Например, может быть достаточно включить *.idl.h в код клиента и *.edl.h в код сервера. Но клиенту также могут потребоваться константы, определенные в *.edl.h. Через параметр NK_FLAGS CMake-команд nk_build_*dl_files() можно задать параметры генерации транспортного кода, которые в том числе изменяют содержимое файлов *.edl.h, *.cdl.h, *.idl.h.

Примеры использования элементов транспортного кода на языке C приведены в разделах "Инициализация IPC-транспорта для межпроцессного взаимодействия и управление обработкой IPC-запросов (transport-kos.h, transport-kos-dispatch.h)" и "Инициализация IPC-транспорта для обращения к модулю безопасности (transport-kos-security.h)".

О создании и использовании транспортного кода на языке C++ см. "Транспортный код на языке C++" и "Генерация транспортного кода на языке C++".

Если компонент решения поставляется с транспортными библиотеками, транспортный код создавать не нужно.

Обращение к модулю безопасности Kaspersky Security Module

Интерфейс безопасности нужно задать в формальной спецификации программы. Пример кода для обращения к модулю безопасности Kaspersky Security Module приведен в разделе "Инициализация IPC-транспорта для обращения к модулю безопасности (transport-kos-security.h)".

Работа с IPC-сообщениями

IPC-сообщение содержит фиксированную часть и опционально арену. Фиксированная часть представляет собой структуру, которая является элементом транспортного кода. Работа с фиксированной частью IPC-сообщений сводится к записи и чтению полей структуры. Для работы с ареной IPC-сообщений нужно использовать API (см. "Работа с ареной IPC-сообщений").

Использование динамических библиотек

Можно использовать динамические библиотеки (*.so). См. "Использование динамических библиотек".

Работа с файловыми системами и сетевым стеком

В составе KasperskyOS Community Edition SDK поставляются исполняемые файлы и библиотеки, содержащие реализации файловых систем и сетевого стека. Функциональность доступна программам через функции POSIX и другие функции стандартной библиотеки языка C.

См. "Файловые системы и сеть".

Работа с KPA-пакетами

KPA-пакет является упаковкой для программы, предназначенной для установки в решение на базе KasperskyOS.

Сценарий работы с KPA-пакетами:

  • Прикладные программы при сборке должны быть упакованы в KPA-пакеты с помощью CMake-библиотеки platform/kpa.
  • Запуск прикладных программ, упакованных в KPA-пакеты выполняется с помощью системной программы ServiceManager.
  • Все примеры в составе KasperskyOS Community Edition SDK используют механизм KPA-пакетов.

В составе KasperskyOS Community Edition SDK поставляются компоненты и утилиты для работы с KPA-пакетами:

  • Утилиты для управления KPA-пакетами позволяют собрать в системе, где установлен KasperskyOS Community Edition SDK, KPA-пакет из исходных файлов программы и установить KPA-пакет в собираемый образ решения на базе KasperskyOS.
  • Компонент PackageManager позволяет установить KPA-пакеты в работающее решение на базе KasperskyOS, а также удалить KPA-пакеты и получить сведения о них.

См. "Работа с KPA-пакетами".

API KasperskyOS

KasperskyOS предоставляет следующие API:

  • POSIX (с ограничениями и особенностями реализации) и другие API стандартной библиотеки языка C:
    • основные API (заголовочные файлы в директориях sysroot-*-kos/include/strict, sysroot-*-kos/include/sys из состава KasperskyOS Community Edition SDK);
    • расширенные API (заголовочные файлы в директории sysroot-*-kos/include из состава KasperskyOS Community Edition SDK).

    Заголовочные файлы расширенных API включают заголовочные файлы основных API (через директиву include включаются заголовочные файлы, расположенные в директории sysroot-*-kos/include/strict из состава KasperskyOS Community Edition SDK).

  • Собственные API:
    • высокоуровневые API (заголовочные файлы в директории sysroot-*-kos/include/kos из состава KasperskyOS Community Edition SDK);
    • низкоуровневые API (заголовочные файлы в директории sysroot-*-kos/include/coresrv из состава KasperskyOS Community Edition SDK).

Компоненты для прикладной разработки

В составе KasperskyOS Community Edition SDK поставляются:

  • Компонент LogRR, который представляет собой систему для журналирования информации о работе других программ.
  • Компонент TLS Terminator, который обеспечивает защищенную передачу данных по сети между клиентом и сервером, используя протокол TLS (Transport Layer Security).

Отладка программ

Чтобы выполнить отладку программ, нужно использовать отладчик GDB из состава KasperskyOS Community Edition SDK. Отладку можно выполнить как на QEMU, так и на аппаратной платформе.

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

Санитайзер дескрипторов позволяет обнаружить использование недействительных дескрипторов (закрытых и несозданных) и утечку дескрипторов (наличие незакрытых дескрипторов, которые больше не требуются).

См. "Отладка программ в решении на базе KasperskyOS".

Драйвера для аппаратных платформ

В составе SDK поставляются драйверы для поддерживаемых аппаратных платформ.

Разработка драйверов

Драйвер в KasperskyOS может быть драйвером шины и/или драйвером-клиентом, может быть локальным или распределенным между процессами. Для разработки драйверов в составе KasperskyOS Community Edition SDK поставляется библиотека kdf (заголовочные файлы в директории sysroot-*-kos/include/kdf из состава KasperskyOS Community Edition SDK).

См. "Разработка драйверов под KasperskyOS".

Использование глоссария

В глоссарии приведены термины и аббревиатуры в алфавитном порядке. Для каждого термина приводится определение, и указаны ссылки на связанные с этим термином разделы.

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!