Загрузка модуля ядра из приложения пространства пользователя C
Я пытаюсь загрузить модуль ядра из C с помощью kmod, но он не работает вообще. Вот что у меня есть:
#include <stdio.h>
#include <stddef.h>
#include <unistd.h>
#include <stdlib.h>
#include <libkmod.h>
int main(int argc, char **argv){
struct kmod_ctx *ctx;
struct kmod_module *mod;
const char *null_config = NULL;
int err;
ctx = kmod_new(NULL, &null_config);
if(ctx == NULL)
exit(EXIT_FAILURE);
err = kmod_module_new_from_path(ctx, "./my_module.ko", &mod); // <-- module is in same dir as this binary
if(err != 0)
printf("Error creating module from path\n");
err = kmod_module_insert_module(mod, 0, NULL);
if(err != 0)
printf("Error inserting module\n");
kmod_unref(ctx);
}
Я получаю оба printfs, поэтому kmod не может создать модуль по пути, но почему?
PS: я запускаю бинарный файл как root, из того же каталога, что и модуль.