我在hid模块中做了一些修改。
我可以成功地将它加载到内核v2.6.27.14上。
现在,我愿意在内核v2.6.27.11上加载相同的内核模块
因为两个内核版本的kerbel源文件没有区别
我可以成功地实现它,但是我不能在这个.11内核版本中添加/ insmod
**
ERROR: Module myhid does not exist in /proc/modules
insmod: error inserting 'myhid.ko': -1 Invalid module format**
致以敬意,
发布于 2009-07-15 14:24:02
您不能加载为另一个内核版本编译的模块。模块的源代码没有改变并不意味着二进制文件对于另一个内核版本是相同的。内核内部API的任何接口更改(即使不是直接可见的)都会破坏模块...
因此,内核通过禁止加载为另一个内核版本构建的模块来保持安全。或者,您可以在构建内核时设置MODVERSIONS配置选项。这会将版本信息嵌入到模块使用的所有符号中,幸运的是,您可以将其加载到另一个内核版本中。
如果您的模块使用的任何接口发生了更改,结果将是相同的。
发布于 2009-07-15 14:21:19
看看"modinfo“告诉你什么关于你的模块:
检查它是否被正确编译,是否链接到正确的内核。
$ modinfo hid
filename: /lib/modules/2.6.27.7/kernel/drivers/hid/hid.ko
license: GPL
depends:
vermagic: 2.6.27.7 mod_unload 486
parm: pb_fnmode:Mode of fn key on Apple keyboards (0 = disabled, 1 = fkeyslast, 2 = fkeysfirst) (int)在编译/安装模块时,不要忘记在运行insmod/modprobe之前,必须运行"depmod“(以root身份)来重新构建模块依赖项。
发布于 2009-07-15 14:25:56
谢谢!这是make文件。我下载了HID.O的所有依赖源文件并重命名它们
MAKEFILE
obj-m := myid.o
myhid-objs := my-iddraw.o my-hid-core.o my-hid-input.o my-hid-input-quirk.o
KDIR模块/lib/ := /$(shell uname -r)/build
PWD := $(外壳pwd)
默认值:
$(MAKE) -C $(KDIR) M=$(PWD) moduleshttps://stackoverflow.com/questions/1131650
复制相似问题