linux入门 内核模块管理,Linux(入门基础)113---内核模块(depmod、lsmod、modinfo、insmod、rmmod、modprobe)...

一、内核

内核一般是压缩文件,使用内核之前,需要解压缩然后加载到内存中

二、内核模块(.ko文件)

内核都具有【可读取模块化驱动程序】的功能

三、内核与内核模块的文件目录

内核文件:/boot/vmlinuz或/boot/vmlinuz-version

内核解压缩所需的RAM或DIsk:/boot/initramfs或/boot/initramfs-version

内核模块:/lib/modules/version/kernel或/lib/modules/$(uname -r)/kernel

内核源代码:/usr/src/linux或/usr/src/kernel/(要安装才有,默认不安装)

如果内核被顺利加载到系统中,有几个信息会记录下来

内核版本:/proc/version

系统内核功能:/proc/sys/kernel/

四、编译内核模块

如果我们有个新的硬件,但是操作系统不支持,可以进行内核的重新编译

重新编译内核,并加入最新的硬件的驱动程序源代码

将该硬件的驱动程序编译成模块,在启动时加载该模块即可

五、内核模块放置目录

内核模块一般都放置在/lib/modules/version/kernel/这个目录内,这个目录内有分为几个目录a2468103ae84be77fc9917da9598e337.png

arch:与硬件平台有关的选项。例如CPU的等级等

crypto:内核所支持的加密技术,例如md5或des等

drivers:一些硬件的驱动程序,例如显卡、网卡、PCI相关硬件等

fs:内核所支持的文件系统,例如vfat、reiserfs、nfs等

lib:一些函数库

net:与网络有关的各项协议数据,还有防火墙模块(net/ipv4/netfilter/*等)

sound:与音效有关的各项模块

六、modules.dep文件

这个文件位于/lib/modules/version/目录下,记录了所有的内核模块的各项依赖性

a47637c18765491d6a393a1a5c16bec3.png

七、depmod命令

1.功能

depmod会跑到模块标准放置目录/lib/modules/version/kernel/,并依据相关目录的定义将全部的模块读出来分析,最终将分析的模块依赖性结果写入modules.dep文件中

2.命令格式

depmod  [-Ane]

相关参数与选项

不加任何选项时:depmod命令会分析目前内核的模块,并且重新写入modules.dep文件中

-A:加了-A参数,depmod会查找比modules.dep内还要新的模块,只将新的模块写入到modules.dep文件中

-n:不将内核模块写入modules.dep文件中,而是将结果输出到屏幕上查看

-e:显示出目前以加载的不可执行的模块名称

3.演示案例

例如我有一个网卡驱动程序,文件名为a.ko,因为是新加入的模块,所以我使用depmod来更新模块依赖性的记录文件

depmod    //直接输入这个即可

八、lsmod命令

1.功能

查看目前内核加载了多少的模块

2.查看

6e639d18a6d59a79828a5f3a3e877f53.png

cd125c050acbb58e103eb4c82138ad77.png

信息被分为三栏

Modele:模块名称

Size:模块的大小

Used by:此模块是否被其他模块所使用

九、模块依赖性

从上面lsmod显示的信息的Used by栏可以看出,vsock模块被加载之后,vmw_vsock_vmci_transport模块才可以被加载。这就是模块的依赖性

十、modinfo命令

1.功能

查看单一内核模块的相关信息,也可以用来当【检查模块】使用

2.命令格式

modinfo  [选项]  内核模块文件名

相关参数与选项

-a:仅列出作者名称

-d:仅列出该模块的说明

-l:仅列出模块授权

-n:仅列出该模块的详细路径

3.演示案例

案例一:列出drom模块的相关信息

311eb9739d8b99a4c9c7db4f4933f7a2.png

十一、内核模块的加载与删除

modprobe:可以加载/删除模块

insmod:加载模块

rmmod:删除insmod加载的模块

区别①:insmond是手动的去加载一个模块,你要给出该模块的绝对路径,而modprobe是根据modules.dep文件的内容自动加载/删除模块

区别②:如果模块之间有依赖性,那么使用insmod和rmmod加载/删除模块时就会出错,不允许这样操作。但是modprobe根据modules.dep文件的内容自动加载/删除模块,可以解决依赖性问题insmod命令

格式:insmod  模块完整路径名

注意事项

模块必须使用完整路径名

演示案例

加载fat.ko这个模块:insmod   /lib/modules/4.4.0-31-generic/kernel/fs/fat/fat.ko

rmmod命令

格式:rmmod  [-fw]  模块名

-f:强制将该模块删除,不论是否正在被使用

演示案例

将刚刚加载的fat模块删除:rmmod  fat.ko

modprobe命令

格式:modprobe  [-cfr]  模块名

-c:列出目前系统所有的模块(更详细的代号对应表)

-f:强制加载该模块

-r:删除该模块

注意事项

modprobe是根据modules.depmodules.dep文件的内容自动加载/删除模块,可以解决依赖性问题

并且后面的模块名不需要绝对路径

演示案例

加载vfat模块:modprobe  vfat

标签:depmod,lsmod,dep,modules,内核,模块,内核模块,加载

来源: https://blog.csdn.net/qq_41453285/article/details/88636238

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值