Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 为CentOS 7编译mptfc内核模块--insmod返回;无效参数";_Linux_Linux Kernel_Centos7_Kernel Module - Fatal编程技术网

Linux 为CentOS 7编译mptfc内核模块--insmod返回;无效参数";

Linux 为CentOS 7编译mptfc内核模块--insmod返回;无效参数";,linux,linux-kernel,centos7,kernel-module,Linux,Linux Kernel,Centos7,Kernel Module,我正在尝试为CentOS 7机箱编译mptfc驱动程序。出于依赖性原因,我们需要在CentOS 7上支持一些遗留硬件 mptfc包含在CentOS 6中,但在CentOS 7中,他们决定不再将其包含在内核中。(来源:) 我注意到elrepo为驱动程序创建了一个RPM(基于此),但我不得不挖掘它。最终在一些提供归档功能的镜像中找到了它,但计算机无法完成内核的引导。不幸的是,我没有那个输出来显示,但它并不漂亮。大量错误消息 因为我不能使用CentOS 6,我决定下一个选择是自己编译内核模块。我从来没

我正在尝试为CentOS 7机箱编译mptfc驱动程序。出于依赖性原因,我们需要在CentOS 7上支持一些遗留硬件

mptfc包含在CentOS 6中,但在CentOS 7中,他们决定不再将其包含在内核中。(来源:)

我注意到elrepo为驱动程序创建了一个RPM(基于此),但我不得不挖掘它。最终在一些提供归档功能的镜像中找到了它,但计算机无法完成内核的引导。不幸的是,我没有那个输出来显示,但它并不漂亮。大量错误消息

因为我不能使用CentOS 6,我决定下一个选择是自己编译内核模块。我从来没有这样做过,所以我遇到了一些问题

首先,我使用以下方法下载了我正在运行的内核(3.10.0-957.el7.x86_64)的头文件:

然后,我在另一台机器上从下载了Linux 3.10的源代码。我将
drivers/message/fusion
目录从源代码复制到我正在编译的机器上,并将其放在我的主文件夹中。我将Makefile修改为如下所示:

...
obj-$(CONFIG_FUSION_SPI)        += mptbase.o mptscsih.o mptspi.o
obj-m           += mptbase.o mptscsih.o mptfc.o
obj-m   += mptbase.o mptscsih.o mptsas.o
obj-$(CONFIG_FUSION_CTL)        += mptctl.o
obj-$(CONFIG_FUSION_LAN)        += mptlan.o

KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
        $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
然后我运行了
make
。它编译得很好,但当我尝试执行以下操作时:

insmod mptfc.ko
[root@host fusion]# insmod mptfc.ko
insmod: ERROR: could not insert module mptfc.ko: Invalid parameters
我得到以下信息:

insmod mptfc.ko
[root@host fusion]# insmod mptfc.ko
insmod: ERROR: could not insert module mptfc.ko: Invalid parameters
和dmesg返回:

[root@host fusion]# dmesg | tail
[184711.751960] mptfc: disagrees about version of symbol mptscsih_qcmd
[184711.751970] mptfc: Unknown symbol mptscsih_qcmd (err -22)
我以前从未编译过内核模块,所以我不确定从哪里开始调试

我的最终目标是让使用mptfc的传统pci卡工作。如果有更好的方法让驱动程序进入内核并工作,那也可以