myfreax

Linux lsmod命令列出内核模块

Linux内核具有模块化设计。内核模块通常称为驱动程序是一段扩展内核功能的代码

3 min read
By myfreax
Linux lsmod命令列出内核模块
Linux lsmod命令列出内核模块

lsmod是一个命令行程序,用于显示已加载的Linux内核模块的信息。

内核是操作系统的核心组件。它管理系统的资源,并且是计算机硬件和软件之间的桥梁。

Linux内核具有模块化设计。内核模块通常称为驱动程序是一段扩展内核功能的代码。

模块要么编译为可加载模块,要么内置在内核中。可加载模块可以根据需要在正在运行内核中进行加载和卸载,且不需要重新启动系统。

通常,内核模块是由udev按需加载的,udev通常被称为设备管理器。您也可以使用modprobe命令将模块手动加载到内核中。

也可以在/etc/modules/etc/modules-load.d/*.conf文件指定要自动加载的模块,在启动时自动加载到内核。

内核模块存储在/lib/modules/<kernel_version>目录中。<kernel_version>表示内核版本号,要找到正在运行的Linux内核版本号,请使用uname -r命令。

lsmod命令

lsmod是一个简单的命令,不接受任何选项或参数。lsmod命令的作用是读取/proc/modules文件内容并以格式化的列表显示文件内容。

要解正在运行Linux 内核加载模块,请使用快捷键打开ctrl+alt+t终端,运行命令lsmod,命令将打印已加载内核模块的信息,每一行表示一个内核模块。

每行包含三列,Module第一列显示模块的名称。Size第二列以字节为单位显示模块的大小。

Used by第三列显示一个数字,数字指示当前模块被多少个模块使用,也就是依赖该模块有多少个模块。

零值表示该模块未其它模块使用。数字后的逗号分隔列表,表示依赖该模块的其它模块名称。

lsmod
Module                  Size  Used by
cmac                   16384  0
rfcomm                 81920  4
...
ahci                   40960  1
intel_lpss_pci         20480  0
i2c_i801               32768  0
libahci                32768  1 ahci
intel_lpss             16384  1 intel_lpss_pci
...

要确定是否已加载特定模块,请使用grep命令过滤输出。 例如,要查看是否已加载kvm模块,请运行命令lsmod | grep kvm

如果你需要显示详细的模块信息,请使用modinfo命令,后跟模块的名称。例如命令modinfo kvm将会打印kvm模块的详细信息。

lsmod | grep kvm
modinfo kvm
kvm_intel             278528  0
kvm                   651264  1 kvm_intel
irqbypass              16384  1 kvm

结论

lsmod命令显示了当前加载的内核模块的列表。如有任何疑问,请随时发表评论。