ПРОЕКТЫ

Разработка драйверов и портирование приложений на KasperskyOS для работы на Raspberry Pi 4

Заказчик

«Лаборатория Касперского» — лидер рынка программных решений в сфере кибербезопасности и разработчик собственной микроядерной операционной системы KasperskyOS.

Задача

Установить KasperskyOS на одноплатный компьютер Raspberry Pi 4, разработать драйверы и портировать приложения.

KasperskyOS — микроядерная операционная система для отраслей с повышенными требованиями к информационной безопасности, надежности и предсказуемости работы IT-систем. KasperskyOS позволяет создавать IT-продукты, обладающие кибериммунитетом — встроенной защищенностью от подавляющего большинства типов кибератак. Для этого разработчикам необходимо следовать специальной методологии.

Решение

Проект стартовала команда из трех инженеров, которая была расширена до шести специалистов. Нам нужно было в сжатые сроки проработать огромное количество новой информации, распределить роли и спланировать выполнение проекта, наладить взаимодействие с инженерной командой на стороне заказчика и передать в «Лабораторию Касперского» готовые инструкции и комментарии — все эти задачи успешно удалось выполнить.

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


В ходе проекта наша инженерная команда разработала и портировала на KasperskyOS десять программных компонентов:
  • базу данных RRDtool;
  • клиентскую библиотеку AMQP/RabbitMQ;
  • библиотеки GPIO wrapper (libgpiod), I2C wrapper, SPI wrapper;
  • тестовую платформу I2C/SPI/GPIO для поддержки непрерывной интеграции библиотек;
  • библиотеку JWT;
  • библиотеку управления Telegram-ботами;
  • стек протоколов Bluetooth для поддержки датчиков;
  • пилотный проект (primer) портирования MONO framework (.Net) на KasperskyOS.

Портирование каждого приложения включало в себя несколько этапов:
  1. Выбор приложения на стороне заказчика.
  2. Анализ зависимостей приложения от внешних библиотек — необходим для оценки портируемости, т.к. KasperskyOS поддерживает не все вызовы POSIX (Portable Operating System Interface).
  3. Составление функциональных требований.
  4. Анализ проекта реализации, подготовка документации и утверждение проекта.
  5. Реализация.
  6. Ревью и демонстрация работы приложения.

Для реализации поставленных задач мы использовали кросс-компиляторы GCC (GNU C, C++, make, CMake) и KasperskyOS SDK.

В ходе проекта возникли сложности с портированием RRDtool, однако мы успешно их решили. Ниже мы расскажем, что это за программный компонент, чем были вызваны сложности и как наша инженерная команда с ними справилась.

RRDtool (Round-robin Database tool) — набор библиотек и утилит для работы с циклическими базами данных (TimeSeries DB). Эти инструменты позволяют хранить, обрабатывать и визуализировать динамические последовательности данных, такие как сетевой трафик, температура, загрузка процессора и т.д.

Для успешного портирования необходимо, чтобы клиентская библиотека поддерживала отправку запросов к серверу с использованием TCP-подключения, а кэширующий сервер — прием и обработку запросов на:
  • создание новой базы;
  • изменение схемы и настроек базы;
  • обновление / получение данных из базы;
  • запись закэшированных сервером данных в файл базы;
  • получение списка баз данных, хранящихся на сервере.

В ходе портирования RRDtool мы столкнулись с проблемами и некоторые смогли решить:
  • В составе SDK KasperskyOS не было необходимых для RRDtool библиотек libintl и glib-2.0, поэтому мы добавили требуемые заголовочные и бинарные файлы.
  • Пришлось сократить функциональность портированной версии из-за того, что в составе SDK KasperskyOS отсутствовали некоторые библиотеки и программные пакеты. Мы исключили:
  • поддержку распределенной файловой системы Ceph (зависимость от librados);
  • CGI-интерпретатор, построение графиков и отчетов (зависимость от libpango и libcairo);
  • поддержку API для Perl, Lua, Python и Ruby.

На базе портированной RRDtool на KasperskyOS мы реализовали примеры для комьюнити:
  • работу с типами данных GAUGE и COUNTER;
  • использование CF — функций консолидации данных: AVERAGE, MIN, MAX;
  • параллельное обновление (update) и получение (fetch) данных пишущим и читающим клиентами.

Результат

Мы в сжатые сроки дополнили экосистему KasperskyOS на одноплатном компьютере Raspberry Pi 4 и портировали драйверы, приложения и другие программные компоненты.

Наш опыт в разработке похожих решений и понимание нюансов развертывания Linux на различных аппаратных платформах (Raspberry, Orange, STM) позволил проработать различные гипотезы по портированию приложений и библиотек на KasperskyOS.
Raspberry Pi 4, модель B.
Фото: wikipedia.org
Так, опытным путем наша команда показала, что KasperskyOS можно наполнить дополнительными open-source-приложениями и таким образом сделать операционную систему более привлекательной и доступной для широкого круга пользователей — от профессионалов до любителей. Такие дополнения расширят сферу применения новой операционной системы и, соответственно, обеспечат рост количества пользователей других программных продуктов заказчика.

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

KasperskyOS используется в разработке коммерческих продуктов. Для изучения устройства операционной системы и принципов разработки под нее существует версия KasperskyOS Community Edition, ее можно скачать с сайта os.kaspersky.ru


Свяжитесь с нами, чтобы обсудить свои инженерные задачи
Мы предложим вам оптимальное решение!
Вся предоставленная информация останется конфиденциальной
Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c политикой конфиденциальности
Наши офисы
Москва
ул. Тропарёвская, влд. 4, стр.1, пом. 6А
119602, г.Москва,
Российская Федерация
Иннополис
ул. Университетская, д. 7, пом. 7
420500, г. Иннополис,
Республика Татарстан
Телефон: +7 968 3639140
Email: rnd@prm.dev
ООО «ПРМ Иннополис»