上一篇
linux如何查看有哪些驱动
- Linux
- 2025-07-23
- 5
在Linux系统中,可运行
lsmod
命令快速查看已加载的内核驱动模块
在Linux系统中,查看已加载或可用的驱动程序可以通过多种命令和工具实现,以下是详细说明:
使用内核模块管理命令
-
lsmod
- 作用:列出当前内核加载的所有模块(即驱动程序)。
- 用法:直接输入
lsmod
,输出包括模块名、大小、实例引用次数等。 - 示例输出:
Module Size Used by rfkill 4096 1 nfs 20480 1
- 注意:该命令仅显示已加载的模块,未加载的驱动不会显示。
-
modinfo
- 作用:查询指定模块的详细信息,如依赖关系、作者、描述等。
- 用法:
modinfo [模块名]
,modinfo e1000
。 - 输出示例:
filename: /lib/modules/5.10.0/kernel/drivers/net/ethernet/intell000.ko description: Intel(R) PRO/1000 Network Driver
- 适用场景:确认模块是否匹配当前内核版本。
硬件设备与驱动关联分析
-
lspci -k
- 作用:列出PCI设备及其对应的内核驱动。
- 用法:
lspci -k
,输出中包含“Kernel driver in use”字段。 - 示例输出:
00:19.0 Communications controller: Intel Corporation Device [8086:1229] Kernel driver in use: mei_me Kernel modules: mei_me
- 适用对象:PCI设备(如网卡、声卡、显卡)。
-
lsusb -t
- 作用:查看USB设备及使用的驱动模块。
- 用法:
lsusb -t
,输出中显示“Driver”字段。 - 示例输出:
Bus 002 Device 003: ID 046d:c31c Logitech, Inc. M720 Wireless Mouse Driver: usbhid
- 补充:结合
lsmod
可确认驱动是否已加载。
系统文件与日志查询
-
/sys 目录
- 作用:通过系统文件获取设备驱动信息。
- 路径:
- PCI设备:
/sys/bus/pci/devices/
- USB设备:
/sys/bus/usb/devices/
- PCI设备:
- 示例:
cat /sys/bus/pci/devices/0000:00:1a:0/driver/module/name # 输出: snd_hda_intel
- 优势:实时性强,支持动态查询。
-
dmesg
- 作用:查看内核日志,追踪驱动加载过程。
- 用法:
dmesg | grep [模块名]
,dmesg | grep e1000
。 - 典型输出:
[ 7.123456] e1000 0000:00:19.0: enabling device (ocmap 0xFF)
- 适用场景:诊断驱动是否成功加载或存在冲突。
存储设备驱动查询
-
lsblk
- 作用:列出块设备(如硬盘、SSD)及其挂载点。
- 用法:
lsblk
,显示设备名称、类型、大小等。 - 关联驱动:结合
lspci -k
或lsmod
确认驱动模块(如sd
对应SCSI磁盘驱动)。
-
fdisk -l
- 作用:显示磁盘分区表,间接推断磁盘驱动状态。
- 输出示例:
Disk /dev/sda: 500 GB, 500107862016 bytes
- 注意:需结合其他命令确认驱动模块。
图形化工具辅助
-
gnome-disks(Debian/Ubuntu)
- 功能:可视化查看磁盘及其驱动状态。
- 操作:在“Details”标签下查看设备信息。
-
ksmokee(CentOS/Fedora)
- 功能:类似功能,支持设备驱动详情查看。
方法对比与选择建议
场景 | 推荐命令 | 补充工具 |
---|---|---|
查看所有已加载驱动 | lsmod | modinfo |
分析PCI设备驱动 | lspci -k | dmesg |
诊断USB设备驱动 | lsusb -t | lsmod |
存储设备驱动排查 | lsblk + lspci -k | fdisk -l |
内核驱动兼容性检查 | modinfo | /lib/modules/$(uname -r)/kernel/drivers/ |
FAQs
-
Q:如何查看某个设备是否使用了正确的驱动?
A:使用lspci -k
或lsusb -t
查看设备对应的驱动模块,再通过lsmod
确认模块是否已加载,若驱动不匹配,可能需要手动加载或重新安装。 -
Q:如何查找未被使用的冗余驱动模块?
A:通过lsmod
列出已加载模块,结合depmod
生成当前内核的模块依赖关系,对比后清理无效模块