Linux驱动--网卡驱动调试
网卡驱动调试
网卡驱动架构理解
网卡一般分为MAC和PHY两个部分。
MAC (Media Access Control):
- 功能:数据过滤,位于CPU和PHY之间。
- 类别:EMAC(以太网MAC)、GMAC(千兆以太网MAC)。
- 接口:MII(10/100 Mbps)、GMII(1000 Mbps)、RGMII(减少引脚的GMII)。
PHY (Physical Layer Device):
- 功能:负责数据的物理传输。
- 地址:0-31,由板卡电路图决定。
- ID:由硬件厂商决定,用于识别PHY芯片。
MAC组件与功能
- 帧发送:接收上层数据,增加以太网帧头尾。
- 帧接收:检查数据有效性,转发或丢弃。
- GMAC控制:全双工模式下控制帧生成和检测。
- GMII管理:控制物理层输入输出,检查状态信息。
工作模式
半双工模式:GMAC client将数据传给GMAC后,GMAC先给数据加上Preamble、FSD、FCS,组成以太网帧;
然后检查载波侦听信号(CRS);
若有载波信号,表示有数据正在 本地网段上传播,就等待直到载波信号消失;
载波信号消失后,GMAC还要等待一个帧间延时(interFrame Spacing);
若在帧间延时期间,一直没有载波信号,该以太网帧就可以开始向物理层传输。全双工模式:GMAC从GMAC Client接收到数据后,不需要载波侦听和冲突检测,
直接向物理层传送,其它操作与半双工相同。
调试工具与准备
抓包工具安装
- 查看系统是否有这个包
1
# dpkg -l |grep wrieshark
- 如果没有,在网络配置好的情况下
1
# sudo apt-get update
- 等待安装完成
1
# sudo apt-get install wireshark
- 完成后,找到wireshark 后面增加用户名
1 | #sudo vim /etc/group |
网络配置与调试命令
以下是一些常用的网络调试命令。
- ifconfig:管理网络接口状态和配置
1 | // 启动/关闭指定网卡 |
mii-tool:显示工作模式
ethtool:查询和修改网卡设置。
系统网络服务管理
重启网络服务
1
service network-manager restart
显示网卡信息
1
nmcli conn show
1 | WARNING: terminal is not fully functional |
如果除了上述信息没新网卡信息
检查并添加网络配置
1
nmcli conn add ifname eth0 con-name eth0 type ethernet
编辑网络配置文件
编辑 /etc/sysconfig/network-scripts/ifcfg-eth0 文件,配置如下参数:
1 | TYPE=Ethernet |
- 重启网络服务
执行以下命令以应用更改:
1 | sudo systemctl restart network-manager |
- 安装network-manager和netplan
在 Ubuntu 系统上,如果需要管理网络配置,确保已安装以下软件包:
1 | apt-get install netplan.io |
- 配置静态 IP 地址
对于 Ubuntu 20.04 及以后版本,在 /etc/netplan/01-network-manager-all.yaml 中设置静态 IP:
1 | network: |
配置 DHCP 自动获取 IP
1
2
3
4
5
6
7
8
9
10network:
ethernets:
eth0:
dhcp4: true
eth1:
dhcp4: true
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
version: 2应用 Netplan 配置
使用以下命令测试并应用 Netplan 配置:
1 | sudo dhclient -r //release ip 释放IP |
- 通过图形界面配置网络
在桌面环境中,可以通过 NetworkManager 的图形界面进行配置:
1、打开设置
2、选择 “Wired connected”
3、选择 “Wire settings”
4、新建 Profile 并配置 IPv4 设置
20.04之后网络配置文件目录:
/etc/NetworkManager/system-connections
- 网络接口启动与 IP 获取
启动网卡并自动获取 IP 地址:
1 | sudo ifconfig eth0 up |
- 安装networking
如果没出现/etc/network/interfaces 文件,则需要networkingapt install ifupdown -y
- 其他
/etc/resolv.conf 链接文件,但是修改无效
vim /run/systemd/resolve/stub-resolv.conf
- wifi 调试指令
1 | wpa_cli -i wlan0 scan 扫描 |