2010-06-29 8 views
22

Ich habe ein Problem mit modprobe Befehl ... Ich kompiliert das Hallo Welt-Modul und lud es mit insmod, es funktioniert gut und wenn ich tun lsmod, kann ich es in der sehen Ausgabeliste. Aber wenn ich dieses Modul eines mit modprobe ich einen fatalen Fehler bin immer:"FATAL: Modul nicht gefunden Fehler" mit modprobe

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

Hier ist der Modulcode:

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

und 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 

Antwort

23

Der Grund dafür ist, dass modprobe in /lib/modules/$(uname -r) für die Module sieht und daher nicht mit dem lokalen Dateipfad arbeiten. Das ist einer der Unterschiede zwischen modprobe und insmod.

+0

also, wenn ich mein Modul in '/ lib/modules/$ (uname -r)' Verzeichnis dann wird es funktionieren? –

+0

@Ravi Gupta: Das wäre meine beste Schätzung. – che

+0

versuchen, es in/lib/modules/$ (uname -r)/misc/ –

2

Versuchen insmod statt modprobe. Modprobe sieht in dem Modul Verzeichnis/lib/modules/uname -r für alle Module und andere Dateien

5

Das Beste ist, um tatsächlich den Kernel Make-Datei zu verwenden, um das Modul zu installieren:

ist hier sind Schnipsel zu Ihrem Makefile

um die Spitze Add hinzuzufügen:

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 

um das Ende hinzufügen:

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

und dann können Sie

sudo make install 

dies wird es ausdrückte entweder in/lib/modules/$ (uname -r)/extra/

oder/lib/modules/$ (uname ausgeben -r)/misc/

und entsprechend

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) 

OR

depmod run

dann tun modprobe module_name (ohne .ko Erweiterung)

0

Ich denke, es sollte Eingabe Ihrer your_module.ko in/lib/modules/uname -r /modules.dep und in/lib/modules/uname -r /modules.dep.bin für "modprobe your_module" Befehl zu arbeiten

Verwandte Themen