内核模块的加载与卸载

本文介绍了Linux内核模块的特点,包括不编译进内核以控制大小和运行期间的动态加载与卸载。讲解了module_init和module_exit宏在加载和卸载模块时的作用,并列举了相关命令如insmod、modprobe、rmmod和lsmod的使用。此外,还对比了insmod和modprobe在处理模块依赖关系时的不同。
摘要由CSDN通过智能技术生成

Linux内核是个很庞大的东西,要全部了解清楚是很难的,所以我们所做的内核上的开发也是为驱动做一些基本的准备。

其中Linux的系统的构成、内核的构成还有内核的目录结构在这里就不去做过多的解释,有兴趣的可以自己查找相关的资料。

 

一、内核模块的特点

    a)        不会被编译进内核之中,这样的话可以尽可能的控制Linux内核的大小。

    b)        在内核运行期间,可以动态的进行加载或卸载。

 

二、相关函数的介绍

    a)        module_init宏表示在加载模块的时候,自动调用这个宏所指示的函数。

    b)        module_exit宏表示在卸载模块的时候,自动调用这个宏所指示的函数。

 

例如:

         代码中:

                   module_init(funa);

                   module_exit(funb);

         当加载该模块时,自动调用funa函数,同理当卸载该模块时,自动调用funb函数。

 

三、模块的相关命令

    a)        加载模块:insmod   modprobe

    b)        卸载模块:rmmod

    c)        查看模块:lsmod

 

insmod和modprobe的区别:

         当a模块与b模块有依赖关系时,假设安装b模块需先安装a模块。

         如果用insmod命令那么需要先insmod  a.ko 然后再insmod  b.ko。

         如果用modprobe命令那么直接可以modprobeb.ko。

         其中/lib/modules/“内核版本号”/modules.dep中记录了模块之间的依赖关系。

 

         rmmod命令:只需要调用模块名即可,比如安装的时候是inmod  a.ko 安装完毕后该模块存在于内核中的名字为a,那么卸载该模块只需要rmmod  a即可。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值