Linux内核模块简介
linux内核是模块化组成的,它允许内核在运行时动态地向其中插入或从中删除代码。这些代码(包括相关的子线程、数据、函数入口和函数出口)被一并组合在一个单独的二进制镜像中,即所谓的可装载内核模块中,或简称为模块。
内核模块是Linux内核向外部提供的一个插口,其全称为动态可加载内核模块(Loadable Kernel Module,LKM),我们简称为模块。Linux内核之所以提供模块机制,是因为它本身是一个单内核(monolithic kernel)。单内核的最大优点是效率高,因为所有的内容都集成在一起,但其缺点是可扩展性和可维护性相对较差,模块机制就是为了弥补这一缺陷。(以上信息来自百度百科)
有两种方法可以将一个功能添加到内核当中
1)将功能编译到Linux内核当中
2)将功能编译成模块,然后在使用时进行添加
两种方法有各自的优缺点
第一种:
优点:不存在兼容问题,添加的功能可以直接使用
缺点:如果将所有需要用到的功能都编译进Linux内核,会使内核过于臃肿,若相应的模块需要升级,则要重新编译整个内核。
第二种:
优点:可以控制内核的大小,加载之后可以正常使用。可以单独修改、升级相应的模块
缺点:可能存在兼容问题
加载、删除模块相关指令:
insmod:加载模块。 例:insmod xxx.ko
modprobe: 除了加载指定的模块外,modprobe会根据依赖关系,加载以来的模块。若加载不成功,则卸载整组的 模块。依赖关系记录在 /lib/modules/2.6.xx/modules.dep中,此文件由depmod产生。
rmmod:删除模块。
modinfo:查看模块信息。 例:modinfk xxx.ko
lsmod:列出所有模块。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。