Архитектура и запуск решения на базе KasperskyOS
KasperskyOS состоит из ядра и набора системных программ и библиотек.
Ядро KasperskyOS
Главным компонентом KasperskyOS является ядро собственной разработки, которое относится к типу микроядер, поскольку такая функциональность операционной системы, как управление устройствами, файловыми системами, сетевым взаимодействием вынесена из ядра в системные программы, исполняющиеся в пользовательском режиме. Такой подход нацелен на повышение надежности за счет уменьшения ядра и распределения функций операционной системы между ядром и набором системных программам. Чем меньше ядро, тем меньше ошибок в коде, исполняющемся в привилегированном режиме, что снижает вероятность сбоя операционной системы. В то же время ошибка в системной программе может привести к сбою этой программы, но не к сбою всей операционной системы.
Ядро управляет исполнением программ, памятью, вводом-выводом, доступом к ресурсам, электропитанием платформы и обеспечивает взаимодействие программ. При этом в ядро включено несколько драйверов (например, драйверы контроллеров прерываний и таймеров, драйверы UART и XHCI DbC для выполнения отладки и диагностического вывода), отладочные механизмы (GDB-сервер, счетчики производительности).
Системные программы KasperskyOS
В составе KasperskyOS SDK поставляется загрузочный образ (InitROMFS), который содержит минимальный набор системных программ, необходимых для запуска решения и прикладных программ, упакованных в KPA-пакеты.
При сборке решения на базе KasperskyOS с помощью системы сборки CMake из состава SDK этот образ всегда добавляется в решение. Системные программы, входящие в образ InitROMFS перечислены в таблице ниже.
Системные программы в образе InitROMFS
Программа | Назначение |
|---|---|
Einit | Запускает остальные системные программы, указанные в этой таблице, а также системную программу vendor_einit в образе VendorROMFS. |
BlobContainer | Загружает в оперативную память исполняемые файлы и динамические библиотеки. |
DumpCollector | Собирает сведения об аварийно завершившихся процессах и передает эти сведения в систему журналирования или записывает в файл. |
ExecMgrEntity | Запускает программы из KPA-пакетов. |
MountSettings | Устанавливает параметры монтирования файловых систем в соответствии с конфигурацией, заданной в файле |
PkgMgrEntity | Устанавливает и удаляет KPA-пакеты. |
SystemSettings | Хранит системные параметры и сведения об установленных KPA-пакетах. |
dcm (Dynamic Connection Manager) | Обеспечивает возможность динамически создавать IPC-каналы. |
vfs_storage | Обеспечивает доступ к файловым системам. |
В составе KasperskyOS SDK также поставляются CMake-скрипты для сборки дополнительного образа (VendorROMFS), который содержит дополнительные системные программы и драйверы, необходимые для работы с эмулятором или конкретной аппаратной платформой, где будет запускаться решение.
При сборке решения на базе KasperskyOS с помощью системы сборки CMake из состава SDK этот образ создается на основе описаний сценариев сборки в файлах CMakeLists.txt и затем добавляется в решение.
Системные программы, входящие в образ VendorROMFS перечислены в таблице ниже.
Системные программы в образе VendorROMFS
Программа/Программы | Назначение |
|---|---|
vendor_einit | Запускает остальные системные программы, указанные в этой таблице. |
ksm.module | Модуль безопасности Kaspersky Security Module, который генерируется на основе описание политики безопасности решения и интегрируется в состав ядра во время загрузки KasperskyOS. |
Системные программы, каждая из которых специфична для аппаратной платформы и/или решения и должна быть запущена на раннем этапе загрузки KasperskyOS. | Управляют устройствами (например, драйвер блочного устройства, на котором хранится корневая файловая система RootFS), предоставляют функциональность, специфичную для решения или аппаратной платформы. |
Модуль безопасности Kaspersky Security Module
В образ VendorROMFS также входит модуль безопасности Kaspersky Security Module, который генерируется в процессе сборки этого образа и интегрируется в состав ядра во время загрузки KasperskyOS.
Модуль безопасности генерируется на основе следующих компонентов описания политики безопасности решения:
- Описание политики безопасности для системных программ, входящих в загрузочный образ InitROMFS. Это описание поставляется в составе SDK.
- Описание политики безопасности для системных программ, входящих в дополнительный образ VendorROMFS. Это описание генерируется в процессе сборки этого образа.
- Описание политики безопасности для прикладных программ. Это описание создается пользователем SDK. Подробнее см. "Разработка политик безопасности".
Файловая система rootfs
При запуске KasperskyOS монтируется корневая файловая система rootfs.
При сборке решения на базе KasperskyOS необходимо с помощью системы сборки CMake из состава SDK добавить в корневую файловую rootfs следующие файлы:
- содержимое архива, содержащего библиотеки, файлы и KPA-пакеты необходимые для работы системных программ из загрузочного образа InitROMFS. Архив поставляется в составе SDK.
- файлы и библиотеки, необходимые для работы системных программ из образа VendorROMFS.
- KPA-пакеты всех прикладных программ, входящих в решение.
- Файлы настроек системной программы ServiceManager, которая отвечает за установку и запуск KPA-пакетов.
Загрузка KasperskyOS
- Помещение в память ядра KasperskyOS загрузочного образа InitROMFS и образа VendorROMFS, а также запуск ядра выполняет загрузчик, установленный на аппаратной платформе, или встроенное программное обеспечение UEFI.
- Ядро находит в образе VendorROMFS и загружает модуль безопасности (как модуль ядра).
- Ядро загружает системную программу Einit из образа InitROMFS.
- Программа Einit запускает остальные системные программы из образа InitROMFS, а также системную программу vendor_einit из образа VendorROMFS.
- Программа vendor_einit из образа VendorROMFS запускает остальные системные программы из образа VendorROMFS, в том числе загружаются драйверы для работы с блочным устройством и драйверы файловой системы, что впоследствии позволяет использовать rootfs.
- Системная программа PkgMgrEntity устанавливает системную программу ServiceManager из KPA-пакета, поставляемого в составе rootfs.
- Системная программа ExecMgrEntity запускает системную программу ServiceManager.
- Системная программа ServiceManager устанавливает из KPA-пакетов и запускает прикладные программы.