Утилиты и скрипты сборки
В состав KasperskyOS Community Edition входят следующие утилиты и скрипты сборки:
- nk-gen-c
Компилятор NK (
nk-gen-c
) генерирует набор транспортных методов и типов на основе EDL-, CDL- и IDL-описаний программ, компонентов и интерфейсов. Транспортные методы и типы нужны для формирования, отправки, приема и обработки IPC-сообщений. - nk-psl-gen-c
Компилятор
nk-psl-gen-c
генерирует исходный код модуля безопасности Kaspersky Security Module на основе описания политики безопасности решения (security.psl
) и EDL, CDL- и IDL-описаний , входящих в решение. - einit
Утилита
einit
позволяет автоматизировать создание кода инициализирующего программыEinit
. Эта программа первой запускается при загрузке KasperskyOS и запускает остальные программы, а также создает IPC-каналы между ними. - makekss
Скрипт
makekss
создает модуль безопасности Kaspersky Security Module. - makeimg
Скрипт
makeimg
создает финальный загружаемый образ решения на базе KasperskyOS со всеми запускаемыми программами и модулем Kaspersky Security Module.
nk-gen-c
Компилятор NK (nk-gen-c
) генерирует набор транспортных методов и типов на основе EDL-, CDL- и IDL-описаний. Транспортные методы и типы нужны для формирования, отправки, приема и обработки IPC-сообщений.
Компилятор NK принимает EDL-, CDL- или IDL-файл и создает следующие файлы:
H
-файл, содержащий объявление и реализацию транспортных методов и типов.D
-файл, в котором перечислены зависимости созданногоC
-файла. Этот файл может быть использован для автоматизации сборки с помощью утилитыmake
.
Синтаксис использования компилятора NK:
nk-gen-c [-I PATH][-o PATH][--types][--interface][--client][--server][--extended-errors][--enforce-alignment-check][--help][--version] FILE
Параметры:
FILE
Путь к EDL-, CDL- или IDL-описанию, для которого необходимо сгенерировать транспортные методы и типы.
-I PATH
Путь к директории, содержащей вспомогательные файлы, необходимые для генерации транспортных методов и типов. По умолчанию эти файлы располагаются в директории
/opt/KasperskyOS-Community-Edition-<version>/sysroot-aarch64-kos/include
.Также может использоваться для добавления других директорий для поиска файлов, необходимых для генерации.
Чтобы указать более одной директории, можно использовать несколько параметров
-I
.-o PATH
Путь к существующей директории, в которой будут созданы файлы, содержащие транспортные методы и типы.
-h, --help
Отображает текст справки.
--version
Отображает версию
nk-gen-c
--enforce-alignment-check
Включает обязательную проверку выравнивания обращений к памяти, даже если такая проверка отключена для целевой платформы. Если проверка включена, то компилятор NK добавляет дополнительные проверки выравнивания в код валидаторов IPC-сообщений.
По умолчанию параметры проверки выравнивания обращения к памяти задаются для каждой платформы в файле
system.platform
.--extended-errors
Включает расширенную обработку ошибок в коде транспортных методов.
Выборочная генерация
Чтобы уменьшить количество генерируемого компилятором NK кода, можно использовать флаги выборочной генерации. Например, для программ, реализующих службы, удобно использовать флаг --server
, а для программ, являющихся клиентами служб, удобно использовать флаг --client
.
Если ни один из флагов выборочной генерации не указан, компилятор NK создаст все возможные для указанного файла транспортные типы и методы.
Флаги выборочной генерации для IDL-файлов:
--types
Компилятор создаст только константы и типы, включая переопределенные (
typedef
), из входного IDL-файла, а также типы из импортируемых IDL-файлов, которые используются в типах входного файла.При этом константы и переопределенные типы из импортируемых IDL-файлов не будут явно включены в генерируемые файлы. Если вам необходимо использовать типы из импортируемых файлов в коде, нужно отдельно сгенерировать H-файлы для каждого такого IDL-файла.
--interface
Компилятор создаст файлы, создаваемые с флагом
--types
, а также структуры сообщений запросов и ответов для всех методов этой службы.--client
Компилятор создаст файлы, создаваемые с флагом --
interface
, а также клиентские прокси-объекты и функции их инициализации для всех методов этой службы.--server
Компилятор создаст файлы, создаваемые с флагом --
interface
, а также типы и методы диспетчера этой службы.
Флаги выборочной генерации для CDL-файлов и EDL-файлов:
--types
Компилятор создаст файлы, создаваемые с флагом
--types
для всех служб, предоставляемых этим компонентом.При этом явно включены в генерируемые файлы будут только те типы, которые используются в параметрах интерфейсных методов.
--interface
Компилятор создаст файлы, создаваемые с флагом
--types
для этого компонента/класса процессов, а также файлы, создаваемые с флагом--interface
для всех предоставляемых этим компонентом.--client
Компилятор создаст файлы, создаваемые с флагом --
interface
, а также клиентские прокси-объекты и функции их инициализации для всех служб, предоставляемых этим компонентом.--server
Компилятор создаст файлы, создаваемые с флагом --
interface
, а также типы и методы диспетчера этого компонента/класса процессов и типы и методы диспетчеров для всех служб, предоставляемых этим компонентом.
nk-psl-gen-c
Компилятор nk-psl-gen-c
генерирует исходный код модуля безопасности Kaspersky Security Module на основе описания политики безопасности решения а также EDL-, CDL и IDL-описаний, входящих в решение. Этот код используется скриптом makekss.
Компилятор nk-psl-gen-c
также позволяет генерировать и запускать код тестов для политики безопасности решения, написанных на языке PAL.
Синтаксис использования компилятора nk-psl-gen-c
:
nk-psl-gen-c [-I PATH][-o PATH][--audit PATH][--tests ARG][--help][--version] FILE
Параметры:
FILE
Путь к PSL-описанию политики безопасности решения (
security.psl
)-I,--include-dir PATH
Путь к директории, содержащей вспомогательные файлы, необходимые для генерации транспортных методов и типов. По умолчанию эти файлы располагаются в директории
/opt/KasperskyOS-Community-Edition-<version>/sysroot-aarch64-kos/include
.Компилятору
nk-psl-gen-c
потребуется доступ ко всем EDL- CDL- и IDL-описаниям. Для того, чтобы компиляторnk-psl-gen-c
мог найти эти описания, нужно передать пути к расположению этих описаний в параметре-I
.Чтобы указать более одной директории, можно использовать несколько параметров
-I
.-o,--output PATH
Путь к создаваемому файлу, содержащему код модуля безопасности.
-t, --tests ARG
Флаг контроля генерации кода и запуска тестов для политики безопасности решения. Может принимать следующие значения:
skip
– код тестов не генерируется. Это значение используется по умолчанию, если флаг--tests
не указан.generate
– код тестов генерируется, но не компилируется и не запускается.run
– код тестов генерируется, компилируется с помощью компилятораgcc
и запускается.
-a, --audit PATH
Путь к создаваемому файлу, содержащему код декодера аудита.
-h, --help
Отображает текст справки.
--version
Отображает версию
nk-psl-gen-c
.
einit
Утилита einit
позволяет автоматизировать создание кода инициализирующей программы Einit.
Утилита einit
принимает описание инициализации решения (по умолчанию файл init.yaml
), а также EDL-, CDL- и IDL-описания, и создает файл с исходным кодом инициализирующей программы Einit
. Программу Einit
затем необходимо собрать с помощью кросс-компилятора языка C, поставляемого в KasperskyOS Community Edition.
Синтаксис использования утилиты einit
:
einit -I PATH -o PATH [--help] FILE
Параметры:
FILE
Путь к файлу
init.yaml
.-I PATH
Путь к директории, содержащей вспомогательные файлы (включая EDL-, CDL- и IDL-описания), необходимые для генерации инициализирующей программы. По умолчанию эти файлы располагаются в директории
/opt/KasperskyOS-Community-Edition-<version>/sysroot-aarch64-kos/include
.-o, --out-file PATH
Путь к создаваемому .c файлу с кодом инициализирующей программы.
-h, --help
Отображает текст справки.
makekss
Скрипт makekss
создает модуль безопасности Kaspersky Security Module.
Скрипт вызывает компилятор nk-psl-gen-c для генерации исходного кода модуля безопасности и затем компилирует полученный код, вызывая компилятор C, поставляемый в KasperskyOS Community Edition.
Скрипт создает модуль безопасности из описания политики безопасности решения.
Синтаксис использования скрипта makekss
:
makekss --target=ARCH --module=PATH --with-nk="PATH" --with-nktype="TYPE" --with-nkflags="FLAGS" [--output="PATH"][--help][--with-cc="PATH"][--with-cflags="FLAGS"] FILE
Параметры:
FILE
Путь к верхнеуровневому файлу описания политики безопасности решения.
--target=ARCH
Архитектура процессора, для которой производится сборка.
--module=-lPATH
Путь к библиотеке
ksm_kss
. Этот ключ передается компилятору C для компоновки с этой библиотекой.--with-nk=PATH
Путь к компилятору
nk-psl-gen-c
, который будет использоваться для генерации исходного кода модуля безопасности. По умолчанию компилятор расположен в/opt/KasperskyOS-Community-Edition-<version>/toolchain/bin/nk-psl-gen-c
.--with-nktype="TYPE"
Указывает на тип компилятора NK, который будет использоваться. Для использования компилятора
nk-psl-gen-c
, необходимо указать типpsl
.--with-nkflags="FLAGS"
Параметры, с которыми вызывается компилятор
nk-psl-gen-c
.Компилятору
nk-psl-gen-c
потребуется доступ ко всем EDL- CDL- и IDL-описаниям. Для того, чтобы компиляторnk-psl-gen-c
мог найти эти описания, нужно передать пути к расположению этих описаний в параметре--with-nkflags
, используя параметр-I
компилятораnk-psl-gen-c
.--output=PATH
Путь к создаваемому файлу модуля безопасности.
--with-cc=PATH
Путь к компилятору C, который будет использоваться для сборки модуля безопасности. По умолчанию используется компилятор, поставляемый в KasperskyOS Community Edition.
--with-cflags=FLAGS
Параметры, с которыми вызывается компилятор C.
-h, --help
Отображает текст справки.
makeimg
Скрипт makeimg
создает финальный загружаемый образ решения на базе KasperskyOS со всеми исполняемыми файлами программ и модулем Kaspersky Security Module.
Скрипт принимает список файлов, включая исполняемые файлы всех программ, которые нужно добавить в ROMFS загружаемого образа, и создает следующие файлы:
- образ решения;
- образ решения без таблиц символов (
.stripped
); - образ решения с отладочными таблицами символов (
.dbg.syms
).
Синтаксис использования скрипта makeimg:
makeimg --target=ARCH --sys-root=PATH
--with-toolchain=PATH --ldscript=PATH --img-src=PATH
--img-dst=PATH
--with-init=PATH
[--with-extra-asflags=FLAGS][--with-extra-ldflags=FLAGS][--help] FILES
Параметры:
FILES
Список путей к файлам, включая исполняемые файлы всех программ, которые нужно добавить в ROMFS.
Модуль безопасности (
ksm.module
) нужно указывать явно, иначе он не будет включен в образ решения. ПрограммуEinit
указывать не нужно, так как она будет включена в образ решения автоматически.--target=ARCH
Архитектура, для которой производится сборка.
--sys-root=PATH
Путь к корневой директории sysroot. По умолчанию эта директория расположена в
/opt/KasperskyOS-Community-Edition-<version>/sysroot-aarch64-kos/
.--with-toolchain=PATH
Путь к набору вспомогательных утилит, необходимых для сборки решения. По умолчанию эти утилиты расположены в
/opt/KasperskyOS-Community-Edition-<version>/toolchain/
.--ldscript=PATH
Путь к скрипту компоновщика, необходимому для сборки решения. По умолчанию этот скрипт расположен в
/opt/KasperskyOS-Community-Edition-<version>/libexec/aarch64-kos/
.--img-src=PATH
Путь к заранее скомпилированному ядру KasperskyOS. По умолчанию ядро расположено в
/opt/KasperskyOS-Community-Edition-<version>/libexec/aarch64-kos/
.--img-dst=PATH
Путь к создаваемому файлу образа.
--with-init=PATH
Путь к исполняемому файлу инициализирующей программы
Einit
.--with-extra-asflags=FLAGS
Дополнительные флаги для ассемблера AS.
--with-extra-ldflags=FLAGS
Дополнительные флаги для компоновщика LD.
-h, --help
Отображает текст справки.