怎么看linux使用网卡驱动
怎么看linux使用网卡驱动详细介绍
在 Linux 系统中查看网卡驱动的方法有多种,以下是常用的几种方式,涵盖不同工具和场景:
方法一:使用 ethtool 命令(直接查看指定网卡驱动)
ethtool 是专门用于查询和配置网卡设备的工具,可直接获取网卡的驱动信息。
命令格式:
bash
网卡设备名
- 示例(假设网卡名为
ens33):bashens33 - 输出解析:plaintext
driver: e1000e # 驱动名称version: 3.2.6-k
firmware version: 0.7-3
bus-info: 0000:02:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no
重点关注
driver字段,即当前网卡使用的驱动模块名。
方法二:通过 lspci 命令(适用于 PCIe 网卡,查看详细设备信息)
lspci 用于列出系统中的 PCI/PCIe 设备,加上 -vv 或 -k 参数可显示驱动相关信息。
1. 查看网卡设备的驱动模块
bash
lspci
- 输出示例:plaintext
02:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection (rev 06)Subsystem: Dell Device 040f
Kernel driver in use: e1000e # 当前使用的驱动模块
Kernel modules: e1000e
Kernel driver in use即为当前驱动,Kernel modules是可用驱动(可能包含备用驱动)。
2. 显示详细设备信息(含驱动路径)
bash
lspci 设备总线号
- 关键字段:plaintext
Driver: /usr/lib/modules/5.15.0-87-generic/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko.xz # 驱动文件路径
方法三:通过 lsmod 命令(查看已加载的驱动模块)
lsmod 列出当前系统中已加载的内核模块,可结合网卡驱动名称过滤。
1. 直接匹配已知驱动名(需先通过其他方法获取驱动模块名)
bash
lsmod 驱动模块名
- 输出示例:plaintext
e1000e 327680 0 # 模块名和使用计数
2. 结合网卡设备的总线信息(适用于不确定驱动名时)
通过 sysfs 路径获取驱动模块名:
bash
/sys/class/net/网卡设备名/device/driver/module
- 输出:plaintext
e1000e # 驱动模块名再用
lsmod确认是否加载:bashlsmod e1000e
方法四:通过 sysfs 文件系统(查看设备与驱动的映射关系)
Linux 的 sysfs 提供了硬件设备的详细信息,可通过以下路径查看:
1. 查看网卡对应的驱动模块
bash
/sys/class/net/网卡设备名/device/driver
- 输出:plaintext
lrwxrwxrwx 1 root root 0 May 5 10:00 /sys/class/net/ens33/device/driver -> ../../../../bus/pci/drivers/e1000e # 驱动目录链接驱动模块名通常是链接路径中的最后一个目录名(如
e1000e)。
2. 查看驱动文件路径
bash
readlink /sys/class/net/网卡设备名/device/driver/module
- 输出:plaintext
/usr/lib/modules/5.15.0-87-generic/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko.xz
方法五:使用 modinfo 命令(查看驱动模块详细信息)
在已知驱动模块名(如 e1000e)的情况下,可通过 modinfo 查看驱动的详细信息(如版本、作者、依赖等):
bash
modinfo 驱动模块名
- 关键输出:plaintext
filename: /usr/lib/modules/5.15.0-87-generic/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko.xz # 驱动文件路径version: 3.2.6-k
description: Intel(R) PRO/1000 Network Driver
license: GPL
补充:快速确定网卡设备名
在使用上述方法前,需先确定网卡的设备名(如 ens33、eth0、wlp2s0 等),可通过以下命令查看:
bash
addr show
输出中以 eno、ens、eth(有线网卡)或 wlp、wlan(无线网卡)开头的名称即为设备名。
总结:常用命令速查表
| 需求 | 命令 | |
|---|---|---|
| 查看指定网卡驱动 | ethtool -i <设备名> |
|
| 查看 PCIe 网卡驱动 | `lspci -k | grep -i 'net' -A 3` |
| 查看已加载的驱动模块 | `lsmod | grep <驱动模块名>` |
| 查看驱动文件路径 | readlink -f /sys/class/net/<设备名>/device/driver/module |
|
| 查看驱动详细信息 | modinfo <驱动模块名> |
根据实际场景选择合适的方法,推荐优先使用 ethtool 或 lspci -k,操作简单且信息明确。如果需要更底层的调试,可结合 sysfs 或 modinfo 进一步分析。