Linux内核模块学习

模块是具有独立功能的程序,它能被单独编译,但不能独立运行。它可以在系统运行时动态的被链接到内核中作为内核的一部分在内核空间运行,所以内核模块提高了内核的可扩展性。

查看当前系统中已经加载了哪些模块的方法是:
1. 使用lsmod命令进行查看,
sh-3.2# lsmod

2. 直接查看/proc文件系统中的信息,
sh-3.2# cat /proc/modules

以上两种方法其实是一样的,都是查看当前系统中的模块加载状况。
二者区别在于lsmod命令的结果是经过格式化之后的信息。

删除一个已经安装的模块的方法是:
1. 直接使用rmmod命令并指定模块名,
sh-3.2# rmmod module

2. 使用modprobe命令指定-r选项来删除一个模块,
sh-3.2# modprobe -r module

安装一个模块的方法是:
1. 直接使用insmod命令并制定模块的路径,
sh-3.2# insmod /.../.../module

2. 使用modprobe命令可以选择安装指定的模块或所有的模块。

使用modprobe命令加载或卸载模块的好处在于:
modprobe会根据模块之间的依赖关系来决定如何载入或卸载模块。
而模块之间的依赖关系是如何创建呢?
执行depmod命令就会产生一个模块依赖关系的文件:
/lib/module/2.6.xx/modules.dep

模块,简单讲就是.ko文件,通常都是驱动程序开发时才会使用。
linux系统提供了模块功能大大的提高了驱动开发的效率。
那使用gcc如何才能编译一个模块文件?
据说使用如下的编译选项就可以:
-I /usr/src/linux/include
暂时没有此需求,待有空时可以再试试看。

Linux Kernel 的详细介绍:请点这里
Linux Kernel 的下载地址:请点这里

相关阅读

相关推荐