qwerttt 发表于 2015-4-12 09:33:49

ubuntu下简单helloworld模块无法rmmod,求解

本帖最后由 qwerttt 于 2015-4-12 09:37 编辑

初入linux驱动
用VM10.0, ubuntu14.04.2 内核3.16.0

代码很简单
static int __init hello_init(void)
{
        printk(KERN_NOTICE "hello world!\n");
        return 0;
}

static void __exit hello_exit(void)
{
        printk(KERN_NOTICE "hello exit!\n");
}

Makefile代码
ifneq ($(KERNELRELEASE),)

obj-m :=helloworld.o

else
KDIR:=/lib/modules/3.16.0-30-generic/build

all:
        make -C $(KDIR) M=$(PWD) modules
clean:
        rm -f *.ko *.o *.mod.o *.mod.c .symvers

endif

insmod可以加载成功   命令insmodhelloworld.ko
rmmod出现如下错误:命令rmmodhelloworld
rmmod: ERROR: ../libkmod/libkmod-module.c:769 kmod_module_remove_module() could not remove 'helloworld': Device or resource busy
rmmod: ERROR: could not remove module helloworld.ko: Device or resource busy

网上有的说用rmmod -f或是 在/lib/modules/建一个与内核文件名一样的文件夹也没有成功卸载

abutter 发表于 2015-4-12 12:34:59

lsmod 怎么说?

qwerttt 发表于 2015-4-12 13:12:08

lsmod有显示
Module                  Size   Used by
helloworld             12425    0

my二月兰 发表于 2015-4-12 13:56:46

之前在嵌入式开发板上出现过这样的问题,当时的解决方法就是在/lib/modules/建一个与内核文件名一样的文件夹,同时把这个文件夹的属性改为777,试试,这个好像和内核是有关系的。

gzhuli 发表于 2015-4-12 14:08:29

代码里加上:
module_init(hello_init);
module_exit(hello_exit);

qwerttt 发表于 2015-4-12 14:22:39

module_init(hello_init);
module_exit(hello_exit);
这个肯定要加上的

helloworld代码没有在开发板上跑
只是在ubuntu下出现这样的问题

sunliezhi 发表于 2015-5-4 17:40:09

本帖最后由 sunliezhi 于 2015-5-4 17:42 编辑

没有看到你的 PWD 定义在哪

一般这样:
        KERNELDIR ?= /lib/modules/$(shell uname -r)/build
        PWD := $(shell pwd)

jjkkty 发表于 2015-5-28 09:58:57

学习一下

小溪 发表于 2015-6-12 07:02:20

模块被应用程序打开调用后,有没有关闭应用?
页: [1]
查看完整版本: ubuntu下简单helloworld模块无法rmmod,求解