Код hello.c выглядит привычным и простым для разработчика на языке C – он полностью совместим с POSIX:
hello.c
#include <stdio.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
fprintf(stderr,"Hello world!\n");
return EXIT_SUCCESS;
}
Скомпилируйте этот код с использованием aarch64-kos-clang (входит в состав средств разработки KasperskyOS Community Edition):
aarch64-kos-clang -o Hello hello.c
Имя программы (а значит и имя исполняемого файла) должно начинаться с заглавной буквы.
EDL-описание класса процессов Hello
Статическое описание программы Hello состоит из единственного файла Hello.edl, в котором необходимо прописать имя класса процессов:
Hello.edl
/* После ключевого слова "entity" указано имя класса процессов. */
entity Hello
Имя класса процессов должно начинаться с заглавной буквы. Имя EDL-файла должно совпадать с именем класса, который он описывает.
Создание инициализирующей программы Einit
При загрузке KasperskyOS ядро запускает программу с именем Einit. Программа Einit запускает все остальные программы, входящие в решение, то есть служит инициализирующей программой.
В составе пакета инструментов KasperskyOS Community Edition поставляется утилита einit, которая позволяет сгенерировать код инициализирующей программы (einit.c) на основе init-описания. В приведенном ниже примере файл с init-описанием называется init.yaml, хотя может иметь любое имя.
Подробнее см. "Запуск процессов".
Для того чтобы программа Hello запустилась после загрузки операционной системы, достаточно указать ее имя в файле init.yaml и собрать на его основе программу Einit.
init.yaml
entities:
# Запустить программу "Hello".
- name: Hello
Сборка модуля безопасности
Пример hello содержит простейшую политику безопасности решения (security.psl), разрешающую любые взаимодействия.
Модуль безопасности (ksm.module) собирается на основе security.psl.
Файлы примера
Код примера и скрипты для сборки находятся по следующему пути:
/opt/KasperskyOS-Community-Edition-<version>/examples/hello
Сборка и запуск примера
См. "Сборка и запуск примеров".
Общая схема сборки примера hello выглядит следующим образом:
