2010-06-29 1288 views
22

我有一個modprobe命令的問題...我編譯了世界模塊hello,並加載了它insmod,它工作正常,當我做lsmod,我可以看到它在輸出列表。但是,當我插入使用modprobe我得到一個致命的錯誤該模塊:使用modprobe「致命的:模塊未找到錯誤」使用modprobe

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

這裏的模塊代碼:

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

和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 

回答

23

的原因是,modprobe眺望/lib/modules/$(uname -r)的模塊,因此不會與本地文件路徑工作。這是modprobeinsmod之間的差異之一。

+0

所以如果我把我的模塊放在'/ lib/modules/$(uname -r)'目錄下,那麼它會工作嗎? – 2010-06-29 12:24:01

+0

@Ravi Gupta:那將是我最好的猜測。 – che 2010-06-29 21:37:18

+0

嘗試把它放在/ lib/modules/$(uname -r)/ misc/ – 2010-06-29 23:02:28

2

嘗試insmod代替modprobe的。 modprobe的 看起來模塊目錄/ lib/modules目錄/ uname -r所有模塊和其他 文件

5

的最好的事情是實際使用的內核生成文件來安裝模塊:

這裏是片段添加到您的Makefile

周圍的頂部添加:

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 

附近加:

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

,然後就可以發出

sudo make install 

這將會把它無論是在/ lib/modules目錄/ $(使用uname -r)/額外/

或/ lib/modules目錄/ $(使用uname -r )/雜項/

和運行適當depmod

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/ 

然後執行modprobe的MODULE_NAME(不含.ko擴展名)

0

我認爲應該有在/ lib/modules/uname -r /modules.dep中輸入your_module.ko,在/ lib/modules/uname -r /modules.dep.bin中輸入「modprobe your_module」命令以運行

相關問題