gpt4 book ai didi

linux - 无法在 debian 8 中 insmod hello_world 内核模块

转载 作者:太空宇宙 更新时间:2023-11-04 12:58:17 25 4
gpt4 key购买 nike

我不明白为什么 insmod 会出现 Invalid parameters 错误(在 dmesg 中看不到任何内容):

$ sudo insmod hello.ko
insmod: ERROR: could not insert module hello.ko: Invalid parameters

$ sudo insmod /hello.ko
insmod: ERROR: could not load module /hello.ko: No such file or directory

我的模块中没有参数。这只是一个 Hello World 的例子。

我的环境:

$ uname -r
3.16.0-4-amd64

我已经安装了所有可能的内核头文件包:

linux-headers-3.16.0-4-all
linux-headers-3.16.0-4-all-amd64
linux-headers-3.16.0-4-amd64
linux-headers-3.16.0-4-common
linux-headers-amd64

我的代码:

#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");
return 0;
}

void cleanup_module(void)
{
printk(KERN_INFO "Goodbye world 1.\n");
}

MODULE_LICENSE("GPL");

我使用以下 Makefile:

obj-m += hello.o

all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

制作输出:

$制作

make -C /lib/modules/3.16.0-4-amd64/build M=/home/user/c.driver/driver-1 modules
make[1]: Entering directory '/usr/src/linux-headers-3.16.0-4-amd64'
Makefile:10: *** mixed implicit and normal rules: deprecated syntax
make[1]: Entering directory `/usr/src/linux-headers-3.16.0-4-amd64'
CC [M] /home/user/c.driver/driver-1/hello.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/user/c.driver/driver-1/hello.mod.o
LD [M] /home/user/c.driver/driver-1/hello.ko
make[1]: Leaving directory '/usr/src/linux-headers-3.16.0-4-amd64'

更新:与 14.04.1-Ubuntu 相同的结果

最佳答案

也许是因为你忘记了:

module_init(init_module);                                                           
module_exit(cleanup_module);

我通常将 init_module() 和 cleanup_module() 声明为静态函数。和其他代码是我的内核模块模板:

#include <linux/module.h>
#include <linux/kernel.h>

static int init_module(void)
{
...
return 0;
}

static void exit_module(void)
{
...
}

module_init(init_module);
module_exit(exit_module);
MODULE_LICENSE("GPL");

关于linux - 无法在 debian 8 中 insmod hello_world 内核模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34991144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com