#include <linux/module.h>
#include <linux/init.h>
MODULE_LICENSE("GPL"); //协议声明
MODULE_AUTHOR("David Xie"); //作者
MODULE_DESCRIPTION("Hello World Module"); //模块描述
MODULE_ALIAS("a simplest module"); //声明别名
static int __init hello_init()
{
printk(KERN_EMERG"Hello World!\n");
return 0;
}
static void __exit hello_exit()
{
printk("<6>hello exit\n");
}
module_init(hello_init); //声明模块初始化函数
module_exit(hello_exit); //声明模块清理函数
#include <linux/module.h>是必须添加的
#include <linux/init.h>在某些情况不需要添加,但建议添加;这里包括printk的优先级声明和module_init module_exit的声明。
测试话函数static int __init hello_init()可以任意名字的,因为有nodule_init()来处理,同样退出函数也可以是任意名字的。
__init声明这个函数在模块初始化完成后释放该函数并回收内存
__exit还没有真正的意思
printk函数和我们常常用的printf不太一样的,printk是用在内核里的,并且具有优先级的,共8个(0~7),printk函数一般不会打印在终端中,而是记录到文件里,作为日记
供查询。
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
else
KDIR := /lib/modules/2.6.18-53.el5/build
all:
make -C $(KDIR) M=$(PWD) modules
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers
endif
这个Makefile文件也不太一样,这是基于一种叫kbuild来写的。
2.6.18-53.el5这个是内核的版本,在/lib/modules/文件夹下,这个要改成你本机对应的版本。
obj-m := hello.o:这个要根据你的需要修改。
这样我们就可以使用make了
最后得到hello.ko
使用sudo insmod hello.ko就安装上了,使用lsmod可以查看,使用rmmod hello就可以卸载了
#include <linux/init.h>
MODULE_LICENSE("GPL"); //协议声明
MODULE_AUTHOR("David Xie"); //作者
MODULE_DESCRIPTION("Hello World Module"); //模块描述
MODULE_ALIAS("a simplest module"); //声明别名
static int __init hello_init()
{
printk(KERN_EMERG"Hello World!\n");
return 0;
}
static void __exit hello_exit()
{
printk("<6>hello exit\n");
}
module_init(hello_init); //声明模块初始化函数
module_exit(hello_exit); //声明模块清理函数
#include <linux/module.h>是必须添加的
#include <linux/init.h>在某些情况不需要添加,但建议添加;这里包括printk的优先级声明和module_init module_exit的声明。
测试话函数static int __init hello_init()可以任意名字的,因为有nodule_init()来处理,同样退出函数也可以是任意名字的。
__init声明这个函数在模块初始化完成后释放该函数并回收内存
__exit还没有真正的意思
printk函数和我们常常用的printf不太一样的,printk是用在内核里的,并且具有优先级的,共8个(0~7),printk函数一般不会打印在终端中,而是记录到文件里,作为日记
供查询。
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
else
KDIR := /lib/modules/2.6.18-53.el5/build
all:
make -C $(KDIR) M=$(PWD) modules
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers
endif
这个Makefile文件也不太一样,这是基于一种叫kbuild来写的。
2.6.18-53.el5这个是内核的版本,在/lib/modules/文件夹下,这个要改成你本机对应的版本。
obj-m := hello.o:这个要根据你的需要修改。
这样我们就可以使用make了
最后得到hello.ko
使用sudo insmod hello.ko就安装上了,使用lsmod可以查看,使用rmmod hello就可以卸载了