linux内核模块加载及相关命令

linux内核模块是一些可以让操作系统在需要时载入和执行的代码,不需要时可以由内核卸载的程序代码。在加载内核模块时无需重启系统,这样可以使内核短小精悍。一般的设备驱动程序都是以模块的方式存在的。

1.查看现在内核加载的模块
#lsmod 
命令lsmod可以查看现在内核加载的模块,是通过读取/proc/modules/中的内容来查看的
2.下面讲解一下内核是如何载入模块的
当内核所需要的扩展功能不存在时,内核模块管理守护进程kmod执行modprobe去加载内核模块,两种类型的参数可以传给modprobe
a.模块的名字,像softdog
b.通用识别符,像char-major-10-30
当传给modprobe的参数是通用识别符时,modprobe首先在/etc/modprobe.conf中查找该字符串,如果它发现有一行像
alias har-major-10-30 softdog
说明要加载的是softdog.so模块
然后modprobe遍历/lib/moudles/(uname -r)/modules.dep来判断是否有其他内核模块需要在加载此模块前加载。该文件是由命令depmod -a来创建的,保存着内核模块的依赖关系。
最终modprobe调用insmod来先加载需要依赖的模块,然后加载此模块。
insmod将指向/lib/modules/(uname -r)/kernel/目录,为模块的专门存放的目录。
 
如果想要载入一个模块有两种办法:
a.insmod /lib/modules/(uname -r)/kernel/fat/fat.o #必须要写明全部的路径,因为insmod是很呆板的。
b.modprobe -a fat #modprobe会调用insmod来加载模块
modprobe ,insmod及depmod在一个名为modutils的工具包内。
 
3.卸载模块使用rmmod sysdog来卸载相应的模块。

发表评论

电子邮件地址不会被公开。

*