阡陌 发表于 2024-2-19 09:39:17

Linux 内核模块的相关操作命令


## lsmod

查看已经安装的模块

```
lsmod
Module                  SizeUsed by
binfmt_misc            204801
vmw_vsock_vmci_transport    286722
vsock                  368643 vmw_vsock_vmci_transport
snd_ens1371            286722
snd_ac97_codec      1310721 snd_ens1371
gameport               163841 snd_ens1371
ac97_bus               163841 snd_ac97_codec
...
```



## modinfo

显示模块信息

```
modinfo nfs.ko
filename:       /home/matt/test/kernel/linux-3.2.0-psp04.06.00.11/fs/nfs/nfs.ko
license:      GPL
author:         Olaf Kirch <okir@monad.swb.de>
depends:      sunrpc,lockd
intree:         Y
vermagic:       3.2.0 mod_unload modversions ARMv7 p2v8
parm:         cache_getent:Path to the client cache upcall program (string)
parm:         cache_getent_timeout:Timeout (in seconds) after which the cache upcall is assumed to have failed (ulong)
parm:         enable_ino64:bool
parm:         nfs4_disable_idmapping:Turn off NFSv4 idmapping when using 'sec=sys' (bool)
```

depends 显示出了模块的依赖项



## insmod

加载指定位置的模块

```
insmod /path-to-file/nfs.ko
```

如果依赖模块没有安装会提示 Unknown symbol...

使用时要指定模块的绝对路径。



## rmmod

卸载驱动模块

```
rmmod <module_name>
```

注意其中 ”module_name” 是 lsmod 显示的模块名称,而不是对应的 ko 文件名



## modprobe

用于挂载内核模块,挂载模块时不用指定模块文件的路径,也不用带文件的后缀。

modprobe nfs

相比 insmod 更智能些,不过限定了 ko 文件的位置。

实例:

```
modprobe nfs
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
```

卸载模块:

```
modprobe -r nfs
modprobe: remove RPC: Unregistered named UNIX socket transport module.
'sunrpc': Resou RPC: Unregistered udp transport module.
rce temporarily RPC: Unregistered tcp transport module.
unavailable
RPC: Unregistered tcp NFSv4.1 backchannel transport module.
```



## depmod

用于分析可载入模块的相依性,供 modprobe 在安装模块时使用。

depmod 通过读取 `/lib/modules/$(uname -r)` 目录下的每一个模块来创建一个记录模块相依性的列表。


页: [1]
查看完整版本: Linux 内核模块的相关操作命令