当前位置:首页 > Linux > 正文

linux 如何查看网卡芯片

在 Linux 中,可通过 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

关键输出项

linux 如何查看网卡芯片  第1张

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配置空间所致,解决方案有两种:

  1. 临时提权:在命令前加sudo(推荐)
    sudo lspci -nn | grep -i ethernet
  2. 永久授权:将当前用户加入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)架构,此时单个物理设备可能呈现多个逻辑设备条目。


故障排查建议流程

  1. 确认设备存在性ip link show → 确保目标网卡已注册为网络接口
  2. 核对驱动加载状态dmesg | tail -n 20 → 检查启动日志中的驱动初始化信息
  3. 验证IOMMU分组find /sys/kernel/iommu_groups//devices -type l → 排除硬件直通冲突
  4. 尝试强制卸载重装驱动modprobe -r <driver> && modprobe <driver> → 清除潜在挂起状态
  5. 更新UEFI固件:部分新型网卡需要特定固件版本才能正常工作

通过以上多维度分析,即使面对新兴的ARM架构SoC集成网卡或NVMe over Fabrics等复杂场景,也能准确定位硬件身份,建议将关键信息(如厂商ID/设备ID)记录在案,便于后续驱动更新或系统迁移时

0