The kernel module programming primer(3)-A brief introduction for module utilities

modutils是管理内核模块的一个软件包。可以在任何获得内核源代码的地方获取Modutils(modutils-x.y.z.tar.gz)源代码,然后选择最高级别的patch.x.y.z等于或小于当前的内核版本,安装后在/sbin目录下就会有insmodrmmodksymslsmodmodprobe等实用程序。当然,通常我们在加载Linux内核时,modutils已经被载入。
1insmod命令
调用insmod程序把需要插入的模块以目标代码的形式插入到内核中。在插入的时候,insmod自动调用init_module()函数运行。注意,只有超级用户才能使用这个命令,其命令格式为:

# insmod  [path] modulename.c

inux设备驱动有两种加载方式insmod和modprobe,下面谈谈它们用法上的区别
1)insmod一次只能加载特定的一个设备驱动,且需要驱动的具体地址。写法为:
        insmod drv.ko

2) modprobe则可以一次将有依赖关系的驱动全部加载到内核。不加驱动的具体地址,但需要在安装文件系统时是按照make modues_install的方式安装驱动模块的。

驱动被安装在/lib/modules/$(uname -r)/...下。写法为:

       modprob drv

modprobe 和insmod一样都是用来加载内核module的,不过modprobe比较智能,它可以根据module的依赖性来自动为你加载

modprobe 通过读取 /lib/modules/2.6.xx/modules.dep 文件得知module 之间的相依性,而该文件是由 执行depmod 程序所生成的。


2. rmmod命令
调用rmmod程序将已经插入内核的模块从内核中移出rmmod会自动运行cleanup_module()函数,其命令格式为:

#rmmod  [path] modulename.c


3lsmod命令
调用lsmod程序将显示当前系统中正在使用的模块信息。实际上这个程序的功能就是读取/proc文件系统中的文件/proc/modules中的信息,其命令格式为:

#lsmod


4ksyms命令
ksyms这个程序用来显示内核符号和模块符号表的信息。与lsmod相似,它的功能是读取/proc文件系统中的另一个文件/proc/kallsyms

你可能感兴趣的:(The kernel module programming primer(3)-A brief introduction for module utilities)