Критические изменения в версии 2.0
Критические изменения в версии 2.0
В связи с изменениями в компонентах SDK в версии 2.0, вам может быть необходимо внести изменения в прикладной код, разработанный с использованием версии KasperskyOS Community Edition SDK 1.4, перед тем как использовать его с новой версией.
В версии 2.0 были введены следующие критические изменения в компоненты SDK.
Общие изменения
- Из состава SDK удален компонент NameServer. Для динамического создания IPC-каналов необходимо использовать API системной программы DCM.
- Из состава SDK удален компонент klog. Сообщения от Kaspersky Security Module теперь выводятся в консоль ядра, для их сбора рекомендуется использовать logrr.
- Компонент PackageManager больше не использует базу данных для хранения информации об установленных KPA-пакетах; удалены аргументы, определяющие путь к базе данных в
create_package_manager_entityи в функциях предустановки пакетов (например, kl_install_packages). - Все утилиты в
sys/rump/libcliappиз${name}_entityв${name}_serviceпереименованы, изменены их CMake‑компоненты и цели (например,PING_ENTITY->PING_SERVICE,rump::ping_entity->rump::ping_service). При использованииfind_package(rump REQUIRED COMPONENTS …)нужно указывать новые имена. - Механизм контейнеров, связанный с FsImageManager, удален из компонента ExecutionManager. В манифесте KPA-пакета остается ключ
privateStorageдля обратной совместимости, но он будет игнорироваться системными программами PackageManager и ExecutionManager. - Из API системной программы BlobContainer удален интерфейс
EntityLauncher.StartEntity. - Из 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.
Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!