Работа с расширением для Visual Studio Code
Перед изучением сценария необходимо получить и установить SDK.
Расширение KasperskyOS SDK Extension for Visual Studio Code обеспечивает интеграцию KasperskyOS Community Edition SDK с редактором исходного кода Visual Studio Code.
Расширение KasperskyOS SDK Extension для Microsoft Visual Studio Code содержится только в deb-пакете для работы под управлением эмулятора QEMU.
Последовательно выполнив приведенные в этом разделе инструкции, вы запустите простые примеры на языке С и Rust в эмуляторе QEMU, используя при этом привычную среду разработки Microsoft Visual Studio Code.
Ознакомление с примером hello на языке С
- Скопируйте директорию с исходным кодом примера hello в домашнюю директорию, выполнив следующую команду:
cp -r /opt/KasperskyOS-Community-Edition-Qemu-<version>/examples/hello/ ~/kasperskyos_hello
Этот шаг необходим, так как сборку примеров нужно выполнять в директории, к которой у вас есть доступ на запись.
- Откройте директорию с кодом примера в редакторе Visual Studio Code.
- Ознакомьтесь с содержимым директории. Исходный код примера hello состоит из следующих файлов:
.
├── CMakeLists.txt # Корневой файл CMakeLists.txt, содержащий общие инструкции сборки для всего
│ # решения на базе KasperskyOS.
├── einit
│ ├── CMakeLists.txt # Файл CMakeLists.txt для сборки загрузочного образа KasperskyOS.
│ └── src
│ ├── initial_install.json # Файл содержит список KPA-пакетов, которые должны быть установлены при первом запуске KasperskyOS. Используется системной программой ServiceManager.
│ ├── security.psl # Описание политики безопасности, которое используется системой сборки для автоматической генерации модуля безопасности.
│ └── system_services.json # Файл содержит список установленных программ, которые должны запускаться каждый раз при запуске KasperskyOS. Используется системной программой ServiceManager.
├── hello
│ ├── CMakeLists.txt # Файлы CMakeLists.txt для сборки прикладной программы hello и ее упаковки в KPA-пакет.
│ └── src
│ └── hello.c # Исходный код прикладной программы hello
├── README.md # Инструкции по сборке примера.
└── resources
└── xdl
└── hello
└── Hello.edl # Описание компонента решения на языке EDL. Необходимо для создания политики безопасности решения.
# Программа
Helloимеет минимально возможное описание – EDL-файл, в котором# указано имя класса процессов.
Примеры из состава KasperskyOS Community Edition SDK собираются с использованием системы сборки CMake в образ решения на базе KasperskyOS, который впоследствии запускается в эмуляторе или на аппаратной платформе.
Образ ядра, а также набор системных программ KasperskyOS поставляются в составе KasperskyOS Community Edition SDK. Прикладные программы, входящие в решение, собираются из файлов исходного кода примера с использованием файлов сборки
CMakeLists.txt.Пример hello состоит из одной прикладной программы hello, которая выводит текст
"Hello world!"в стандартный поток ошибок.Остальные файлы в директории примера необходимы для сборки программы hello, сборки загрузочного образа, а также для создания политики безопасности решения. Сборка и запуск примера описаны ниже в подразделе "Работа с примером в расширении для Visual Studio Code".
Ознакомление с примерами на языке Rust
- Скопируйте директорию с исходным кодом примера hello_from_rust в домашнюю директорию, выполнив следующую команду:
cp -r /opt/KasperskyOS-Community-Edition-Qemu-<version>/examples/hello_from_rust/ ~/kasperskyos_hello_from_rust
Этот шаг необходим, так как сборку примеров нужно выполнять в директории, к которой у вас есть доступ на запись.
- Откройте директорию с кодом примера в редакторе Visual Studio Code.
- Ознакомьтесь с содержимым директории. Исходный код примера hello_from_rust состоит из следующих файлов:
.
├── CMakeLists.txt # Корневой файл CMakeLists.txt, содержащий общие инструкции сборки для всего решения на базе KasperskyOS.
├── einit
│ ├── CMakeLists.txt # Файл CMakeLists.txt для сборки загрузочного образа KasperskyOS.
│ └── src
│ ├── initial_install.json # Файл содержит список KPA-пакетов, которые должны быть установлены при первом запуске KasperskyOS. Используется системной программой ServiceManager.
│ ├── security.psl # Описание политики безопасности, которое используется системой сборки для автоматической генерации модуля безопасности.
│ └── system_services.json # Файл содержит список установленных программ, которые должны запускаться каждый раз при запуске KasperskyOS. Используется системной программой ServiceManager.
├── hello
│ ├── build.rs # Специальный скрипт сборки в языке Rust.
│ ├── Cargo.toml # Главный конфигурационный файл и манифест проекта в языке Rust.
│ ├── CMakeLists.txt # Файлы CMakeLists.txt для сборки прикладной программы hello.
│ └── src
│ └── main.rs # Исходный код прикладной программы hello.
├── README.md
└── resources
└── xdl
└── hello_from_rust
└── Hello.edl # Описание компонента решения на языке EDL. Необходимо для создания политики безопасности решения.
# Программа
Helloимеет минимально возможное описание – EDL-файл, в котором# указано имя класса процессов.
Файл политики безопасности security.psl аналогичен соответствующим файлам из проектов на языке С. В нем отсутствуют различия для языков программирования, так как политика безопасности не зависит от языка, на котором реализован проект.
Сборка и запуск примера аналогична примеру hello на языке С. Сборка и запуск примера описаны ниже в подразделе "Работа с примером в расширении для Visual Studio Code".
- Рассмотрим следующий пример на языке Rust. Скопируйте директорию с исходным кодом примера hello_corrosion в домашнюю директорию, выполнив следующую команду:
cp -r /opt/KasperskyOS-Community-Edition-Qemu-<version>/examples/hello_corrosion/ ~/kasperskyos_hello_corrosion
- Откройте директорию с кодом примера в редакторе Visual Studio Code.
- Этот пример аналогичен примеру hello_from_rust за исключением того, что в файл CMakeLists.txt добавлена функция corrosion_import_crate, которая интегрирует программу, разработанную на Rust, в проект CMake. При выполнении этой функции скомпилируется исполняемый файл hello, который и будет включен в решение на основе KasperskyOS. Подробнее см. "Пример hello_corrosion".
Работа с примером в расширении для Visual Studio Code
Расширение KasperskyOS SDK Extension for Visual Studio Code автоматически обнаруживает в открытом рабочем пространстве проект решения на базе KasperskyOS и активируется.
Чтобы вручную активировать расширение, в директории с примером выполните команду KOS: Activate extension in this directory. в палитре команд Visual Studio Code.
Активированное расширение добавляет кнопки на нижнюю панель редактора кода Visual Studio Code:

Кнопки расширения в нижней панели Visual Studio Code
- Убедитесь, что директория с кодом примера hello открыта в редакторе Visual Studio Code и расширение активировано.
- Нажмите на кнопку Run CMake (
) в нижней панели Visual Studio Code.
Расширение запустит скрипты для настройки директории сборки текущего проекта для выбранной архитектуры сборки.
- Нажмите на кнопку выбора цели сборки (по умолчанию all) в нижней панели Visual Studio Code и выберите цель сборки sim.
- Нажмите на кнопку Build the selected target (
) в нижней панели Visual Studio Code.
После сборки образа решения инициируется запуск примера в эмуляторе QEMU в текущем окне терминала Visual Studio Code.
Вы увидите журнал загрузки KasperskyOS и сообщение
"Hello world!", выведенное программой hello в стандартный поток ошибок.
Ознакомление с примером политики безопасности
Политика безопасности решения на базе KasperskyOS позволяет разрешать и запрещать взаимодействия процессов между собой и ядром KasperskyOS.
Чтобы создать базовое описание политики безопасности в примере hello:
- Нажмите на клавишу F1.
- Выполните команду
KOS: Generate policy file for current projectв появившейся в верхней части окна командной строке. - Выберите пункт
Grant necessary permissionsв этом же окне. - Ознакомьтесь с содержимым файла базовой политики безопасности в сгенерированном файле.
Теперь вы можете редактировать политику для получения более сложных правил взаимодействия в вашем решении.
Связанные разделы:
Расширение KasperskyOS SDK Extension for Visual Studio Code
Пример hello
Пример hello_corrosion
Разработка политик безопасности