Модуль ядра, запускающий пользовательское приложение из докера

У меня есть программа модуля ядра, которая выполняет приложение пользовательского пространства с именем двоичного файла, как показано ниже.

    struct subprocess_info *info;
    static char *envp[] = {
            "HOME=/",
            "TERM=linux",
            "PATH=/sbin:/usr/sbin:/bin:/usr/bin",
            NULL
    };
    static char *binary_path = "/usr/bin/binary";

    char **argv = kmalloc(sizeof(char *[2]), GFP_KERNEL);
    if (!argv)
            return -ENOMEM;

    argv[0] = binary_path;
    argv[1] = NULL;

    info = call_usermodehelper_setup(binary_path, argv, envp, GFP_KERNEL,
                                     NULL, <some_free_function>, NULL);
    if (info) {
            return call_usermodehelper_exec(info, (UMH_WAIT_PROC | UMH_KILLABLE));
    }

Этот тип дизайна должен выполнять двоичный файл, так как он зависит от некоторых файлов /dev/*.

Это работает очень хорошо в обычной среде, но когда я пытаюсь извлечь этот двоичный файл из докера, то двоичный файл вообще не запускается.

Двоичные и зависимые от них библиотеки не находятся в rootfs хоста. Они в докере.

Когда я переместил эти двоичные и зависимые библиотеки на хост, все было хорошо.

Как я могу выполнить это из докера без каких-либо сбоев.

0 ответов

Другие вопросы по тегам