lsmod输出三列:module为模块名,size为模块大小(字节),used by为引用计数及依赖模块列表;例如“nvidia 26214400 87 nvidia_uvm,nvidia_drm”表示该模块占25 mib、被87处引用且依赖于后两个模块。

直接运行 lsmod 命令就能查看当前系统中已加载的所有内核模块列表。它不需参数、无需 root 权限,输出简洁直观,是日常排查和确认驱动状态最常用的方法。
lsmod 输出的三列分别代表什么
执行 lsmod 后,每行包含三列:
-
Module:模块名称,如
nvidia、veth、ext4,不含.ko后缀,也不带路径; -
Size:模块占用内存大小,单位是字节(例如
26214400≈ 25 MiB); -
Used by:该列数值表示被其他模块或内核子系统引用的次数;若后面跟着逗号分隔的模块名(如
nvidia_uvm,nvidia_drm),说明这些模块正依赖它;数值为0并不等于“未使用”,只是没有其他模块显式调用它——设备正在工作时仍可能无法卸载。
快速定位某个模块是否存在
用 grep 过滤时要注意几点:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 模块名可能有变体,比如
nvme驱动实际常以nvme_core、nvme_pci形式出现,建议用lsmod | awk '{print $1}' | grep -E '^(nvme|usb|nvidia)'覆盖常见命名; - 大小写敏感,且不识别文件扩展名或路径,
insmod ./hello.ko加载后只显示为hello(前提是模块内未定义MODULE_ALIAS); - 想确认是否加载成功,可用
lsmod | grep -q 模块名 && echo "已加载" || echo "未加载"做脚本判断。
比 lsmod 更进一步的查看方式
当需要更多信息时,可配合其他命令:
-
modinfo 模块名:查作者、版本、依赖、参数、签名等元数据,比如modinfo vfat; -
cat /proc/modules:读取原始数据源,含更底层信息,如是否被标记为T(tainted,例如闭源驱动); -
modprobe -l | grep 关键词:列出所有可加载模块(含未加载的),用于确认模块是否存在磁盘上; -
systemctl status systemd-modules-load.service或检查/etc/modules-load.d/目录:了解哪些模块被配置为开机自动加载。
注意几个常见误区
容易混淆的操作点:
-
lsmod只显示已成功插入内核的模块,不会列出仅存于磁盘的.ko文件; -
insmod加载的是文件路径,不处理依赖,也不读/etc/modprobe.d/配置,基本只用于调试; -
modprobe才是推荐方式——按模块名查找、自动拉起依赖、支持别名和参数,卸载时用modprobe -r会递归清理依赖链; - 某些加固内核(如启用
CONFIG_MODULE_SIG_FORCE)会拒绝无签名模块,此时insmod报Operation not permitted,lsmod当然也看不到它。










