1. 搭建Linux内核模块开发与NIC驱动编译环境

搭建Linux内核模块开发与NIC驱动编译环境 学习卡片

任务说明

本案例目标是通过 ethtool 与 ip 命令,查看指定网卡的基本属性,包括驱动名称、固件版本、总线信息、MAC 地址、链路状态与速率等。你需要在一台装有 Linux 系统且具备至少一张物理或虚拟网卡的机器上完成以下操作。

查看网卡列表

首先确认系统中有哪些网络接口。执行:

ip link show

输出中会列出所有网络接口(如 eth0、enp3s0、ens33 等)。记下你要查看的网卡名称,后续命令均以 eth0 为例,实际操作时请替换为你的目标网卡名。

查看驱动与固件信息

使用 ethtool 的 -i 参数获取驱动相关信息:

ethtool -i eth0

该命令输出包括:

  • driver:驱动名称(如 e1000e、ixgbe、virtio_net)
  • version:驱动版本
  • firmware-version:固件版本(部分网卡可能显示为空)
  • bus-info:总线信息(如 0000:03:00.0,表示 PCI 总线地址)

查看链路与速率

不带参数的 ethtool eth0 可查看当前链路状态、速率、双工模式等:

ethtool eth0

重点关注 Speed、Duplex、Link detected 字段。若网卡未连接网线或对端未协商成功,Link detected 会显示 no。

查看 MAC 地址与接口状态

使用 ip 命令查看 MAC 地址及接口启停状态:

ip link show eth0

输出中 link/ether 后即为 MAC 地址;state UP 表示接口已启用,state DOWN 表示接口未启用。

汇总查看脚本

为便于一次性获取全部信息,可执行以下命令(将 eth0 替换为目标网卡):

echo "===== 接口状态 ====="; ip link show eth0; echo; echo "===== 驱动/固件/总线 ====="; ethtool -i eth0; echo; echo "===== 链路/速率 ====="; ethtool eth0

验证方法与判定标准

执行上述命令后,检查输出是否满足以下条件,全部满足即判定通过:

  1. ethtool -i eth0 能返回 driver、bus-info 字段,且 driver 非空;
  2. ethtool eth0 能返回 Speed、Duplex、Link detected 字段;
  3. ip link show eth0 能返回 link/ether 对应的 MAC 地址;
  4. 若网卡实际连接正常,Link detected 应为 yes,且 Speed 显示实际协商速率(如 1000Mb/s)。
网卡信息查询命令与输出字段对应关系 物理网卡 eth0 PCI 设备 内核驱动 driver: e1000e ethtool -i eth0 驱动/固件/总线信息 ethtool eth0 链路/速率/双工 ip link show eth0 MAC/接口状态 关键输出字段 • driver: e1000e • firmware-version: 0.13-3 • bus-info: 0000:00:1f.6 • Speed: 1000Mb/s • Duplex: Full • Link detected: yes • link/ether: 00:1a:2b:3c:4d:5e • state: UP 注册 ethtool 接口 注:bus-info 为 PCI 总线地址,格式为 domain:bus:device.function

注意事项

  • 部分虚拟网卡(如 lo、docker0)不支持 ethtool 查询,请选择物理网卡或虚拟化平台分配的网卡(如 ens33、eth0)。
  • 若 firmware-version 为空,属于正常现象(部分驱动不提供该字段)。
  • 查看总线信息时,bus-info 对 PCIe 网卡显示为 0000:xx:xx.x 格式,对 USB 网卡则显示 USB 总线地址。