错误:insmod 和 modprobe 均出现“操作不允许”

错误:insmod 和 modprobe 均出现“操作不允许”

我正在尝试在 Ubuntu 14.04 中插入一个模块,但

sudo insmod xpcie.ko

sudo modprobe xpcie

返回错误

could not insert xpcie.ko: Operation not permitted

我已将 xpcie.ko 的副本放在 /lib/modules/uname -r/kernel/drivers 中,并已运行

depmod -a xpcie.ko

该模块来自 Xilinx 的XAPP1022。它最初是为 Fedora 9 设计的。这可能是导致此错误的原因吗?如果是,我需要在模块中更改什么?如果不是,还有什么原因导致此错误?

谢谢。

编辑:

uname -r

返回 3.10.40-gb271e8f

答案1

事实证明,如果模块尝试使用已被占用的主设备号来初始化设备,则 insmod 和 modprobe 将失败并显示错误消息

operation not permitted

特别是对于 XAPP 1022,驱动程序尝试注册一个字符设备,并为其分配主编号 240。我的机器上已经有另一个使用该主编号注册的设备,这导致驱动程序无法执行其初始化功能。

解决方案是改变

int gDrvrMajor = 240;

int gDrvrMajor = {some major number that isn't taken}

在 xpcie.c 中。然后还需要更改

mknod /dev/xpcie c 240 1

mknod /dev/xpcie c {same other major number as above} 1

在 make_device 内部。

相关内容