Инициализирующая программа kl.ProductRomfsLoader и файл product_init.yaml
Инициализирующая программа kl.ProductRomfsLoader
Для запуска прикладных программ рекомендуется использовать KPA-пакеты и системную программу ServiceManager.
Если в решении на базе KasperskyOS используются программы, которые по какой-либо причине не могут быть упакованы в KPA-пакеты, то для запуска таких программ нужно использовать системную программу kl.ProductRomfsLoader, которая запускает программы на основе init-описания. Рекомендуется не пользоваться этим подходом без крайней необходимости. Подробнее см. примеры в составе SDK.
Программа kl.ProductRomfsLoader запускает программы в соответствии с init-описанием (файлом product_init.yaml). Такой способ запуска программ не рекомендован и используется для запуска некоторых системных программ, не поддерживающих запуск из KPA-пакетов.
Init-описание (product_init.yaml)
Init-описание содержит данные в формате YAML, которые идентифицируют:
- Процессы, которые будут запущены системной программой kl.ProductRomfsLoader
Порядок запуска процессов не зависит от порядка их перечисления в init-описании, но его можно задать с помощью ключей
beforeиafter(см. таблицу ниже). - IPC-каналы, которые создаются при запуске решения и используются процессами для взаимодействия между собой.
Эти данные представляют собой словарь с ключом entities, содержащий список словарей процессов (см. "Примеры init-описаний"). Ключи словаря процесса приведены в таблице ниже.
Можно создать init-описание вручную или автоматизированно. Во втором случае нужно подготовить шаблон product_init.yaml.in, из которого система сборки создаст init-описание.
Ключи словаря процесса в init-описании
Ключ | Обязательный | Значение |
|---|---|---|
| Да | Имя класса процесса (из EDL-описания). |
| Нет | Имя процесса. Если его не указать, то будет взято имя класса процесса. У каждого процесса должно быть уникальное имя. Можно запустить несколько процессов одного класса, но с разными именами. |
| Нет | Имя исполняемого файла в ROMFS (в образе решения). Если его не указать, то будет взято имя класса процесса без префиксов и точек. Например, процессы классов Можно запустить несколько процессов из одного исполняемого файла. |
| Нет | Список словарей IPC-каналов процесса. Этот список задает статически создаваемые IPC-каналы, клиентскими IPC-дескрипторами которых будет владеть процесс. По умолчанию этот список пуст. (Помимо статически создаваемых IPC-каналов процессы могут использовать динамически создаваемые IPC-каналы.) |
| Нет | Список параметров запуска программы (параметры функции |
| Нет | Словарь переменных окружения программы. Ключами в этом словаре являются имена переменных окружения. Максимальный размер значения переменной окружения составляет 65524 байта. |
| Нет | Определяет порядок запуска процессов. Необходимо указать список имен процессов которые должны быть запущены после запуска этого процесса. |
| Нет | Определяет порядок запуска процессов. Необходимо указать список имен процессов которые должны быть запущены до запуска этого процесса. |
| Нет | Признак, по которому определяется, что процесс успешно запущен. Варианты синтаксиса:
или
или
Параметр
Параметр Параметр
Примеры использования: wait_for: ready wait_for: { event: ready, timeout: 100ms } wait_for: event: ready timeout: 100ms Подробнее см. "Примеры init-описаний". |
Ключи словаря IPC-канала процесса приведены в таблице ниже.
Ключи словаря IPC-канала в init-описании
Ключ | Обязательный | Значение |
|---|---|---|
| Да | Имя IPC-канала, которое может быть задано как фиксированными значением, так и ссылкой вида
|
| Да | Имя процесса, который будет владеть серверным дескриптором IPC-канала. |
Init-описание может также содержать ключ mount_romfs, который определяет имя точки монтирования дополнительной файловой системы romfs.1 перед запуском процессов. Это позволяет запускать процессы из бинарных файлов, расположенных на файловой системе romfs.1. Файловая система romfs.1 будет отмонтирована после завершения процесса Einit. Пример использования:
mount_romfs:
"romfs.1": "romfs/1"