内核模块是 Linux 系统中一种特殊的可执行文件,它可以在运行时动态地加载到内核中或卸载出内核,从而实现内核的扩展和优化。
内核模块操作相关的命令主要有以下几种:
一、lsmod命令
列出当前已加载的内核模块及其依赖关系和使用情况。
[root@localhost ~]# lsmod | grep tap tap 24576 0
二、insmod命令
将指定的内核模块加载到内核中,需要提供完整的模块文件路径。
例如将一个名为 hello.ko 的内核模块加载到内核中,可以使用以下命令
[root@localhost ~]# insmod /path/to/hello.ko
其中/path/to 是模块文件所在的目录。
如果加载成功,没有输出信息;如果加载失败,会输出错误信息。
❝「注意」
insmod
主要用内核版本在2.4之前的Linux系统加载内核模块。对于通过此命令加载的Linux内核模块,系统不会自动解决内核模块之间的依赖关系,而且还要求填写详细的模块路径。所以在Linux 2.6内核出现时,此命令已渐渐被遗弃。❞
三、rmmod命令
将指定的内核模块卸载出内核,需要提供模块名称。
例如想将一个名为 hello 的内核模块卸载出内核,可以使用以下命令:
[root@localhost ~]# rmmod hello
如果卸载成功,没有输出信息;如果卸载失败,会输出错误信息。
四、modprobe命令
根据模块名称自动加载或卸载内核模块及其依赖的其他模块
[root@localhost ~]# modprobe tap
-f
选项强制加载或卸载。-r
选项卸载模块,等同于rmmod tap
五、depmod命令
生成模块依赖关系文件,这个命令通常不需要手动运行,而是安装新的内核或模块时自动运行。
[root@localhost ~]# depmod -a
六、modinfo命令
显示指定的内核模块的信息,包括版本、作者、描述、参数、别名等。
[root@localhost ~]# modinfo tap filename: /lib/modules/5.11.0-27-generic/kernel/drivers/net/tap.ko license: GPL author: Sainath Grandhi <sainath.grandhi@intel.com> author: Arnd Bergmann <arnd@arndb.de> srcversion: 0F700DF21F8BDF5D1FACAA6 ......