内核模块从docker启动用户空间应用程序

时间:2018-04-23 10:52:59

标签: linux docker kernel-module userspace

我有一个内核模块程序,它执行名为binary的用户空间应用程序,如下所示。

    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 / *文件。

这在正常环境中工作得非常好但是当我尝试从docker中修改这个二进制文件时,二进制文件根本就没有启动。

Binary及其依赖库不在主机的rootfs中。他们是码头工人。

当我将这个二进制文件和依赖库移动到托管时,每件事情都很好。

如何在没有任何失败的情况下从docker执行此操作。

0 个答案:

没有答案