Модуль ядра, запускающий пользовательское приложение из докера
У меня есть программа модуля ядра, которая выполняет приложение пользовательского пространства с именем двоичного файла, как показано ниже.
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 хоста. Они в докере.
Когда я переместил эти двоичные и зависимые библиотеки на хост, все было хорошо.
Как я могу выполнить это из докера без каких-либо сбоев.