web-dev-qa-db-fra.com

Erreur: 'Opération non autorisée' dans insmod et modprobe

J'essaie d'insérer un module dans Ubuntu 14.04, mais les deux

Sudo insmod xpcie.ko

et

Sudo modprobe xpcie

renvoyer l'erreur

could not insert xpcie.ko: Operation not permitted

J'ai placé une copie de xpcie.ko dans/lib/modules/uname -r/kernel/drivers et j'ai exécuté

depmod -a xpcie.ko

Ce module provient de XAPP1022 de Xilinx. Il a été conçu à l’origine pour Fedora 9. Cela pourrait-il être la cause de cette erreur, et si oui, que devrais-je changer dans le module? Si non, quoi d'autre pourrait causer cela?

Merci.

MODIFIER:

uname -r

Retourne 3.10.40-gb271e8f

2
enivium

Il s'avère que si un module essaie d'initialiser un périphérique en utilisant un nombre majeur déjà pris, insmod et modprobe échoueront avec le message d'erreur

operation not permitted

Pour le XAPP 1022 en particulier, le pilote essaie d'enregistrer un périphérique à caractères auquel il attribue le numéro majeur 240. Il y avait déjà un autre périphérique enregistré avec ce numéro majeur sur mon ordinateur, ce qui entraînait l'échec de la fonction init du pilote.

La solution est de changer

int gDrvrMajor = 240;

à

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

dans xpcie.c. Il faut alors aussi changer

mknod /dev/xpcie c 240 1

à

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

dans make_device.

2
enivium