Обзор: Einit и init.yaml

12 января 2026

ID einit_overview

Инициализирующая программа Einit

При запуске решения ядро KasperskyOS находит в образе решения и запускает исполняемый файл с именем Einit, то есть инициализирующую программу. Инициализирующая программа выполняет следующие действия:

  • создает и запускает процессы при запуске решения;
  • создает IPC-каналы между процессами при запуске решения (статически создает IPC-каналы).

Процесс инициализирующей программы имеет класс Einit.

В составе KasperskyOS SDK поставляется утилита einit, которая позволяет генерировать исходный код инициализирующей программы на языке C. Эта утилита используется системой сборки CMake, которая также обеспечивает компиляцию файла einit.c в исполняемый файл Einit и включение этого исполняемого файла в образ решения.

Для инициализирующей программы не требуется самостоятельно создавать файлы формальной спецификации. Эти файлы автоматически создаются и применяются при сборке решения. Однако класс процесса Einit должен быть указан в описании политики безопасности решения.

Утилита einit генерирует исходный код инициализирующей программы на основе формальных спецификаций компонентов решения и init-описания, представляющего собой текстовый файл, который обычно имеет имя init.yaml.

Init-описание (init.yaml)

Init-описание содержит данные в формате YAML, которые идентифицируют:

  • Процессы, исполнение которых начинается при запуске решения.

    Порядок запуска процессов не зависит от порядка их перечисления в init-описании, но его можно задать с помощью ключей before и after (см. таблицу ниже).

  • IPC-каналы, которые создаются при запуске решения и используются процессами для взаимодействия между собой (не с ядром).

Эти данные представляют собой словарь с ключом entities, содержащий список словарей процессов (см. "Примеры init-описаний"). Ключи словаря процесса приведены в таблице ниже.

Можно создать init-описание вручную или автоматизированно. Во втором случае нужно подготовить шаблон init.yaml.in, из которого система сборки создаст init-описание.

Ключи словаря процесса в init-описании

Ключи словаря IPC-канала процесса приведены в таблице ниже.

Ключи словаря IPC-канала в init-описании

Init-описание может также содержать ключ mount_romfs, который определяет имя точки монтирования дополнительной файловой системы romfs.1 перед запуском процессов. Это позволяет запускать процессы из бинарных файлов, расположенных на файловой системе romfs.1. Файловая система romfs.1 будет отмонтирована после завершения процесса Einit. Пример использования:

mount_romfs:

"romfs.1": "romfs/1"

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!