linux 如何查看网卡芯片
- Linux
- 2025-08-07
- 4
lspci | grep -i 'ethernet'
或
lspci | grep -i 'network'
查看
在Linux系统中查看网卡芯片信息的核心目标是定位底层硬件标识符(Vendor ID/Device ID)并映射至具体芯片型号,以下是系统性操作指南及技术原理详解:
核心方法论框架
阶段 | 关键工具 | 作用 | 典型输出要素 |
---|---|---|---|
设备枚举 | lspci / lshw |
扫描PCI总线上的网络控制器 | 厂商ID、设备ID、类代码 |
驱动分析 | ethtool |
解析内核加载的驱动程序模块 | 驱动名称、固件版本 |
硬件解码 | dmidecode |
提取BIOS存储的硬件规格信息 | 主板集成网卡描述 |
交叉验证 | modinfo + 在线数据库 |
通过驱动参数反查硬件兼容性 | 支持的设备列表 |
实操步骤详解
基于PCI总线的设备枚举 (lspci
)
# 基础命令(需root权限) lspci -nn | grep -i "ethernet"
输出示例解析:
02:00.0 Ethernet controller [0600]: Intel Corporation 82574L Gigabit Ethernet Controller [8086:10fb] (rev 01)
Subsystem: Lenovo Device [17aa:3a27]
Kernel driver in use: e1000e
Kernel modules: e1000e
[8086:10fb]
:前段为PCI厂商ID(Intel=8086),后段为设备ID(10fb)Kernel driver in use
:当前使用的驱动模块名称(此处为e1000e)
进阶技巧:若需更结构化输出可改用
lspci -vmm
,重点关注”Kernel driver”字段。
深度硬件信息采集 (dmidecode
)
# 需root权限且依赖dmidecode包 sudo dmidecode -t baseboard | grep -i "network"
典型输出片段:
Base Board Information
Manufacturer: Lenovo
Product Name: ThinkPad T480
Version: SDK0J4070WIN
[...]
Network Controller: Intel(R) Wireless-AC 9560 [Wireless] + Intel(R) Ethernet Connection I219-LM [Wired]
此方法特别适合识别板载集成网卡,尤其适用于笔记本电脑等移动设备。
驱动层分析 (ethtool
+ modinfo
)
# 查看指定网卡的驱动详情(示例以eth0为例) sudo ethtool -i eth0
关键输出项:
driver: e1000e
version: 3.2.6-k
firmware-version: 0.13-3
expansion-rom-version:
bus-info: 0000:02:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: no
supports-register-dump: yes
结合modinfo
验证驱动能力边界:
modinfo e1000e | grep -E "alias|depends"
该命令可揭示驱动所支持的全部设备范围。
硬件ID转译对照表
当获取到纯数字的厂商ID/设备ID时(如8086:10fb),可通过以下途径翻译:
- 官方文档:访问PCI Special Interest Group (PCISIG) 维护的注册库
- Linux内核源码:
/usr/src/linux-headers-$(uname -r)/include/linux/pci_ids.h
- 第三方工具:使用
pciutils
自带的lspci
配合-m
参数自动注释
️ 特殊场景处理方案
▶️ USB无线网卡适配
对于USB外置网卡,需调整探测策略:
# 列出所有USB设备并筛选网络设备 lsusb -t | grep -i "wireless|network"
示例输出:
/: Bus=01 Lev=01 PrntScr=01 Port=0 Cnt=01 Dev#= 2 Spd=480 MxCh= 0
|__ Class=0cdc Protocol=00 ProtNum=0 Vendor=14e4 Device=43f0 Driver=rtl8812au
其中Vendor=14e4
对应Realtek厂商代码。
▶️ 容器/虚拟化环境注意事项
在Docker/KVM等虚拟化环境中:
- 宿主机的物理网卡信息仍可通过上述命令获取
- 虚拟机内的虚拟网卡(如virbr0)仅显示虚拟设备特征
- 推荐使用
virsh domiflist <vmname>
查看虚拟机网卡配置
常见问题FAQs
Q1: 执行lspci
时提示”Permission denied”怎么办?
A: 这是由于普通用户无权访问PCI配置空间所致,解决方案有两种:
- 临时提权:在命令前加
sudo
(推荐)sudo lspci -nn | grep -i ethernet
- 永久授权:将当前用户加入
video
组(部分发行版有效)sudo usermod -aG video $USER # 重启后生效
Q2: 为何相同型号设备在不同机器上显示不同设备ID?
A: 这种现象由以下原因导致:
| 原因 | 典型表现 | 解决方案 |
|——————–|———————————–|——————————|
| OEM定制版硬件 | 同一芯片但Subsystem ID不同 | 优先参考dmidecode
输出 |
| 多代马甲卡 | 旧芯片刷写新PID/VID | 使用lspci -v
查看RevisionID |
| 嵌入式控制器 | 复合功能设备共享单一插槽 | 检查lspci
输出的Multimedia栏 |
| 热插拔设备 | 动态分配的设备编号 | 固定设备别名(udev规则) |
主流网卡芯片厂商编码速查表
厂商名称 | PCI厂商ID | 常见设备系列 | 典型驱动模块 |
---|---|---|---|
Intel | 8086 | i210/i211/i350/I219 | e1000e, igb |
Realtek | 14e4 | RTL8111/RTL8812 | r8169 |
Broadcom/Avago | 14e4 | BCM57XX系列 | b44, tg3 |
Qualcomm Atheros | 1969 | Killer E2500/AR956x | alx |
Mellanox | 15b3 | ConnectX-3/ConnectX-4 | mlx4_core, mlx5_core |
Silicon Labs | 10c4 | Gigabit Ethernet Plus | cxgb4 |
️ 注意:现代服务器常采用SF-PPF(Single Firmware Per Flash)架构,此时单个物理设备可能呈现多个逻辑设备条目。
️ 故障排查建议流程
- 确认设备存在性:
ip link show
→ 确保目标网卡已注册为网络接口 - 核对驱动加载状态:
dmesg | tail -n 20
→ 检查启动日志中的驱动初始化信息 - 验证IOMMU分组:
find /sys/kernel/iommu_groups//devices -type l
→ 排除硬件直通冲突 - 尝试强制卸载重装驱动:
modprobe -r <driver> && modprobe <driver>
→ 清除潜在挂起状态 - 更新UEFI固件:部分新型网卡需要特定固件版本才能正常工作
通过以上多维度分析,即使面对新兴的ARM架构SoC集成网卡或NVMe over Fabrics等复杂场景,也能准确定位硬件身份,建议将关键信息(如厂商ID/设备ID)记录在案,便于后续驱动更新或系统迁移时