web-dev-qa-db-fra.com

"FATAL: erreur du module introuvable" à l'aide de modprobe

J'ai un problème avec la commande modprobe ... J'ai compilé le module hello world et je l'ai chargé avec insmod, cela fonctionne bien et lorsque je fais lsmod, je peux le voir dans la liste de résultats. Mais quand j'insère ce module en utilisant modprobe, j'obtiens une erreur FATAL:

root@okapi:/home/ravi# modprobe ./hello.ko 
FATAL: Module ./hello.ko not found.
root@okapi:/home/ravi#

Voici le code du module:

#include <linux/init.h>
#include <linux/module.h>

MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void)
{
        printk(KERN_ALERT "Hello, world\n");
        return 0;
}
static void hello_exit(void)
{
        printk(KERN_ALERT "Goodbye, cruel world\n");
}

module_init(hello_init);
module_exit(hello_exit);

et Makefile

obj-m += hello.o

all:
        make -C /lib/modules/$(Shell uname -r)/build M=$(PWD) modules

clean:
        make -C /lib/modules/$(Shell uname -r)/build M=$(PWD) clean
22
Ravi Gupta

La raison en est que modprobe cherche dans /lib/modules/$(uname -r) pour les modules et ne fonctionnera donc pas avec le chemin du fichier local. C'est l'une des différences entre modprobe et insmod.

25
che

La meilleure chose à faire est d’utiliser le makefile du noyau pour installer le module:

Voici des extraits à ajouter à votre Makefile

en haut ajouter:

PWD=$(Shell pwd)
VER=$(Shell uname -r)
KERNEL_BUILD=/lib/modules/$(VER)/build
# Later if you want to package the module binary you can provide an INSTALL_ROOT
# INSTALL_ROOT=/tmp/install-root

vers la fin ajouter:

install:
        $(MAKE) -C $(KERNEL_BUILD) M=$(PWD) \
           INSTALL_MOD_PATH=$(INSTALL_ROOT) modules_install

et alors vous pouvez délivrer 

    Sudo make install

cela le mettra soit dans/lib/modules/$ (uname -r)/extra / 

ou/lib/modules/$ (uname -r)/misc /

et exécuter depmod de manière appropriée

5
Elf King

Essayez insmod au lieu de modprobe. Modprobe Cherche dans le répertoire du module/lib/modules/uname -r tous les modules et autres fichiers

2
Sjoerd

je pense qu'il devrait y avoir une entrée de your_module.ko dans /lib/modules/uname -r/modules.dep et dans /lib/modules/uname -r/modules.dep.bin pour que la commande "modprobe your_module" fonctionne

1
sharath kumar
Insert this in your Makefile

 $(MAKE) -C $(KDIR) M=$(PWD) modules_install                      

 it will install the module in the directory /lib/modules/<var>/extra/
 After make , insert module with modprobe module_name (without .ko extension)

OR

After your normal make, you copy module module_name.ko into   directory  /lib/modules/<var>/extra/

puis modprobe nom_du_module (sans l'extension .ko)

0
Gouse

Assurez-vous que votre réseau est arrêté avant de charger le module:

Sudo stop networking

Cela m'a aidé - https://help.ubuntu.com/community/UbuntuBonding

0
Yaroslav