2010-06-29 20 views
22

Tengo un problema con el comando modprobe ... He compilado el módulo hello world y lo he cargado con insmod, funciona bien y cuando lo hago lsmod, puedo verlo en el lista de salida. Pero cuando inserto este módulo utilizando modprobe estoy recibiendo un error fatal:"FATAL: Error de módulo no encontrado" usando modprobe

[email protected]:/home/ravi# modprobe ./hello.ko 
FATAL: Module ./hello.ko not found. 
[email protected]:/home/ravi# 

Aquí es el código del módulo:

#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); 

y 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 

Respuesta

23

La razón es que modprobe mira en /lib/modules/$(uname -r) para los módulos y por lo tanto no va a funcionar con la ruta de archivos local. Esa es una de las diferencias entre modprobe y insmod.

+0

así que si pongo mi módulo en el directorio '/ lib/modules/$ (uname -r)', ¿funcionará? –

+0

@ Ravi Gupta: Esa sería mi mejor suposición. – che

+0

intente ponerlo en/lib/modules/$ (uname -r)/misc/ –

2

Trate insmod en lugar de modprobe. Modprobe busca en el directorio módulo/lib/modules/uname -r para todos los módulos y otros archivos

5

Lo mejor es utilizar realmente el makefile kernel para instalar el módulo:

Aquí es decir son fragmentos para añadir a su Makefile

en la parte superior complemento:

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 

alrededor del final agregar:

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

y luego puede emitir

sudo make install 

esto va a ponerlo bien en/lib/modules/$ (uname -r)/extra/

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

y ejecutar depmod apropiadamente

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

O

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

luego hacer modprobe module_name (sin .ko extensión)

0

creo que no debería haber entrada de su your_module.ko en/lib/modules/uname -r /modules.dep y en/lib/modules/uname -r /modules.dep.bin para el comando "modprobe your_module" para trabajar

Cuestiones relacionadas