前言
学习驱动程序开发中,遇到一些linux命令进行随手记录,仅仅用于学习使用
一、Linux内核模块管理命令
- lsmod、insmod、rmmod、modinfo、modprobe、depmod命令详解
二、基本介绍
2.1 这些命令均是安装再“kmod”包中
[root@localhost ]# rpm -ql kmod|grep sbin
/usr/sbin/depmod
/usr/sbin/insmod
/usr/sbin/lsmod
/usr/sbin/modinfo
/usr/sbin/modprobe
/usr/sbin/rmmod
/usr/sbin/weak-modules
https://www.runoob.com/linux/linux-comm-rpm.html == 》rpm命令详细说明
2.1 CentOS中所有与内核模块相关的文件都存放在"/lib/modules/$(uname -r)/“下面(不管32位还是64位系统,都在/lib/…之下):
[root@localhost ~]# cd /lib/modules/$(uname -r)/
[root@localhost 3.10.0-123.el7.x86_64]# ls
build modules.builtin modules.modesetting source
extra modules.builtin.bin modules.networking updates
kernel modules.dep modules.order vdso
modules.alias modules.dep.bin modules.softdep
modules.alias.bin modules.devname modules.symbols
modules.block modules.drm modules.symbols.bin
三、命令介绍
3.1 lsmod 查看内核已加载的模块
[root@localhost ~]# lsmod|head -4
Module Size Used by
ip6table_filter 12815 0
ip6_tables 27025 1 ip6table_filter
iptable_filter 12810 0
3.2 lsmod modinfo:查看模块的基本信息
[root@localhost ~]# modinfo /lib/modules/3.10.0-123.el7.x86_64/kernel/fs/ext4/ext4.ko
filename: /lib/modules/3.10.0-123.el7.x86_64/kernel/fs/ext4/ext4.ko
license: GPL
description: Fourth Extended Filesystem
author: Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others
alias: fs-ext4
alias: ext3
alias: fs-ext3
alias: ext2
alias: fs-ext2
srcversion: 7854620F0551D7F88A126F0
depends: mbcache,jbd2
intree: Y
vermagic: 3.10.0-123.el7.x86_64 SMP mod_unload modversions
signer: CentOS Linux kernel signing key
sig_key: BC:83:D0:FE:70:C6:2F:AB:1C:58:B4:EB:AA:95:E3:93:61:28:FC:F4
sig_hashalgo: sha25
3.3 insmod:将指定模块加载到内核,建议使用modeprobe命令
3.4 rmmod:将已加载模块从内核中移除,建议使用modeprobe命令
3.5 modprobe:加载或卸载内核模块,需要根据modules.dep.bin文件进行加载操作,可以自动解决模块间的依赖关系表
[root@localhost ~]# lsmod|grep ext4
[root@localhost ~]# modprobe ext4 #加载模块
[root@localhost ~]# lsmod|grep ext4
ext4 528957 0
mbcache 14958 1 ext4
jbd2 98341 1 ext4
[root@localhost ~]# modprobe -r ext4 #卸载模块
[root@localhost ~]# lsmod|grep ext4
3.6 depmod:查找/lib/moduels/(uname -r)/中的所有模块并建立modules.dep.bin文件,该文件记录了模块位置及依赖关系
[root@localhost ~]# cd /lib/modules/$(uname -r)/
[root@localhost 3.10.0-123.el7.x86_64]# ls|grep dep
modules.dep
modules.dep.bin
modules.softdep
[root@localhost 3.10.0-123.el7.x86_64]# rm -rf modules.dep.bin
[root@localhost 3.10.0-123.el7.x86_64]# modprobe ext4
modprobe: FATAL: Module ext4 not found.
[root@localhost 3.10.0-123.el7.x86_64]# depmod -a #生成文件
[root@localhost 3.10.0-123.el7.x86_64]# modprobe ext4
[root@localhost 3.10.0-123.el7.x86_64]# lsmod|grep ext4
ext4 528957 0
mbcache 14958 1 ext4
jbd2 98341 1 ext4
[root@localhost 3.10.0-123.el7.x86_64]# ls|grep dep
modules.dep
modules.dep.bin
modules.softdep
总结
- 驱动程序的过程中,涉及到相关内核中模块的操作处理的linux命令,这里进行了简单的总结归纳,主要也是为了让自己印象更加深刻
- 参看文献https://www.cnblogs.com/hanxiaomeng/p/12728104.html