В дополнение к руководству разработчика в составе KasperskyOS Community Edition SDK поставляются примеры решений на базе KasperskyOS. Примеры находятся в директории /opt/KasperskyOS-Community-Edition-<platform>-<version>/examples. Каждый пример помещен в отдельную директорию, в которой содержатся:
resources, которая содержит формальную спецификацию компонента решения. Опционально эта директория может содержать файлы, необходимые для работы примера. Например, файлы конфигурации сети: hosts, dhcpcd.conf и ntp.conf.CMakeLists.txt.README.md. Эти файлы имеют однотипное содержание и ссылаются на это руководство.vendor, которая содержит библиотеки и их метаданные, необходимые для управления зависимостями в проектах на языке Rust.Перед запуском примеров на Radxa ROCK 3A необходимо также выполнить сборку драйверов, которые поставляются в составе SDK в виде исходного кода.
В таблице ниже приведено описание примеров по разработке простейших решений.
Простейшие решения
Директория примера в 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) блочного устройства. Программа |
Да |
Да |
Да |
vfs_relay |
Демонстрирует использование механизма VFS relay для разделения информационных потоков между несколькими системными программами VFS. Программа Client создает и использует файлы, расположенные в разных директориях. В зависимости от директории для работы с файлами выбирается соответствующая программа VFS. Подробнее см. "Пример vfs_relay". |
Да |
Да |
Да |
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 и PWM.
Использование драйверов в решениях на базе 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-порту аппаратной платформы. Программа |
Нет |
Да |
Да |
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. Программа |
Нет |
Нет |
Да |
pwm_led |
Демонстрирует использование драйвера PWM для управления светодиодом на аппаратной платформе Radxa ROCK 3A. Программа |
Нет |
Нет |
Да |
nvme_blockdevice |
Демонстрирует использование твердотельного накопителя информации, подключаемого по шине PCI Express и поддерживающего протокол NVMe. Подробнее см. "Пример nvme_blockdevice". |
Нет |
Нет |
Да |
В таблице ниже представлены примеры использования поставляемых в составе KasperskyOS Community Edition библиотек и компонентов для выполнения различных функций, таких как журналирование, применение регулярных выражений, обмен сообщениями через IPC, тестирование производительности.
Использование библиотек в решениях
Директория примера в SDK |
Краткое описание примера |
Запуск на QEMU |
Запуск на Raspberry Pi 4 B |
Запуск на Radxa ROCK 3A |
|---|---|---|---|---|
shared_libs |
Демонстрирует использование динамических и статических библиотек в KasperskyOS. Программа |
Да |
Да |
Да |
logrr |
Демонстрирует использование компонента LogRR для журналирования работы программ в KasperskyOS. Программа |
Да |
Да |
Да |
pcre |
Демонстрирует использование библиотеки |
Да |
Да |
Да |
iperf_separate_vfs |
Демонстрирует использование библиотеки |
Да |
Да |
Да |
pal_tests |
Демонстрирует использование PAL (Policy Assertion Language) при написании тестов политики безопасности решения на базе KasperskyOS. Тесты проверяют политику безопасности решения до начала разработки программного кода, основываясь на формальных спецификациях компонентов решения. Подробнее см. "Пример pal_tests". |
Да |
Нет |
Нет |
framebuffer_qr_writer |
Демонстрирует организацию графического интерфейса пользователя в решении на базе KasperskyOS с использованием набора кроссплатформенных библиотек: SDL2 для управления окном программы и обработки ввода данных от пользователя, Nuklear для построения графического интерфейса, Skia в качестве механизма отрисовки графики, а также ZXing для генерации QR-кодов. Подробнее см. "Пример framebuffer_qr_writer". |
Нет |
Да |
Да |
dump_collector |
Демонстрирует механизм создания аварийного дампа в решении на базе KasperskyOS. Подробнее см. "Пример dump_collector". |
Да |
Да |
Да |
kpa_example |
Демонстрирует работу с KPA-пакетами и процессами с использованием компонентов PackageManager и ExecutionManager. Подробнее см. "Пример kpa_example". |
Да |
Да |
Да |
uart_toybox |
Демонстрирует работу с компонентом Terminal в решении на базе KasperskyOS. Подробнее см. "Пример uart_toybox". |
Да |
Да |
Да |
perfcnt |
Демонстрирует использование счетчиков производительности в решении на базе KasperskyOS. Программа |
Да |
Да |
Да |
kcfm_hello |
Демонстрирует работу с компонентом KCFM в решении на базе KasperskyOS. Для простой программы |
Да |
Да |
Да |
kcfm_http_server |
Демонстрирует работу с компонентом KCFM в решении на базе KasperskyOS. Для программы веб-сервера выполняется мониторинг работоспособности с помощью компонента KCFM. Подробнее см. "Пример kcfm_http_server". |
Да |
Да |
Да |
В таблице ниже представлены примеры использования паттернов безопасности в 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: возможность передачи критической для системы информации через недоверенную среду. Веб-сервер |
Да |
Да |
Да |