内核模块的编写、编译、加载、卸载;Makefile的编写
来源:互联网 发布:百度大数据 编辑:程序博客网 时间:2024/06/05 08:38
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键然后输入/ 然后输入你想查找的信息就可以了。
- 内核模块的编写、编译、加载、卸载;Makefile的编写
- 内核模块的Makefile编写
- 内核模块编写,编译,加载和卸载过程
- 编写内核模块Makefile的技巧
- 模块的编写、编译、载入和卸载
- 内核模块的基本编写以及Makefile的编写
- nginx单独模块编译的makefile编写
- 内核模块的编译、加载与卸载
- 编写简单的内核模块及内核源码下载,内核模块Makefile编写
- 内核模块的编写
- 内核模块加载 及模块Makefile编写
- 内核模块加载 及模块Makefile编写
- 应用netlink的内核模块和应用程序Makefile编写
- 我的第一个内核模块和makefile文件编写
- 模块Makefile文件的编写
- 多模块编译链接 Makefile文件的编写
- Linux内核模块的编译、加载和卸载
- 编译库的makefile编写
- 使用phpcheckstyle检查自己的代码
- jQuery解析AJAX返回的html数据时碰到的问题与解决
- 在MFC中弹出txt文件
- JQuery实现拖动删除效果
- PHP中strpos函数的使用说明
- 内核模块的编写、编译、加载、卸载;Makefile的编写
- $(addprefix <prefix>,<names...> )
- 愁容骑士
- 剑指offer第7题 两个栈实现队列
- linux下强制不检测依赖安装VNC
- java实现栈
- VirtualBox 安装虚拟机时出现错误 VT-x features locked or unavailable in MSR.
- activiti5 流程文件中使用java 方法
- 第十一周上机任务项目2