Примеры в KasperskyOS Community Edition
В дополнение к руководству разработчика в составе KasperskyOS Community Edition SDK поставляются примеры решений на базе KasperskyOS. Примеры находятся в директории /opt/KasperskyOS-Community-Edition-<version>/examples
. Каждый пример помещен в отдельную директорию, в которой содержатся:
- Директории с исходным кодом программ.
- Директория
resources
, которая содержит формальную спецификацию компонента решения. Опционально эта директория может содержать файлы, необходимые для работы примера. Например, файлы конфигурации сети:hosts
,dhcpcd.conf
иntp.conf
. - Сценарии сборки решения в виде файлов
CMakeLists.txt
. - Файлы
README.md
. Эти файлы имеют однотипное содержание и ссылаются на это руководство. - [Опционально] Директория
vendor
, которая содержит библиотеки и их метаданные, необходимые для управления зависимостями в проектах на языке Rust.
Перед запуском примеров на Radxa ROCK 3A необходимо также выполнить сборку драйверов, которые поставляются в составе SDK в виде исходного кода. Инструкцию по сборке драйверов можно найти в описаниях примеров (файлы README.md).
В таблице ниже приведено описание примеров по разработке простейших решений.
Простейшие решения
Директория примера в SDK |
Краткое описание примера |
Запуск на QEMU |
Запуск на Raspberry Pi 4 B |
Запуск на Radxa ROCK 3A |
---|---|---|---|---|
hello |
Демонстрирует самое простое решение. Программа |
Да |
Да |
Да |
echo |
Демонстрирует взаимодействие программ через IPC. Программа |
Да |
Да |
Да |
ping |
Демонстрирует использование политики безопасности решения для управления IPC-взаимодействием между программами. Программа |
Да |
Да |
Да |
hello_from_rust |
Демонстрирует, как включить в решение простую программу, разработанную на языке Rust и собранную с использованием системы сборки и менеджера пакетов Cargo. Программа |
Да |
Да |
Да |
hello_corrosion |
Демонстрирует, как включить в решение простую программу, разработанную на языке Rust, с использованием Corrosion – набора библиотек для интеграции Rust в CMake-проекты. Программа |
Да |
Да |
Да |
В таблице ниже приведено описание примеров, демонстрирующих использование файловых систем и сетевого стека.
Использование файловых систем и сетевого стека в решениях
Директория примера в SDK |
Краткое описание примера |
Запуск на QEMU |
Запуск на Raspberry Pi 4 B |
Запуск на Radxa ROCK 3A |
---|---|---|---|---|
embedded_vfs |
Демонстрирует, как включить в решение системную программу, реализующую файловые системы и сетевой стек. Программа |
Да |
Да |
Да |
net_with_separate_vfs |
Демонстрирует установку соединения между запущенными в KasperskyOS программами через TCP-сокеты с использованием loopback-интерфейса. Программа |
Да |
Да |
Да |
net2_with_separate_vfs |
Демонстрирует установку соединения через TCP-сокеты между программой-клиентом, запущенной в KasperskyOS, и программой-сервером, запущенной в хостовой операционной системе. Программа |
Да |
Да |
Да |
vfs_extfs |
Демонстрирует, как монтировать файловые системы (ext2, ext3, ext4) блочного устройства. Программа |
Да |
Да |
Да |
multi_vfs_ntpd |
Демонстрирует поддержку сетевого протокола NTP (Network Time Protocol). Программа |
Да |
Да |
Да |
multi_vfs_dns_client |
Демонстрирует использование системы разрешения доменных имен DNS (Domain Name System) в KasperskyOS. Программа |
Да |
Да |
Да |
multi_vfs_dhcpcd |
Демонстрирует поддержку сетевого протокола DHCP (Dynamic Host Configuration Protocol) в KasperskyOS. Программа |
Да |
Да |
Да |
mqtt_publisher |
Демонстрирует поддержку протокола обмена сообщениями MQTT (Message Queue Telemetry Transport) в KasperskyOS. Программа |
Да |
Да |
Да |
mqtt_subscriber |
Демонстрирует поддержку протокола обмена сообщениями MQTT (Message Queue Telemetry Transport) в KasperskyOS. Программа |
Да |
Да |
Да |
В таблице ниже приведено описание примеров использования драйверов, поставляемых в составе KasperskyOS Community Edition, для работы с аппаратными интерфейсами GPIO, I2C, UART, SPI и USB.
Использование драйверов в решениях на базе KasperskyOS
Директория примера в SDK |
Краткое описание примера |
Запуск на QEMU |
Запуск на Raspberry Pi 4 B |
Запуск на Radxa ROCK 3A |
---|---|---|---|---|
gpio_input |
Демонстрирует использование драйвера GPIO (General-Purpose Input/Output) для ввода через GPIO-пины. Программа |
Нет |
Да |
Да |
gpio_output |
Демонстрирует использование драйвера GPIO для вывода через GPIO-пины. Программа |
Нет |
Да |
Да |
gpio_interrupt |
Демонстрирует использование драйвера GPIO для проверки работы прерываний для GPIO-пинов. Программа |
Нет |
Да |
Да |
gpio_echo |
Демонстрирует использование драйвера GPIO для проверки функциональности ввода/вывода GPIO-пинов, а также работу прерываний для GPIO пинов. Программа |
Нет |
Да |
Да |
i2c_ds1307_rtc |
Демонстрирует использование драйвера I2C (Inter-Integrated Circuit) на аппаратной платформе Raspberry PI 4 B. Программа |
Нет |
Да |
Нет |
i2c_bm8563_rtc
|
Демонстрирует использование драйвера I2C (Inter-Integrated Circuit) на аппаратной платформе Radxa ROCK 3A. Программа |
Нет |
Нет |
Да |
uart |
Демонстрирует использование драйвера UART (Universal Asynchronous Receiver-Transmitter). Программа |
Да |
Да |
Да |
spi_check_regs |
Демонстрирует использование драйвера SPI (Serial Peripheral Interface). Программа |
Нет |
Да |
Да |
barcode_scanner |
Демонстрирует использование драйвера USB (Universal Serial Bus) с помощью библиотеки |
Нет |
Да |
Да |
watchdog_system_reset |
Демонстрирует использование драйвера Watchdog для мониторинга состояния KasperskyOS и автоматического перезапуска Raspberry Pi 4 B. Программа |
Нет |
Да |
Нет |
mass_storage |
Демонстрирует использование драйвера UsbMassStorage для работы с внешними USB-накопителем, подключенным к USB-порту Raspberry Pi 4 B. Программа |
Нет |
Да |
Да |
can_loopback |
Демонстрирует использование драйвера CAN на аппаратной платформе Radxa ROCK 3A, когда нет необходимости подключать дополнительную периферию в виде CAN-трансиверов. В примере производится настройка CAN-порта, после чего происходит отправка CAN-пакета. Полученный CAN-пакет проверяется на соответствие отправленному CAN-пакету. Подробнее см. "Пример can_loopback". |
Нет |
Нет |
Да |
can2can |
Демонстрирует использование драйвера CAN на аппаратной платформе Radxa ROCK 3A для пересылки сообщения между двумя CAN-интерфейсами. В отличие от примера can_loopback, где используется только один CAN-интерфейс и нет необходимости в дополнительном оборудовании, этот пример требует наличия двух CAN-трансиверов подключенных к линиям |
Нет |
Нет |
Да |
adc_hello |
Демонстрирует использование драйвера Sensors для проверки функциональности АЦП на аппаратной платформе Radxa ROCK 3A. Программа |
Нет |
Нет |
Да |
В таблице ниже представлены примеры использования поставляемых в составе KasperskyOS Community Edition библиотек для выполнения различных функций, таких как журналирование, применение регулярных выражений, обмен сообщениями через IPC и тестирование производительности.
Использование библиотек в решениях
Директория примера в SDK |
Краткое описание примера |
Запуск на QEMU |
Запуск на Raspberry Pi 4 B |
Запуск на Radxa ROCK 3A |
---|---|---|---|---|
shared_libs |
Демонстрирует использование динамических и статических библиотек в KasperskyOS. Программа |
Да |
Да |
Да |
koslogger |
Демонстрирует использование библиотеки журналирования |
Да |
Да |
Да |
pcre |
Демонстрирует использование библиотеки |
Да |
Да |
Да |
iperf_separate_vfs |
Демонстрирует использование библиотеки |
Да |
Да |
Да |
messagebus |
Демонстрирует использование компонента |
Да |
Да |
Да |
pal_tests |
Демонстрирует использование PAL (Policy Assertion Language) при написании тестов политики безопасности решения на базе KasperskyOS. Тесты проверяют политику безопасности решения до начала разработки программного кода, основываясь на формальных спецификациях компонентов решения. Подробнее см. "Пример pal_tests". |
Да |
Да |
Да |
В таблице ниже представлены примеры использования паттернов безопасности в KasperskyOS.
Использование паттернов безопасности в решениях
Директория примера в SDK |
Краткое описание примера |
Запуск на QEMU |
Запуск на Raspberry Pi 4 B |
Запуск на Radxa ROCK 3A |
---|---|---|---|---|
secure_logger |
Демонстрирует использование паттерна Distrustful Decomposition для решения задачи разделения чтения и записи в журнал событий. Программа |
Да |
Да |
Да |
separate_storage |
Демонстрирует использование паттерна Distrustful Decomposition для решения задачи раздельного хранения данных для доверенных и недоверенных программ. Пример содержит две программы: |
Да |
Да |
Да |
defer_to_kernel |
Демонстрирует использование паттернов Defer to Kernel и Policy Decision Point: гарантия изоляции запущенных программ (процессов) ядром KasperskyOS. В этом примере программы |
Да |
Да |
Да |
device_access |
Демонстрирует использование паттерна Privilege Separation, при котором авторизация и доступ к данным обеспечиваются разными программами. Программа |
Да |
Да |
Да |
secure_login |
Демонстрирует использование паттерна Information Obscurity: возможность передачи критической для системы информации через недоверенную среду. Веб-сервер |
Да |
Да |
Да |