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