KasperskyOS Community Edition 1.1

О KasperskyOS Community Edition

KasperskyOS Community Edition (CE) — общедоступная версия KasperskyOS, предназначенная для освоения основных принципов разработки приложений под KasperskyOS. KasperskyOS Community Edition позволит вам увидеть, как концепции, заложенные в KasperskyOS, работают на практике. KasperskyOS Community Edition включает в себя примеры приложений с исходным кодом, подробные пояснения, а также инструкции и инструменты для сборки приложений.

KasperskyOS Community Edition пригодится вам для:

  • изучения принципов и приемов разработки "secure by design" на практических примерах;
  • изучения KasperskyOS как возможной платформы для реализации своих проектов;
  • прототипирования решений (прежде всего, Embedded/IoT) на основе KasperskyOS;
  • портирования приложений/компонентов на KasperskyOS;
  • изучения вопросов безопасности в разработке ПО.

KasperskyOS Community Edition позволяет разрабатывать приложения как на языке C, так и на C++. Подробнее о настройке среды разработки см. "Настройка среды разработки".

Для получения KasperskyOS Community Edition перейдите по ссылке.

Помимо этой документации, также рекомендуем изучить материалы раздела сайта KasperskyOS для разработчиков.

В начало
[Topic community_edition]

Об этом документе

Руководство разработчика KasperskyOS Community Edition адресовано специалистам, которые осуществляют разработку безопасных решений на базе KasperskyOS.

Руководство предназначено специалистам, обладающим следующими навыками: знание языков C/C++, опыт разработки под POSIX-совместимые системы, знакомство с GNU Binary Utilities (далее также "binutils").

Вы можете применять информацию в этом руководстве для выполнения следующих задач:

  • установка и удаление KasperskyOS Community Edition;
  • использование KasperskyOS Community Edition.
В начало
[Topic about_this_document]

Комплект поставки

KasperskyOS SDK представляет собой набор программных средств для создания решений на базе KasperskyOS.

В комплект поставки KasperskyOS Community Edition входят:

  • deb-пакет для установки KasperskyOS Community Edition, содержащий:
    • образ ядра операционной системы KasperskyOS;
    • инструменты для разработки (компилятор GCC, компоновщик LD, отладчик GDB, набор утилит binutils, эмулятор QEMU и сопутствующие инструменты);
    • утилиты и скрипты (например, генераторы исходного кода, скрипт makekss для создания модуля безопасности Kaspersky Security Module, скрипт makeimg для создания образа решения);
    • набор библиотек, обеспечивающих частичную совместимость со стандартом POSIX;
    • драйверы;
    • системные программы (например, виртуальную файловую систему);
    • примеры работы с компонентами KasperskyOS Community Edition;
    • лицензионное соглашение;
    • файл с информацией о стороннем коде (Legal Notices).
  • Руководство разработчика KasperskyOS Community Edition (онлайн-документация).
  • Информация о версии (Release Notes);

KasperskyOS SDK устанавливается на компьютер под управлением ОС Debian GNU/Linux.

Следующие компоненты, входящие в комплект поставки KasperskyOS Community Edition, являются "Runtime компонентами" в соответствии с условиями лицензионного соглашения:

  • Образ ядра операционной системы KasperskyOS.

Остальные части комплекта поставки не являются "Runtime компонентами". Условия и возможности использования каждого компонента могут быть дополнительно указаны в разделе "Информация о стороннем коде".

В начало
[Topic sdk_contents]

Системные требования

Для установки KasperskyOS Community Edition и запуска примеров под QEMU необходимы:

  1. Операционная система: Debian GNU/Linux 10 "Buster". Возможно использование Docker-контейнера.
  2. Процессор: процессор с архитектурой x86-64 (для большей производительности требуется поддержка аппаратной виртуализации).
  3. Оперативная память: для комфортной работы с инструментами сборки рекомендуется иметь не менее 4 ГБ оперативной памяти.
  4. Дисковое пространство: не менее 3 ГБ свободного пространства в директории /opt (в зависимости от разрабатываемого решения).

Для запуска примеров на аппаратной платформе Raspberry Pi необходимы:

  • модель Raspberry Pi 4 Model B (ревизии 1.1, 1.2, 1.4, 1.5) с объемом оперативной памяти равным 2, 4 или 8 Гб;
  • microSD-карта объемом не менее 2 Гб;
  • преобразователь USB-UART.
В начало
[Topic system_requirements]

Включенные сторонние библиотеки и приложения

Для упрощения процесса разработки приложений в состав KasperskyOS Community Edition также включены следующие сторонние библиотеки и приложения:

  • Automated Testing Framework (ATF) (v.0.20) – набор библиотек для написания тестов для программ на C, C++ и POSIX shell.

    Документация: https://github.com/jmmv/atf

  • Boost (v.1.78.0) – собрание библиотек классов, использующих функциональность языка C++ и предоставляющих удобный кроссплатформенный высокоуровневый интерфейс для лаконичного кодирования различных повседневных подзадач программирования (работа с данными, алгоритмами, файлами, потоками и т. п.).

    Документация: https://www.boost.org/doc/

  • Arm Mbed TLS (v.2.28.0) – реализация протоколов TLS и SSL, а также соответствующих криптографических алгоритмов и необходимого кода поддержки.

    Документация: https://github.com/Mbed-TLS/mbedtls

  • Civetweb (v.1.11) – простой в использовании, мощный, встраиваемый веб-сервер на C / C ++ с дополнительной поддержкой CGI, SSL и Lua.

    Документация: http://civetweb.github.io/civetweb/UserManual.html

  • FFmpeg (v.5.1) – набор библиотек с открытым исходным кодом, которые позволяют записывать, конвертировать и передавать цифровые аудио- и видеозаписи в различных форматах.

    Документация: https://ffmpeg.org/ffmpeg.html

  • fmt (v.8.1.1) – библиотека для форматирования с открытым исходным кодом.

    Документация: https://fmt.dev/latest/index.html

  • GoogleTest (v.1.10.0) – библиотека для тестирования кода на C++.

    Документация: https://google.github.io/googletest/

  • iperf (v.3.10.1) – библиотека для тестирования производительности сети.

    Документация: https://software.es.net/iperf/

  • libffi (v.3.2.1) – библиотека, предоставляющая C-интерфейс для вызова заранее скомпилированного кода.

    Документация: https://github.com/libffi/libffi

  • libjpeg-turbo (v.2.0.91) – библиотека для работы с JPEG-изображениями.

    Документация: https://libjpeg-turbo.org/

  • jsoncpp (v.1.9.4) – библиотека для работы с форматом JSON.

    Документация: https://github.com/open-source-parsers/jsoncpp

  • libpng (v.1.6.38) – библиотека для работы с PNG-изображениями.

    Документация: http://www.libpng.org/pub/png/libpng.html

  • libxml2 (v.2.9.14) – библиотека для работы с XML.

    Документация: http://xmlsoft.org/

  • Eclipse Mosquitto (v.2.0.14) – брокер сообщений, реализующий протокол MQTT.

    Документация: https://mosquitto.org/documentation/

  • nlohmann_json (v.3.9.1) – библиотека для работы с форматом JSON.

    Документация: https://github.com/nlohmann/json

  • NTP (v.4.2.8P15) – библиотека для работы протоколом времени NTP.

    Документация: http://www.ntp.org/documentation.html

  • opencv (v.4.6.0) – библиотека компьютерного зрения с открытым исходным кодом.

    Документация: https://docs.opencv.org/

  • OpenSSL (v.1.1.1q) – полноценная криптографическая библиотека с открытым исходным кодом.

    Документация: https://www.openssl.org/docs/

  • pcre (v.8.44) – библиотека для работы с регулярными выражениями.

    Документация: https://www.pcre.org/current/doc/html/

  • protobuf (v.3.19.4) – библиотека для сериализации данных.

    Документация: https://developers.google.com/protocol-buffers/docs/overview

  • spdlog (v.1.9.2) – библиотека для журналирования.

    Документация: https://github.com/gabime/spdlog

  • sqlite (v.3.39.2) – библиотека для работы с базами данных.

    Документация: https://www.sqlite.org/docs.html

  • Zlib (v.1.2.12) – библиотека для сжатия данных.

    Документация: https://zlib.net/manual.html

  • usb (v.13.0.0) – библиотека для работы с USB-устройствами.

    Документация: https://github.com/freebsd/freebsd-src/tree/release/13.0.0/sys/dev/usb

  • libevdev (v.1.6.0) – библиотека для работы с периферийными устройствами типа evdev.

    Документация: https://www.freedesktop.org/software/libevdev/doc/latest/

  • Lwext4 (v.1.0.0) – библиотека для работы с файловыми системами ext2/3/4.

    Документация: https://github.com/gkostka/lwext4.git

Также см. Информация о стороннем коде.

В начало
[Topic included_third_party_libs]

Ограничения и известные проблемы

Поскольку KasperskyOS Community Edition предназначен для обучения, мы интегрировали в пакет ряд ограничений:

  1. Не поддерживается динамическая загрузка библиотек.
  2. Максимальное поддерживаемое количество запущенных программ: 32.
  3. При завершении работы программы любым способом (например, return из основного потока исполнения) выделенные программой ресурсы не освобождаются, а сама программа переводится в "спящее" состояние. Программы не могут быть запущены повторно.
  4. Не поддерживается запуск двух и более программ с одинаковым EDL-описанием.
  5. Система останавливается, если не осталось работающих программ или если один из потоков программы-драйвера завершился (штатным или нештатным образом).
В начало
[Topic limitations_and_known_problems]