编写入门的linux模块(Hello World)

首先在自己的目录下写源码

用VI这个工具

文件命名为hello.c

//
//hello.c
//
#include 
#include 
#include 

static int hello_init(void) {
	printk(KERN_WARNING "Module init: Hello world!\n");
	return 0;
}

static void hello_exit(void) {
	printk(KERN_WARNING "Module exit: bye-bye\n");
}

module_init(hello_init);
module_exit(hello_exit);

最后两行指定了模块加载和卸载时执行的函数,加载时执行hello_init,卸载时执行hello_exit。
写一个Makefile,内容如下(文件名也为Makefile)

obj-m = hello.o
default:
        $(MAKE) -C/usr/src/kernels/2.6.18-238.el5-i686 M=$(PWD) modules
clean:
        $(MAKE) -C/usr/src/kernels/2.6.18-238.el5-i686 M=$(PWD) clean

第一个路径则是要去编译的内核版本的路径      M后面的路径则是hello.c的目录

在当前目录下,编译

可从当前目录下看到生成的文件

会生成一个内核模块hello.ko。这就是我们编译好的内核模块,接下来加载它,并查看结果。

输入命令

insmod hello.ko

输入命令

dmesg

看系统日志(最后一行)

输入命令

lsmod | grep hello

也可查看

输入命令

rmmod hello 卸载模块

再次输入命令

dmesg

看系统日志

你可能感兴趣的:(linux)