上一篇                     
               
			  如何查看linux所有模块
- Linux
- 2025-07-26
- 2531
 Linux所有模块可用
 
 
lsmod命令列出已加载
 模块,或通过
 cat /proc/modules查看详细信息
Linux系统中,查看所有模块(尤其是内核模块)可以通过多种命令实现,以下是详细的操作方法和工具说明:
基础命令
-  lsmod- 功能:列出当前已加载的内核模块,包括模块名称、大小、使用次数及依赖关系,这是最常用的快速查看方式。
- 用法示例:直接输入 lsmod即可显示全表;若需过滤特定关键词(如搜索含“usb”的模块),可结合管道符与grep:lsmod | grep usb。
- 扩展选项:支持排序或格式化输出,lsmod -e以字节为单位显示大小,lsmod -r按模块名反向排序。
 
-  modinfo <模块名>- 功能:获取单个模块的详细信息,如作者、描述、版本、许可证等元数据,适用于深入分析特定模块的属性。
- 用法示例:modinfo e1000会返回该网卡驱动的完整信息,包括路径(通常位于/lib/modules/$(uname -r)/kernel/...)。
 
-  读取 /proc/modules文件 - 原理:此虚拟文件由系统动态生成,实时反映已加载模块的状态,内容与 lsmod类似,但可通过文本编辑器进一步处理。
- 用法示例:cat /proc/modules或重定向到其他工具进行分析,如grep过滤。
 
- 原理:此虚拟文件由系统动态生成,实时反映已加载模块的状态,内容与 
高级搜索技巧
-  基于路径的查找 - 目标目录结构:所有编译好的模块以 .ko后缀存储在/lib/modules/$(uname -r)/下,$(uname -r)代表当前运行的内核版本。
- 命令实践:使用 find递归遍历子目录查找符合条件的文件:find /lib/modules/$(uname -r) -name ".ko";或者用locate加速全系统检索(需先执行updatedb更新数据库):locate my_driver.ko。
 
- 目标目录结构:所有编译好的模块以 
-  正则匹配与模糊查询 - 场景适配:当不确定完整模块名时,可通过通配符或正则表达式缩小范围,查找所有无线相关驱动:lsmod | grep -E 'wlan|wifi'。
 
- 场景适配:当不确定完整模块名时,可通过通配符或正则表达式缩小范围,查找所有无线相关驱动:
-  内置模块特殊处理  - 区别说明:部分模块直接编译进内核而非独立加载,modinfo会失效,需通过/sys/module体系访问参数:ls /sys/module/tcp_cubic/parameters列出可调优参数,再用cat读取具体值如tcp_friendliness。
 
- 区别说明:部分模块直接编译进内核而非独立加载,
-  设备关联性分析 - 交叉验证方法:结合 lspci -k命令查看 PCI 设备的绑定情况,输出中会标注对应的内核模块名称,帮助定位硬件驱动依赖关系。
 
- 交叉验证方法:结合 
以下为常用命令对比表格:
| 命令 | 主要用途 | 特点 | 适用场景 |
|——————–|——————————|——————————|————————–|
| lsmod | 列出已加载模块概览 | 简洁高效,支持过滤 | 快速浏览整体状态 |
| modinfo | 单模块详细情报 | 提供开发者级元数据 | 调试特定驱动问题 |
| /proc/modules | 系统级快照 | 程序化读取方便 | 脚本监控或日志记录 |
| find/locate | 磁盘物理位置搜索 | 精准定位 .ko 文件路径 | 手动修改或备份恢复 |
| lspci -k | 设备与驱动映射关系 | 直观展示硬件拓扑 | 排除外设兼容性故障 |
FAQs
-  问:为什么某些模块无法通过 modinfo查询?
 答:可能是因为该模块属于内置类型(直接编译进内核),而非动态加载的外部模块,此时应访问/sys/module/<模块名>/parameters获取配置参数。 
-  问:如何确认某个模块是否正在被使用? 
 答:观察lsmod输出中的 “Used by” 列数值大于零即表示有进程依赖该模块;也可使用rmmod --dry-run <模块名>测试能否安全卸载而不中断服务。
通过上述方法组合使用,可以全面掌握Linux系统中内核模块的加载状态、功能特性及关联关系,满足从日常管理到故障
 
  
			 
			