Jump to content

Recommended Posts

Posted

Добрый день.

Пытаюсь собрать конфигурацию с отдельным сетевым драйвером, как это описано в https://support.kaspersky.ru/help/KCE/1.1/ru-RU/vfs_app_build.htm подраздел "Сборка сетевой версии VFS с отдельным сетевым драйвером". В main драйвера делаю DNetRegisterDriver, отрабатывает без ошибки, но драйвер при этом не запускается (переданный _DNetDriverEntry не вызывается). Что было испробовано:

1. При сборке программы-драйвера подключаются библиотеки dnet_implementation и dnet_server. При запуске в qemu не запускается с сообщением Can't initialize task "kl.drivers.DNetSrv". Файл dnet_entity при этом в сборку добавляется автоматически.

2. При сборке программы-драйвера подключаются библиотеки dnet_implementation и dnet_server. При сборке vfs помимо рекомендованных в вышеупомянутой статье параметров добавляю:

set_target_properties (VfsNet PROPERTIES ${dnet_ENTITY}_REPLACEMENT "ds.ModemDriver")

, где "ds.ModemDriver" -- имя сущности драйвера. В таком случае при запуске появляется сообщение:

[2023-09-16T10:28:10.774][Info][ds.VfsNet][29:30][DNETCL] Try to connect to server 'kl.drivers.DNet' with interface 'kl.drivers.DNet.dnet'...

dnet_entity при этом в сборке отсутствует. Нужно клиенту dnet как-то указать, куда подключаться? Не нашел такой возможности.

3. При сборке программы-драйвера подключается библиотека dnet_client. Результат аналогичный п.1.

Подскажите, как все-же правильно реализовать конфигурацию с нестандартным драйвером?

Evgeny.Lapshin
Posted

Здравствуйте!
По вашему запросу зарегистрирован тикет INC000015703155 в службе технической поддержки. Мы предоставим вам ответ, как только будет возможно.

 

Ярослав
Posted

В файле политик psl , есть разрешение на запуск этих процессов ?

Так же в файле init.yaml все процессы прописаны и соединены между собой ?

Posted

Да, не было разрешение на запуск kl.drivers.DNetSrv. Теперь все процессы запускаются, но драйвер после регистрации через DNetRegisterDriver по прежнему не стартует.

Вообще, такая схема с vfs, dnet и драйвером в трех разных процессах имеет право на жизнь?

Ярослав
Posted

А драйвер прописан в init.yaml ?

В 20.09.2023 в 18:32, Segfault сказал:

Вообще, такая схема с vfs, dnet и драйвером в трех разных процессах имеет право на жизнь?

можно 

 

Posted

Добрый день!

 

 

Подключение "нового" драйвера, можно посмотреть на примере embed_ext2_with_separate_vfs  из состава SDK KOS-CE-1.1 .  В этом примере подключаются уже собраные библиотеки (существуюшие драйвера), но так же можно сделать свою реализацию драйвера и включить его в серверный процесс. Это пример показывает как работать с файловой системой. Но также пожно добавить и свою библиотеку реализующую функционал "нового"сетевого  дравера.

 

С уважением,

Altyn Sartaeva | Technical Support Engineer | Kaspersky Lab

 

Posted
8 часов назад, Ярослав сказал:

А драйвер прописан в init.yaml ?

Да, и сам процесс запускается. Файл init.yaml выглядит так:

entities:

# Entity "client"
- name: ds.Client
  connections:
  - target: ds.VfsNet
    id: {var: _VFS_CONNECTION_ID, include: vfs/defs.h}
@INIT_Client_ENTITY_CONNECTIONS+@

- name: ds.VfsNet
@INIT_VfsNet_ENTITY_CONNECTIONS@

- name: ds.ModemDriver
@INIT_ModemDriver_ENTITY_CONNECTIONS@

@INIT_EXTERNAL_ENTITIES@

В программе драйвера (упрощено для теста):

DNetDriver* _DNetDriverEntryTest(void *context)
{
    fprintf(stderr, "_DNetDriverEntryTest()\n");
    return(NULL);
}

int main(void)
{
    fprintf(stderr, "DNetRegisterDriver...\n");
    DNetError err = DNetRegisterDriver(_DNetDriverEntryTest, NULL);
    if(err != DNET_EOK)
    {
        fprintf(stderr, "DNetRegisterDriver failed with %u\n", err);
    }
    fprintf(stderr, "DNetRegisterDriver passed\n");
    
    // ...
}

При запуске DNetRegisterDriver отрабатывает с кодом DNET_EOK, но _DNetDriverEntryTest не вызывается.

 

6 часов назад, Altyn сказал:

Подключение "нового" драйвера, можно посмотреть на примере embed_ext2_with_separate_vfs  

Посмотрел этот пример, вижу, что при компиляции добавляется LWEXT4_LIB. Посмотрел библиотеку liblwext4.a, нашел несколько init функций внутри секции initcall_fs_section, нашел упоминание в vfs/fs.h, там же нашелся REGISTER_FILESYSTEM. Поискал аналогичное для сети, но не нашел.

Ярослав
Posted
В 22.09.2023 в 18:06, Segfault сказал:

Да, и сам процесс запускается. Файл init.yaml выглядит так:

entities:

# Entity "client"
- name: ds.Client
  connections:
  - target: ds.VfsNet
    id: {var: _VFS_CONNECTION_ID, include: vfs/defs.h}
@INIT_Client_ENTITY_CONNECTIONS+@

- name: ds.VfsNet
@INIT_VfsNet_ENTITY_CONNECTIONS@

- name: ds.ModemDriver
@INIT_ModemDriver_ENTITY_CONNECTIONS@

@INIT_EXTERNAL_ENTITIES@

 

Это файл init.yaml.in , этот файл преобразуется в init.yaml и вот его лучше посмотреть , init.yaml файл обычно находится в каталоге build/einit/Einit-.../  

Ярослав
Posted
В 22.09.2023 в 18:06, Segfault сказал:

 

В программе драйвера (упрощено для теста):

DNetDriver* _DNetDriverEntryTest(void *context)
{
    fprintf(stderr, "_DNetDriverEntryTest()\n");
    return(NULL);
}

int main(void)
{
    fprintf(stderr, "DNetRegisterDriver...\n");
    DNetError err = DNetRegisterDriver(_DNetDriverEntryTest, NULL);
    if(err != DNET_EOK)
    {
        fprintf(stderr, "DNetRegisterDriver failed with %u\n", err);
    }
    fprintf(stderr, "DNetRegisterDriver passed\n");
    
    // ...
}

При запуске DNetRegisterDriver отрабатывает с кодом DNET_EOK, но _DNetDriverEntryTest не вызывается.

 

Посмотрел этот пример, вижу, что при компиляции добавляется LWEXT4_LIB. Посмотрел библиотеку liblwext4.a, нашел несколько init функций внутри секции initcall_fs_section, нашел упоминание в vfs/fs.h, там же нашелся REGISTER_FILESYSTEM. Поискал аналогичное для сети, но не нашел.

Вроде понял. ))

Что бы создать драйвер для нового устройства и включить его в существующий API KOS(dnet_class), достаточно сложный процесс. Возможно, на уровни представленного SDK даже не получится.

Конечно, писать свой собственный драйвер, без сетевого стека тоже не то.

 

 

Ivan Ponomarev
Posted

Здравствуйте!

В SDK KOS CE 1.1  не представлен пример создания "нового" сетевого драйвера.  Сейчас можно только подключать существующие драйвера. В разной конфигурации. Что представлено в примерах.

Спасибо!

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now


×
×
  • Create New...