内核驱动模块入门(一)----代码之外的预备知识
未经作者同意,不得转载本文
通过前面一篇关于最简单的内核模块编译的文章,笔者相信读者已经对最简单的内核模块有了一个体验。
本篇文章将讲解,跟内核模块编译后相关的一些内容,如装载、卸载和模块查看的一些知识,但不涉及内核如何操作模块中的具体参数等内容。
1.装载模块:insmod命令
#insmod hello.ko
insmod命令的主要功能是将内核模块装入内核中。其机制是:insmod将模块的代码和数据装入内核,然后使用内核的符号表解析模块中的未解析的符号;insmod的实现依赖/kernel/module.c的系统调用,在此就不详细说明,读者可以自行查看内核中的代码。lsmod可以查看到模块的设备号和使用状态,这在后面的开放中会用到。
2.装载模块:modprobe
#modprobe hello.ko
modprobe命令也用于装载驱动,尤其在装载一些复杂驱动的时候。简单地说,modprobe会在装载当前的模块时,将依赖的一些模块也装载到内核中。
3.查看模块:lsmod
lsmod命令的主要功能是列出当前装载到内核中的所有模块,以及模块间使用的一些关系。lsmod是通过读取/pro/modules虚拟文件来获得模块的相关信息。
我们也可以通过查看虚拟文件系统的/sys/module目录来查看相关信息。
4.查看装载失败信息:
查看日志文件 /var/log/messages
5.卸载模块:rmmod
rmmod命令主要就是用来用于移除内核模块,命令使用如下:
#rmmmod hello.ko
6.内核符号表
内核符号表中包含了所有的全局内核项的地址,内核中使用模块主要通过这里来查找。
另:建议编译时使用的内核和运行平台一致,这样可以避免平台版本的依赖