2010-06-29 12 views
22

Mam problem z komendą modprobe ... skompilowałem moduł Hello World i załadowałem go insmod, działa dobrze i kiedy wykonuję lsmod, widzę go w lista wyjściowa. Ale kiedy wstawić ten moduł używając modprobe jestem coraz fatalnym błędzie:"FATAL: błąd modułu nie znaleziono" przy użyciu modprobe

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

Oto kod modułu:

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

i 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 

Odpowiedz

23

Powodem jest to, że wygląda na /lib/modules/$(uname -r)modprobe dla modułów i dlatego nie będzie współpracować z lokalną ścieżkę do pliku. To jedna z różnic między modprobe i insmod.

+0

więc jeśli umieściłem mój moduł w katalogu '/ lib/modules/$ (uname -r)' to czy będzie działać? –

+0

@Ravi Gupta: To byłoby moje najlepsze przypuszczenie. – che

+0

spróbuj umieścić w/lib/modules/$ (uname -r)/misc/ –

2

Spróbuj insmod zamiast modprobe. Modprobe wygląda w katalogu moduł/lib/modules/uname -r dla wszystkich modułów i innych plików

5

Najlepszą rzeczą jest to, aby rzeczywiście skorzystać z makefile jądra do zainstalowania modułu:

Oto są fragmenty dodać do swojej Makefile

wokół górnego koszyka:

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 

na koniec dodaj:

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

a następnie można wydać

sudo make install 

będzie umieścić go w katalogu/lib/modules/$ (uname -r)/extra/

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

i uruchomić depmod odpowiednio

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

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

zrób modprobe nazwa_modułu (bez .ko rozszerzenia)

0

myślę nie powinno być wprowadzanie twojego your_module.ko do/lib/modules/uname -r /modules.dep oraz w/lib/modules/uname -r /modules.dep.bin dla polecenia "modprobe your_module" do pracy

Powiązane problemy