您的位置:首页 > 其它

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

2013-05-09 20:17 471 查看
1、创建实验目录

#mkdir /home/guoqian/4-1-2

#cd /home/guoqian/


这是hello.c

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




这是Makefile

3、编译内核模块

#make



上图hello.ko为编译得到的内核模块

4、加载内核模块

#insmod hello.ko

注:注意观察输出打印语句

说明:在安装内核模块的时候,内核模块初始化函数hello_init得到调用,应该打印输出语句“Hello world!”;但并没有在终端上看到相应的信息,这是因为prink输出权限不够,在图形化界面中prink权限为KERN_EMERG,而初始化函数中prink语句的权限为KERN_ERR;所有打印输出信息都会保存在文件/var/log/message中,大家可以通过该文件来查看输出信息。

#vi /var/log/message



好吧,我们是不是可以这么想,如果我们把prink的权限改为KERN_EMERG,那么我们加载内核模块时,就会输出打印信息是么,下面是我验证的结果



5、查看内核模块

#lsmod



6、卸载内核模块

#rmmod hello



说明:大家可以发现在卸载内核模块的时候,内核模块卸载函数hello_exit得到调用,打印出了“hello exit”语句;或者从文件/var/log/messages也可以查看到打印输出信息。

7、再次查看内核模块

#lsmod | grep hello



看似简单的东西我却做了一天,学长还小小指点了一下,再次总结一下吧:1、刚开始我怎么做都不好使,经过确认才知道hello.c这个程序我敲错了



左边这个事正确的,右边是错误的,左边的init和exit前面有两个锻钢,右边的只有一个,这两个是完全不同,我费了挺多事儿才把上面那张图截下来就是希望以后学习者可以借鉴一下,当然我应该好好说明一下,但今天有点累了,我将会在下篇博客中详细说明。

2、当我们进入、/var/log/messages这个文件时,我们看到了大量的文字,那么我们怎么来查找自己想看的信息在哪呢。只需键入Enter键然后输入/ 然后输入你想查找的信息就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: