Chinaunix首页 | 论坛 | 博客
  • 博客访问: 207072
  • 博文数量: 80
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 824
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-12 21:40
个人简介

只有今天的埋头,才有明天的出头。

文章分类

全部博文(80)

文章存档

2014年(80)

我的朋友

分类: LINUX

2014-12-12 10:38:38

内核模块的编写、编译、加载、卸载,Makefile的编写

1.创建实验目录:

#mkdir filename

#cd filename

2.编写内核模块hello.c, Makefile

#include 

#include 

 

MODULE_LICENSE("GPL");

MODULE_AUTHOR("DAVID");

MODULE_DESCRIPTION("Hello world module");

 

static int __init hello_init(void)

{

        printk(KERN_ERR "hello world!\n");

        return 0;

}

static void __exit hello_exit(void)

{

        printk(KERN_EMERG "hello exit!\n");

}

 

module_init(hello_init);

module_exit(hello_exit);

ifneq ($(KERNELRELEASE),)

 

obj-m :=hello.o

 

else

KDIR:= /lib/modules/2.6.32-279.el6.i686/build                 

all:

        make -C $(KDIR) M=$(PWD) modules

clean:

        rm -f *.ko *.o *.mod.o *.mod.c .symvers

 

endif

 

3.编译内核模块

#make

#ls后就有hello.ko出来

4.加载内核模块

#insmod hello.ko

因为prink权限不够,在终端并没有看到输出“Hello world”,打印的输出信息在文件/var/log/messages

#vi /var/log/messages

5.查看内核模块

#lsmod

6.卸载内核模块

#rmmod hello

#vi /var/log/messages可以看到退出的信息

7.再次查看内核模块

#lsmod | grep hello看模块是否已经成功从系统中卸载了

 

 

 

阅读(1244) | 评论(0) | 转发(0) |
0

上一篇:内核配置编译安装

下一篇:内核模块参数

给主人留下些什么吧!~~