| 命令 | 主要用途 | 关键信息 |
|---|---|---|
lsmod |
查看已加载到内核的模块列表 | 模块名、大小、依赖关系 |
modinfo |
查看特定模块的详细信息 | 作者、许可证、描述、参数、依赖等 |
dmesg |
查看内核启动和运行时的日志信息 | 模块加载/卸载消息、驱动初始化错误、硬件探测信息 |
lspci / lsusb |
查看硬件设备信息,并关联到驱动 | PCI/USB 设备的厂商ID、设备ID、正在使用的驱动 |
/proc 和 /sys |
内核与用户空间交互的虚拟文件系统 | 驱动和设备的实时状态、配置信息 |
lshw / hwinfo**** |
功能强大的硬件探测工具 | 详细的硬件列表和关联的驱动信息 |
查看已加载的内核模块 (lsmod)
lsmod 是最直接、最常用的命令,它列出当前内核中所有已经加载的模块(驱动程序大多以内核模块形式存在)。

命令:
lsmod
输出解释:
Module Size Used by
nvidia_uvm 1024000 33
nvidia_drm 69632 22
nvidia_modeset 1179648 33
nvidia 35430400 33
drm_kms_helper 241664 1 nvidia_drm
i915 4229120 3
... (省略) ...
- Module: 模块名。
- Size: 模块占用的内存大小(单位:字节)。
- Used by: 该模块被哪些其他模块依赖,数字表示依赖它的模块数量。
0表示没有其他模块依赖它。
高级用法:
lsmod 的信息实际上来自 /proc/modules 文件,你可以直接查看该文件,内容完全一样。
cat /proc/modules
查看模块详细信息 (modinfo)
当你知道一个模块的名字,想了解它的详细信息时,modinfo 是最佳选择。

命令:
modinfo [模块名]
示例 (查看 nvidia 模块信息):
modinfo nvidia
输出解释:
filename: /lib/modules/5.15.0-88-generic/updates/dkms/nvidia.ko
version: 535.161.07
license: NVIDIA
description: NVIDIA Linux Kernel Module for the NVIDIA CUDA Toolkit
author: NVIDIA Corporation <linuxdriver@nvidia.com>
srcversion: 1234567890ABCDEF12345678
depends: nvidia-drm,nvidia-modeset
retpoline: Y
name: nvidia
vermagic: 5.15.0-88-generic SMP mod_unload modversions
signer: Module signature appended
sig_key: A7:4B:...
sig_hashalgo: sha512
- filename: 模块文件在磁盘上的位置。
- version: 模块的版本号。
- license: 模块的许可证。
- description: 模块的描述信息。
- author: 模块作者。
- depends: 该模块依赖的其他模块,这告诉你加载此模块前,需要先加载哪些模块。
查看内核日志 (dmesg)
驱动在加载、初始化或运行出错时,会向内核环缓冲区(kernel ring buffer)发送消息。dmesg 命令可以查看这些消息。

命令:
dmesg | grep -i "驱动关键词"
使用 grep 可以过滤出你关心的驱动信息,提高效率。
示例 (查看所有与 nvidia 相关的日志):
dmesg | grep -i nvidia
输出解释:
[ 8.123456] nvidia: module verification failed: signature and/or required key missing - tainting kernel
[ 8.234567] nvidia-nvlink: Nvlink Core is being initialized, major device number 237
[ 8.345678] nvidia 0000:01:00.0: vgaarb: changed decodes: olddec=io+mem+io+mem, newdec=none:owns=io+mem
[ 8.456789] nvidia-modeset: Loading /lib/modules/5.15.0-88-generic/updates/dkms/nvidia-modeset.ko for kernel 5.15.0-88-generic
[ 8.123456]: 方括号内是时间戳(从系统启动开始计算,单位是秒)。- 后面的信息就是驱动模块加载、初始化或运行时输出的具体信息,这对于排查驱动加载失败、硬件不兼容等问题非常有用。
查看硬件设备及其驱动 (lspci, lsusb)
你需要知道某个硬件设备(如网卡、显卡、USB设备)正在使用哪个驱动。
a) PCI 设备 (lspci)
安装 (如果未安装):
# Debian/Ubuntu sudo apt-get install pciutils # RHEL/CentOS/Fedora sudo yum install pciutils
命令:
# 列出所有PCI设备 lspci # 以更友好的格式列出 lspci -v # 查看特定设备,并显示其驱动 lspci -v -s 01:00.0
示例 (查看显卡信息):
lspci -k -s 01:00.0
输出解释:
01:00.0 VGA compatible controller: NVIDIA Corporation GP107M [GeForce GTX 1050 Mobile] (rev a1)
Subsystem: Micro-Star International Co., Ltd. GeForce GTX 1050 Mobile
Kernel driver in use: nvidia
Kernel modules: nvidiafb, nvidia
Kernel driver in use: 当前正在使用的驱动是nvidia。Kernel modules: 内核中可用的、可用于该设备的模块有nvidiafb和nvidia。
b) USB 设备 (lsusb)
安装 (如果未安装):
# Debian/Ubuntu sudo apt-get install usbutils # RHEL/CentOS/Fedora sudo yum install usbutils
命令:
# 列出所有USB设备 lsusb # 查看特定设备的详细信息 lsusb -v -d 1234:5678
示例 (查看鼠标信息):
lsusb
输出解释:
Bus 001 Device 005: ID 046d:c52b Logitech, Inc. Unifying Receiver
...
你可以通过 dmesg 或查看 /sys/bus/usb/drivers 目录来找到它具体使用的驱动。
查看驱动和设备的实时状态 (/proc, /sys)
Linux 内核通过两个虚拟文件系统 /proc 和 /sys 向用户空间暴露其内部信息。
a) /proc 文件系统
/proc/modules:lsmod命令的数据来源。/proc/devices: 显示字符设备和块设备的主设备号列表,以及它们注册的驱动名称。cat /proc/devices
/proc/ioports: 显示设备占用的 I/O 端口地址。/proc/interrupts: 显示系统中断请求的使用情况。
b) /sys 文件系统
/sys 是更现代、结构更清晰的接口,推荐使用。
-
查看所有总线上的设备:
# 查看PCI设备 ls /sys/bus/pci/devices/ # 查看USB设备 ls /sys/bus/usb/devices/
-
查看设备绑定的驱动: 每个设备目录下都有一个
driver符号链接,如果它指向一个驱动,则表示该设备正在使用此驱动。# 以 lspci 查到的显卡地址为例 ls -l /sys/bus/pci/devices/0000:01:00.0/driver
输出可能类似于:
lrwxrwxrwx 1 root root 0 Jan 1 12:00 /sys/bus/pci/devices/0000:01:00.0/driver -> ../../../bus/pci/drivers/nvidia从路径中可以清楚地看到驱动名是nvidia。 -
查看所有已加载的驱动:
# PCI总线 ls /sys/bus/pci/drivers/ # USB总线 ls /sys/bus/usb/drivers/
功能强大的硬件探测工具 (lshw, hwinfo)
这些工具能扫描整个系统,生成一份详细的硬件报告,并将设备与驱动关联起来,非常直观。
a) lshw (Hardware Lister)
安装:
# Debian/Ubuntu sudo apt-get install lshw # RHEL/CentOS/Fedora sudo yum install lshw
命令:
# 以HTML格式输出详细报告,并用浏览器打开 sudo lshw -html > hardware_report.html # 在终端以简洁格式显示CPU和内存信息 sudo lshw -class cpu -class memory
示例 (查看显卡部分):
sudo lshw -c display
输出会非常详细,包括:
display: nvidia
description: VGA compatible controller
product: GP107M [GeForce GTX 1050 Mobile]
vendor: NVIDIA Corporation
physical id: 0
bus info: pci@0000:01:00.0
version: a1
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress vga_controller bus_master cap_list rom
configuration: driver=nvidia latency=0
resources: irq:16 memory:de000000-deffffff memory:d0000000-d1ffffff memory:c0000000-cfffffff ioport:3000(size=128) memory:c0000-dffff
configuration: driver=nvidia 直接指明了驱动。
b) hwinfo (Hardware Information)
安装:
# Debian/Ubuntu sudo apt-get install hwinfo # RHEL/CentOS/Fedora sudo yum install hwinfo
命令:
# 显示所有硬件信息 hwinfo # 只显示PCI设备信息 hwinfo --pci
它的输出也非常详细,格式化得很好,方便阅读。
总结与选择建议
| 你的目标 | 推荐命令 |
|---|---|
| 快速查看当前有哪些驱动在运行。 | lsmod |
查看某个已知驱动(如 nvidia)的详细信息(版本、作者、参数)。 |
modinfo nvidia |
| 驱动加载失败或运行出错,想看具体错误信息。 | dmesg \| grep -i "驱动名" |
| 知道一个硬件设备(如插在PCI插槽上的卡),想知道它用的是什么驱动。 | lspci -k -s [设备地址] |
| 想了解系统中所有硬件及其驱动的详细、结构化报告。 | sudo lshw 或 sudo hwinfo |
| 想实时查看某个驱动的状态或向驱动写入配置。 | 查看 /sys 目录下的文件。 |
掌握这些命令,你就可以从不同层面全面地查看和管理 Linux 系统中的驱动程序了。
