首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >insmod:插入内核模块时出错

insmod:插入内核模块时出错
EN

Stack Overflow用户
提问于 2013-04-05 23:11:31
回答 2查看 3.1K关注 0票数 2

我正在尝试实现一个内核模块,它可以访问用户进程的task_struct,我已经知道该进程的ID。我使用find_get_pidpid_task来获取进程的task_struct:

代码语言:javascript
复制
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/sched.h>
#include <linux/pid.h>
#include <linux/pid_namespace.h>

int init_module( void )
{
//Declaring the variables
    int p_id = 6980;    //6980 is the process ID of my user process
    struct pid *pid_struct;
    struct task_struct *task;

// Trying to access the variables of the p_id
    pid_struct = find_get_pid(p_id);
    task = pid_task(pid_struct, PIDTYPE_PID);

//Printing the info from the task_struct
    printk( KERN_INFO "*** [%d]\n",task->pid);
    return 0;
}

void cleanup_module( void )
{
  return;
}

它正在成功编译,我正在获取*.ko文件,但当我试图将它插入内核时,它给了我一个错误:

insmod: error inserting 'main.ko': -1 Unknown symbol in module

Dmesg给出了以下输出:

main: Unknown symbol find_get_pid (err 0)

我不知道该怎么做,如果有人能帮我,我将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-06 04:01:12

仔细检查你想要使用的函数是什么。

还要记住,很多“核心内核”(大概包括frob_task_by_pid_hard和类似的内核)都是GPL-only的,所以除非你声明你的模块的许可证是GPL,否则你哪儿也去不了。也请您填写模块上的其他样板数据: MODULE_AUTHOR、MODULE_DESCRIPTION、MODULE_LICENSE。

票数 2
EN

Stack Overflow用户

发布于 2019-09-30 14:21:58

加载内核模块失败可能还有另一个原因,比如它显示错误为"insmod : error:.ko operation not permitted“。您的内核在最新的PC上使用安全引导选项启动,必须禁用该选项以避免加载/插入内核module.this失败。可以使用以下命令完成此操作。sudo apt install mokutil sudo mokutil -- disable -validation或者您可以搜索如何为您的特定操作系统禁用安全引导选项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15837411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档