Ubuntu 无法将模块插入内核
这是我对内核模块的介绍。我正在跟进,刚刚编写了我的第一个简单模块 这是我的模块文件Ubuntu 无法将模块插入内核,ubuntu,linux-kernel,kernel-module,insmod,Ubuntu,Linux Kernel,Kernel Module,Insmod,这是我对内核模块的介绍。我正在跟进,刚刚编写了我的第一个简单模块 这是我的模块文件hello.c /* * hello.c − The simplest kernel module. */ #include <linux/module.h> /* Needed by all modules */ #include <linux/kernel.h> /* Needed for KERN_INFO */ int init_module(void)
hello.c
/*
* hello.c − The simplest kernel module.
*/
#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_INFO */
int init_module(void)
{
printk(KERN_INFO "Hello world 1.\n");
/*
* A non 0 return means init_module failed; module can't be loaded.
*/
return 0;
}
void cleanup_module(void){
printk(KERN_INFO "Goodbye world 1.\n");
}
module_init(init_module);
module_exit(cleanup_module);
当我运行make
命令时,我得到的是
make-C/lib/modules/4.15.0-45-generic/build M=/home/nailaakbar模块
make:正在输入目录“/usr/src/linux-headers-4.15.0-45-generic”
构建模块,第2阶段
modpost0模块
make:离开目录“/usr/src/linux-headers-4.15.0-45-generic”
但是现在,当我尝试使用这个命令将它插入内核时
sudo insmod hello.k
我犯了这个错误
insmod:错误:无法加载模块hello.ko:没有这样的文件或目录
我尝试过不同的解决方案,比如使两个函数都是静态的,或者更改文件位置,但都没有效果
目前,我正在桌面上运行所有这些命令,并使用双线程
引导linux环境
谁能帮我弄清楚我做错了什么
可能的重复问题实际上解决了我的问题,但不是直接解决了我的问题。在我的问题搜索过程中,我问了那个问题,但没有得到答案。实际上,这是对我的问题的一条评论,改变了我对错误的看法,然后提到的答案解决了我的问题。正如您从构建日志中看到的,没有构建任何模块(
MODPOST 0模块
)。因此,试图加载模块只是一种浪费。顺便说一句,构建日志应该是文本形式的,它允许搜索它的单词和短语,而不是以图像的形式。请用您的问题解决这个问题。以文本形式更新日志..Hm,您的主目录下是否有hello.c
和Makefile
?这不是一个错误,只是为了确保:通常,主目录中有子目录。您的Makefile中有非标准的破折号(-
)。因此,您不需要分配对Linux内核构建系统有特殊意义的obj-m
。这正好说明了这个问题。你的问题似乎是答案对应的问题的重复。重复意味着你有相同的问题,可能用不同的描述来表达。重复并不意味着你的问题将立即被删除。这仅仅意味着问题已经得到了回答(在其他地方),所以我们不需要重复答案。如果其他人发现“无法加载模块”错误,但没有注意到MODPOST 0模块
行,则他/她将找到您的问题。然后,使用重复链接,他将找到原始的问题描述和答案。从构建日志中可以看到,没有构建模块(MODPOST 0模块
)。因此,试图加载模块只是一种浪费。顺便说一句,构建日志应该是文本形式的,它允许搜索它的单词和短语,而不是以图像的形式。请用您的问题解决这个问题。以文本形式更新日志..Hm,您的主目录下是否有hello.c
和Makefile
?这不是一个错误,只是为了确保:通常,主目录中有子目录。您的Makefile中有非标准的破折号(-
)。因此,您不需要分配对Linux内核构建系统有特殊意义的obj-m
。这正好说明了这个问题。你的问题似乎是答案对应的问题的重复。重复意味着你有相同的问题,可能用不同的描述来表达。重复并不意味着你的问题将立即被删除。这仅仅意味着问题已经得到了回答(在其他地方),所以我们不需要重复答案。如果其他人发现“无法加载模块”错误,但没有注意到MODPOST 0模块
行,则他/她将找到您的问题。然后,使用重复链接,他将在上面找到原始问题描述和答案。
sudo insmod hello.k