1. 搭建Linux内核模块开发环境
任务说明
本案例目标是通过 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
验证方法与判定标准
执行上述命令后,检查输出是否满足以下条件,全部满足即判定通过:
ethtool -i eth0能返回driver、bus-info字段,且driver非空;ethtool eth0能返回Speed、Duplex、Link detected字段;ip link show eth0能返回link/ether对应的 MAC 地址;- 若网卡实际连接正常,
Link detected应为yes,且Speed显示实际协商速率(如1000Mb/s)。
注意事项
- 部分虚拟网卡(如
lo、docker0)不支持ethtool查询,请选择物理网卡或虚拟化平台分配的网卡(如ens33、eth0)。 - 若
firmware-version为空,属于正常现象(部分驱动不提供该字段)。 - 查看总线信息时,
bus-info对 PCIe 网卡显示为0000:xx:xx.x格式,对 USB 网卡则显示 USB 总线地址。