内核模块的编写、编译、加载、卸载;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键然后输入/ 然后输入你想查找的信息就可以了。
#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编写
- 【TINY4412】LINUX学习笔记:(2)内核模块编译、安装、加载、卸载
- 内核模块加载 及模块Makefile编写
- ubuntu下helloworld内核模块编译、加载/卸载
- 内核模块编写 编译 加载/查看/删除模块
- 内核模块编译、加载&卸载及查看运行结果 -- linux内核
- linux 2.6内核 编译模块Makefile 详解
- 内核编译加载layer7补丁和模块
- Linux内核如何加载编译进内核的模块
- nginx单独模块编译的makefile编写
- 内核模块的加载和卸载
- Linux 2.6内核的编译步骤及模块的动态加载
- 在Linux下编译内核模块的Makefile的几种写法
- linux下内核模块的加载与卸载
- MTK android内核独立模块编译与加载
- Makefile 理解(4) 【Android.mk 浅析 模块编译Makefile编写】
- 内核模块编译Makefile模板
- 最简单的helloworld模块编译加载(linux3.5内核源码树建立)