Инициализирующая программа Einit
При запуске решения ядро KasperskyOS находит в образе решения и запускает исполняемый файл с именем Einit, то есть инициализирующую программу. Инициализирующая программа выполняет следующие действия:
Процесс инициализирующей программы имеет класс Einit.
В составе KasperskyOS SDK поставляется утилита einit, которая позволяет генерировать исходный код инициализирующей программы на языке C. Эта утилита используется системой сборки CMake, которая также обеспечивает компиляцию файла einit.c в исполняемый файл Einit и включение этого исполняемого файла в образ решения.
Для инициализирующей программы не требуется самостоятельно создавать файлы формальной спецификации. Эти файлы автоматически создаются и применяются при сборке решения. Однако класс процесса Einit должен быть указан в описании политики безопасности решения.
Утилита einit генерирует исходный код инициализирующей программы на основе формальных спецификаций компонентов решения и init-описания, представляющего собой текстовый файл, который обычно имеет имя init.yaml.
Init-описание (init.yaml)
Init-описание содержит данные в формате YAML, которые идентифицируют:
Порядок запуска процессов не зависит от порядка их перечисления в init-описании.
Эти данные представляют собой словарь с ключом entities, содержащий список словарей процессов (см. "Примеры init-описаний"). Ключи словаря процесса приведены в таблице ниже.
Можно создать init-описание вручную или автоматизированно. Во втором случае нужно подготовить шаблон init.yaml.in, из которого система сборки создаст init-описание.
Ключи словаря процесса в init-описании
Ключ |
Обязательный |
Значение |
|---|---|---|
|
Да |
Имя класса процесса (из EDL-описания). |
|
Нет |
Имя процесса. Если его не указать, то будет взято имя класса процесса. У каждого процесса должно быть уникальное имя. Можно запустить несколько процессов одного класса, но с разными именами. |
|
Нет |
Имя исполняемого файла в ROMFS (в образе решения). Если его не указать, то будет взято имя класса процесса без префиксов и точек. Например, процессы классов Можно запустить несколько процессов из одного исполняемого файла. |
|
Нет |
Список словарей IPC-каналов процесса. Этот список задает статически создаваемые IPC-каналы, клиентскими IPC-дескрипторами которых будет владеть процесс. По умолчанию этот список пуст. (Помимо статически создаваемых IPC-каналов процессы могут использовать динамически создаваемые IPC-каналы.) |
|
Нет |
Список параметров запуска программы (параметры функции |
|
Нет |
Словарь переменных окружения программы. Ключами в этом словаре являются имена переменных окружения. Максимальный размер значения переменной окружения составляет 65524 байта. |
Ключи словаря IPC-канала процесса приведены в таблице ниже.
Ключи словаря IPC-канала в init-описании
Ключ |
Обязательный |
Значение |
|---|---|---|
|
Да |
Имя IPC-канала, которое может быть задано как фиксированными значением, так и ссылкой вида
|
|
Да |
Имя процесса, который будет владеть серверным дескриптором IPC-канала. |