在Linux系统中,查看驱动信息是系统管理和故障排查的重要环节,驱动作为内核与硬件之间的桥梁,其状态直接影响硬件功能的使用,本文将详细介绍通过命令行工具、文件系统及图形界面查看驱动信息的方法,帮助用户全面掌握驱动状态。
命令行工具查看驱动信息
命令行是Linux系统管理的核心方式,通过特定命令可快速获取驱动加载状态、模块信息及硬件绑定关系。
lsmod
:列出已加载的内核模块
lsmod
命令用于显示当前内核中已加载的所有模块(即驱动程序),其数据来源于/proc/modules
文件,执行lsmod
会输出模块名、大小及依赖关系,
lsmod | grep nvidia
此命令会过滤出与“nvidia”相关的模块,输出结果包含模块名(如nvidia
)、大小(如45214768
字节)及依赖模块(如drm
、ttm
等),通过依赖关系可分析驱动加载的层级。
modinfo
:查看模块详细信息
若需了解模块的版本、许可证、作者、参数等详细信息,可使用modinfo
命令,后跟模块名。
modinfo nvidia
输出会包含模块的version
(版本)、license
(许可证,如GPL
)、author
(作者)、parm
(可配置参数)等字段,对于未加载的模块,modinfo
仍可查询其信息,前提是模块文件存在于/lib/modules/$(uname -r)/
目录下。
lspci
与lsusb
:查看硬件设备及绑定驱动
-
lspci
:列出PCI总线上的硬件设备,需安装pciutils
包,使用-k
或-nn
参数可查看设备绑定的驱动及厂商/设备ID:lspci -k | grep -i 'network' # 查看网络设备及其驱动 lspci -nn | grep -i 'vga' # 查看VGA设备(显卡)及其ID
输出中“Kernel driver in use”字段即当前设备使用的驱动,如“Kernel driver in use: nvidia”。
-
lsusb
:列出USB设备,需安装usbutils
包,参数与lspci
类似:lsusb -v | grep -i 'driver' # 查看USB设备驱动详情
dmesg
:查看内核日志中的驱动加载信息
驱动加载过程中,内核会输出相关信息至dmesg
日志,通过过滤关键字可快速定位驱动加载状态:
dmesg | grep -i 'driver|nvidia' # 查看驱动相关的内核日志
日志中会显示驱动加载成功(如nvidia: module loaded
)或失败(如nvidia: probe failed
)的信息,结合时间戳可排查驱动加载问题。
dkms
:查看动态内核模块支持状态
若系统使用DKMS(Dynamic Kernel Module Support)管理驱动(如NVIDIA闭源驱动、无线网卡驱动),可通过dkms status
查看已安装的驱动模块及其与内核版本的匹配状态:
dkms status
输出示例为nvidia/510.47.03: 5.15.0-52-generic, 5.15.0-52-generic, i686
,表示该驱动模块已为内核版本15.0-52-generic
编译并安装。
文件系统查看驱动信息
Linux内核通过/proc
和/sys
虚拟文件系统暴露驱动和硬件信息,适合直接查看底层绑定关系。
/proc/modules
:已加载模块的原始数据
/proc/modules
是lsmod
的数据来源,直接查看可获取模块的内存占用、引用计数及依赖列表:
cat /proc/modules | grep -i 'sound'
/sys/bus/
:总线设备与驱动绑定信息
/sys/bus/
目录下按总线类型(如pci
、usb
)组织设备,每个设备目录下有driver
符号链接,指向绑定的驱动:
# 查看PCI设备(如网卡)绑定的驱动 ls -l /sys/bus/pci/devices/0000:02:00.0/driver # 0000:02:00.0为PCI设备地址 # 输出示例:lrwxrwxrwx 1 root root 0 10月 1 10:00 /sys/bus/pci/devices/0000:02:00.0/driver -> ../../../bus/pci/drivers/e1000e
通过driver
链接的路径可确定驱动名称,进一步查看驱动信息(如/sys/bus/pci/drivers/e1000e
目录包含驱动的绑定设备列表)。
/sys/class/
:按设备类型查看驱动
/sys/class/
目录按设备类型(如net
、drm
)组织,例如查看网络设备驱动:
ls -l /sys/class/net/eth0/device/driver # eth0为网卡名
图形界面工具查看驱动信息
对于习惯图形界面的用户,以下工具可直观展示硬件及驱动信息:
lshw
:硬件信息查看工具
lshw
以树状结构展示硬件及驱动信息,需安装lshw
包:
sudo lshw -C display # 查看显卡及驱动
输出会包含“configuration”字段中的驱动名称(如driver=nvidia
)及“logical name”(如/dev/dri/card0
)。
hardinfo
:系统信息工具
hardinfo
提供图形界面,支持生成硬件报告,包含驱动信息:
sudo hardinfo # 启动后选择“Devices”查看各硬件驱动
inxi
:命令行信息工具(带图形输出)
inxi
以简洁格式显示系统信息,包含驱动状态:
inxi -Fxxx # 详细显示硬件及驱动信息
常用命令对比表
命令 | 用途 | 示例 | 说明 |
---|---|---|---|
lsmod |
列出已加载模块 | lsmod | grep -i 'audio' |
显示模块名、大小、依赖关系 |
modinfo |
查看模块详细信息 | modinfo snd_hda_intel |
需模块名,可查未加载模块 |
lspci -k |
查看PCI设备及绑定驱动 | lspci -k | grep -i 'vga' |
需安装pciutils |
lsusb -v |
查看USB设备及驱动详情 | lsusb -v | grep -i 'driver' |
需安装usbutils |
dmesg |
查看驱动加载日志 | dmesg | grep -i 'nvidia' |
过滤关键字定位驱动状态 |
dkms status |
查看DKMS驱动模块状态 | dkms status |
适用于DKMS管理的驱动 |
相关问答FAQs
Q1: 如何查看某个具体设备(如网卡)的驱动名称?
A1: 可通过lspci
或ip
命令定位设备,再查看绑定驱动。
- 使用
ip a
找到网卡名(如eth0
); - 通过
lspci | grep -i 'ethernet'
找到对应的PCI地址(如0000:02:00.0
); - 执行
lspci -k -s 0000:02:00.0
,查看“Kernel driver in use”字段即为驱动名(如e1000e
)。
或直接查看/sys/class/net/eth0/device/driver
链接指向的路径。
Q2: 如何判断内核是否加载了某个驱动模块(如rtl8723be
)?
A2: 可通过以下两种方式判断:
- 使用
lsmod | grep rtl8723be
,若有输出则表示模块已加载; - 查看模块信息:
modinfo rtl8723be
,若显示“filename”字段(如/lib/modules/5.15.0-52-generic/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723be.ko
),说明模块文件存在,再结合lsmod
确认是否加载,若模块未加载,可尝试sudo modprobe rtl8723be
手动加载。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/15064.html