Компиляция модуля ядра mptfc для CentOS 7 - insmod возвращает «неверные параметры» - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь скомпилировать драйвер mptfc для CentOS 7. У нас есть устаревшее оборудование, которое мы должны поддерживать в CentOS 7 по причинам зависимости.

mptfc был включен в CentOS 6, но в CentOS 7 они решили больше не включать его в ядро. (источник: Redhat )

Я заметил, что elrepo создал RPM для драйвера (из этой статьи ), но мне пришлось его искать. В конце концов нашел его в некоторых зеркалах, которые обеспечивали возможности архивирования, но компьютер не завершил загрузку ядра. К сожалению, у меня нет этого вывода для отображения, но это было не красиво. Много сообщений об ошибках.

Поскольку я не могу использовать CentOS 6, я решил, что следующим выбором будет скомпилировать модуль ядра самостоятельно. Я никогда не делал этого, поэтому сталкиваюсь с несколькими проблемами.

Сначала я скачал заголовки для ядра, которое я запускаю (3.10.0-957.el7.x86_64), используя:

yum install linux-headers

Затем я скачал исходный код на другой машине для Linux 3.10 с Github . Я скопировал каталог 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

И 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)

Я никогда раньше не компилировал модули ядра, поэтому я не уверен, с чего начать отладку.

Моя конечная цель - получить устаревшую карту pci, в которой работает mptfc. Если есть лучший способ получить драйвер в ядре, и он работает, он тоже работает.

...