Критические изменения в версии 2.0

30 сентября 2026

ID breaking_changes

В связи с изменениями в компонентах SDK в версии 2.0, вам может быть необходимо внести изменения в прикладной код, разработанный с использованием версии KasperskyOS Community Edition SDK 1.4, перед тем как использовать его с новой версией.

В версии 2.0 были введены следующие критические изменения в компоненты SDK.

Общие изменения

  1. Из состава SDK удален компонент NameServer. Для динамического создания IPC-каналов необходимо использовать API системной программы DCM.
  2. Из состава SDK удален компонент klog. Сообщения от Kaspersky Security Module  теперь выводятся в консоль ядра, для их сбора рекомендуется использовать logrr.
  3. Компонент PackageManager больше не использует базу данных для хранения информации об установленных KPA-пакетах; удалены аргументы, определяющие путь к базе данных в create_package_manager_entity и в функциях предустановки пакетов (например, kl_install_packages).
  4. Все утилиты в sys/rump/libcliapp из ${name}_entity в ${name}_service переименованы, изменены их CMake‑компоненты и цели (например, PING_ENTITY -> PING_SERVICE, rump::ping_entity -> rump::ping_service). При использовании find_package(rump REQUIRED COMPONENTS …) нужно указывать новые имена.
  5. Механизм контейнеров, связанный с FsImageManager, удален из компонента ExecutionManager. В манифесте KPA-пакета остается ключ privateStorage для обратной совместимости, но он будет игнорироваться системными программами PackageManager и ExecutionManager.
  6. Из API системной программы BlobContainer удален интерфейс EntityLauncher.StartEntity.
  7. Из nk‑psl‑gen‑c удален аргумент --audit.

Изменения в API системной программы VFS

  • В vfs::client изменены методы _vfs_open, _vfs_socket и аналогичные: они будут возвращать  Handle  из внутренней таблицы, а не из таблицы ядра. Для получения ядерного дескриптора следует использовать _vfs_get_kernel_handle.
  • В VFS объединены методы vfs_read, vfs_pread, vfs_readv в один универсальный vfs_read.

Изменения в API библиотеки libkos

  • API KnProfilerGetCounters*() удалено; рекомендуется перейти на API KnStat*().
  • Удалены устаревшие интерфейсы read_mdl / write_mdl, рекомендуется использовать механизм MDL.
  • Удалена поддержка RTC PL031: после старта системы KnGetSystemTime будет возвращать 1970‑01‑01T00:00:00 (или значение, указанное через ‑rtc в QEMU), KnGetRtcInfo возвращает rcUnimplemented; время все еще можно установить через KnSetSystemTime(), и ядро будет корректно его возвращать до перезапуска.
  • Приведены к единому стилю имена публичных методов API контейнеров в библиотеке libkos.
  • При ошибке отложенного выделения памяти теперь ядро будет ждать появления свободных страниц вместо генерации исключения EXCEPTION_OVERCOMMIT.

Изменения в API для разработки драйверов

  • Драйвер bsp для Raspberry Pi 4B переведен на получение конфигураций устройств из Device Tree, а не из статической таблицы, названия устройств и конфигураций теперь соответствуют DT.
  • Для Raspberry Pi 4B упрощена конвенция именования объектов в pinctrl: убраны необязательные префиксы (например, kl.drivers.pinctrlModule/pmic@20 -> pmic@20, kl.drivers.pinctrlGpioRange/gpio0 -> gpio0).
  • Изменены сигнатуры инициализирующих и завершающих функций серверных компонентов с интерфейсом безопасности: теперь используется *_securityIidOffset (генерируемый из *.edl.h) вместо *_securityIid. Инициализаторы сделаны устойчивыми к многократному вызову; затронуты библиотеки kdf, blkdev (инициализация  сервера blkdev  инкапсулирована в BlkDevServerInit), pcie, usb.

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