Пример logrr
Пример демонстрирует использование компонента LogRR для журналирования работы программ в решении на базе KasperskyOS.
Директория примера в SDK
Код примера и скрипты для сборки находятся по следующему пути:
/opt/KasperskyOS-Community-Edition-<platform>-<version>/examples/logrr
Список программ
Client– прикладная программа, передающая сообщения серверу журналирования. Для отправки сообщений серверу журналирования программаClientиспользует библиотекуlogrr_cpp, которая фильтрует сообщения по уровню журналирования.Server– системная программа, реализующая сервер журналирования, которому программаClientпередает сообщения. Сервер журналирования передаёт сообщения каналу выводаFsOutputChannel.FsOutputChannel– системная программа, реализующая канал вывода для программыServer. Канал вывода сохраняет полученные от сервера журналирования сообщения в файл.Ntpd– системная программа, реализующая NTP-клиент, который получает параметры времени от внешних NTP-серверов в фоновом режиме и передаёт их ядру KasperskyOS.VfsNet– системная программа, поддерживающая сетевые протоколы.Dhcpcd– системная программа, реализующая DHCP-клиент, который в фоновом режиме получает параметры сетевых интерфейсов от внешнего DHCP-сервера и передает их виртуальной файловой системе.EntropyEntity– системная программа, реализующая генератор случайных чисел.VfsSdCardFs– системная программа, поддерживающая файловую систему SD-карт.BlobContainer– системная программа, необходимая для работы с динамическими библиотеками в разделяемой памяти.DCM– системная программа, позволяющая динамически создавать IPC-каналы.SDCard– драйвер SD-карты.DNetSrv– драйвер сетевой карты.
При сборке примера для целевой аппаратной платформы в решение автоматически включаются платформенно-зависимые драйверы:
BSP– пакет поддержки аппаратной платформы (Board Support Package), обеспечивающий кросс-платформенную настройку периферии для Radxa ROCK 3A и Raspberry Pi 4 B.Bcm2711MboxArmToVc– драйвер для работы с сопроцессором VideoCore (VC6) через технологию mailbox для Raspberry Pi 4 B.
Описание инициализации
Файл описания инициализации решения init.yaml генерируется в процессе сборки решения на основе шаблона ./einit/src/init.yaml.in. Макросы вида @INIT_*@, которые содержатся в шаблоне, автоматически раскрываются в итоговом файле init.yaml. Подробнее см. "Шаблон init.yaml.in".
Описание политики безопасности
Файлы описания политики безопасности решения на базе KasperskyOS находятся в директории ./einit/src.
Файл security.psl содержит описание политики безопасности решения. Этот файл является файлом верхнего уровня, в который через декларацию use включена часть описания политики безопасности решения в виде PSL-файла dynld.psl. (Декларации в PSL-файлах снабжены комментариями, которые поясняют назначение этих деклараций.) Файл dynld.psl содержит часть описания политики безопасности, используемую при динамической компоновке компонентов решения.
Ресурсы
В директории ./resources/xdl/logrr расположен файл Client.edl – EDL-описание программы Client.
В директории ./resources/hdd/etc расположены файлы конфигурации для программ VfsNet, Dhcpcd и Ntpd: hosts, dhcpcd.conf и ntp.conf соответственно.
Директория ./resources/hdd/var/db/dhcpcd используется программой Dhcpcd для хранения данных о подключении к сети.
Сценарий работы
Программа Client выполняет следующие действия:
- Проверяет наличие сети. Если сеть не доступна, программа выводит сообщение об ошибке и продолжает работу без сети. (Для работы с сетью используется программа
VfsNet, для работы с файловой системой используется программаVfsSdCardFs.) - Ожидает синхронизации с NTP-серверами в течении 5 секунд.
- Инициализирует клиентскую часть компонента LogRR.
- Отправляет сообщения в журнал с использованием макроса LOG.
Сборка и запуск примера
Для сборки и запуска примера используется система CMake из состава KasperskyOS Community Edition.
См. "Сборка и запуск примеров".