第一个内核模块实验
一:预习要求:
(1 )做本实验之前,请复习相关内核模块知识。
(2 )请了解内核模块的编写、编译及安装与卸载方法。
(3 )请学习内核打印函数printk() 的用法。
(4 )请复习Makefile 文件的编写。
二:实验目的:
(1 )掌握内核模块的组成部分。
(2 )掌握内核模块的编译、安装与卸载方法。
(3 )学会查看内核模块的信息。
三:实验任务:
编写一个内核模块module,向外导出两个函数,分别是“求累积和”和“求阶乘”功能。编写另两个内核模块module1、module2,分别使用上面module模块中的函数,实现计算。注意路径清晰,分别在三个目录下编写。
四:实验原理及方法:
Linux 内核模块(LKM )是一些在启动的操作系统内核需要时可以载入内核执行的代码块,不需要时由操作系统卸载。它们扩展了操作系统内核功能却不需要重新编译内核、启动系统。如果没有内核模块,就不得不反复编译生成操作系统的内核镜像来加入新功能,当附加的功能很多时,还会使内核变得臃肿。一个Linux 内核模块主要由以下几个部分组成:
(1) 模块加载函数( 必须) :当通过insmod 或modprobe 命令加载内核模块时,模块的加(1) 模块加载函数( 必须) :当通过insmod 或modprobe 命令加载内核模块时,模块的加载函数会自动被内核执行,完成本模块相关初始化工作。
(2) 模块卸载函数(必须):当通过rmmod 命令卸载模块时,模块的卸载函数会自动被内核执行,完成与模块加载函数相反的功能。
(3) 模块许可证声明(必须):模块许可证(LICENCE )声明描述内核模块的许可权限,如果不声明LICENCE, 模块被加载时将收到内核被污染的警告。大多数情况下内核模块应遵循GPL 兼容许可权。L inux2.6内核模块最常见的是