国产网卡网讯WX1860A2,Linux驱动安装方法
- 1、关于网卡
- 2、安装编译环境
- 3编译驱动
- 总结
1、关于网卡
网迅科技WX1860系列千兆以太网络控制器芯片,支持PCIe2.0×4主机接口,2或4个RJ45端口,具有RGMII接口,支持外接光口PHY实现1GbE光端口,支持网络数据包校验和卸载,支持RSS、QoS、NC-SI、PXE等,WX1860系列芯片主要应用于网络安全设备、工控计算机、服务器、工作站或嵌入式主板等。
国产操作系统,麒麟Kylin、统信UOS、欧拉openeluer、龙蜥Anolis,较新的系统已经预装了该网卡的驱动。老系统如Redhat、centos、debian、ubuntu等没有预装驱动,这时就需要手动安装驱动。


2、安装编译环境
由于官网提供的驱动是源码包,需要提前安装编译环境。这里主要使用centos7.9、ubuntu22.04.3环境演示,centos7.9做全步骤演示,因为原理相同ubuntu22.04.3如有不一样的地方再单独说明,推荐使用yum,apt去安装编译环境。
2.1准备网络环境
yum肯定需要联网,如果服务器上还有其他型号网卡并且有驱动,可以接上网线用该网卡上网。如果服务器只有网讯或者没有其他网卡可用。
可用通过ip a命令查看网卡,本服务器只有板载2口千兆网讯网卡,可以发现没有可用网卡,如下图:

2.1.1方法1使用手机给服务器提供热点
使用一条USB A-C数据线连接服务器,在手机 设置→更多连接→个人热点→USB网络共享,以小米hyperos系统为例,其他系统可能位置不一样。


打开后再次通过ip a命令查看网卡,已经有一张可用网卡,并已经获取地址

2.1.2方法2使用USB网卡(推荐)
在服务USB口上插入USB网卡,接上网线,大概率和你的电脑是同一个网络,网络通以后可以使用终端登录服务器,减少手动敲命令

通过ip a命令查看网卡,已经有一张可用网卡,并已经获取地址

Ubuntu配置网络时需要注意的地方
ubuntu插入usb网卡,网卡可能处于down的状态,需要手动up网卡,刷新dhcp、配置dns
cpp
sudo -i
ip a
ip link set dev enx00e04c680295 up
dhclient
echo "nameserver 223.5.5.5" > /etc/resolv.conf

2.2下载驱动
可以到网讯下载中心下载驱动,

ngbe是网卡驱动,通常物理机安装驱动就用ngbe这个。ngbevf是虚拟化的驱动。
下载完成,建议解压好后传到服务器/root/目录下,或用U盘复制


ubuntu环境
ubuntu默认不允许root用户直接登录,传输文件需要传到/home/用户/目录下,我这边普通用户为user,传到了/home/user/目录下

2.3更新软件源
centos在几年前已经停止了软件更新,yum源也关闭了。还有些系统源在国外,下载速度非常慢,这里可以使用一个更换软件源脚本大部分linux系统都可以用,有专人更新。
cpp
bash <(curl -sSL https://linuxmirrors.cn/main.sh)
输入上面命令可以弹出可以选中的软件源地址,脚本内有中文,如果是在终端输入可以正常显示

如果接显示器用键盘输入,如果没安装中文包,显示不了中文。但这里不影响,不需要看懂一直按敲回车下一步、下一步就行

2.4安装编译环境
编译需要安装 kernel-devel、kernel、gcc正常情况需要对应内核版本安装对应版本的kernel,但有些内核版本太低,或者软件源只有最新的版本,最终可能报错。
cpp
yum install -y kernel-devel-$(uname -r)
yum install -y kernel $(uname -r)
yum install -y gcc

如果出现上面的报错,先默认安装,不指定版本
cpp
yum install -y kernel-devel
yum install -y kernel
yum install -y gcc

Ubuntu环境
ubuntu环境需要安装一下编译环境,headers版本在源上保留很完整,大概率可以匹配上,不太可能出现下面 2.5节描述的情况。
cpp
sudo -i
apt install -y make
apt install -y gcc
apt install -y linux-headers-$(uname -r)
2.5 kernel小版本对不上,导致编译找不到kernel环境,很坑,大概率会卡在这
安装好环境尝试编译,依然出现找不到kernel目录
cpp
[root@192 ~]# cd /root/ngbe-1.2.7/src/
[root@192 src]# make install
common.mk:79: *** Kernel header files not in any of the expected locations.
common.mk:80: *** Install the appropriate kernel development package, e.g.
common.mk:81: *** kernel-devel, for building kernel modules and try again. Stop.
通过以下命令,复制一份kernel目录
通过uname -r查看内核版本
通过ls /usr/src/kernels/ 查看kernel安装的版本
通过cp -r /usr/src/kernels/3.10.0-1160.119.1.el7.x86_64/ /usr/src/kernels/3.10.0-1160.el7.x86_64 复制ls /usr/src/kernels/ 的文件夹,并重新命名为uname -r的名称。
每台服务器,每个系统版本号可能不同根据实际查看到的内容填写。

3编译驱动
通过以下命令进行编译
cpp
chmod +x -R /root/ngbe-1.2.7/
cd /root/ngbe-1.2.7/src/
# 这里1.2.7是下载驱动的文件夹名也是版本号,如果下载了其他版本对应更改数字
make install

编译完成
安装完成通过modprobe ngbe命令加载驱动加载成功就能看到网卡(centos大概率加载不出来,ubuntu可以加载),加载不出来可以重启服务器。
网卡已经识别

Ubuntu环境

总结
1、准备网络环境,USB网卡,手机热点
2、安装编译环境,下载驱动
3、编译驱动
Centos7.9环境
cpp
bash <(curl -sSL https://linuxmirrors.cn/main.sh)
yum install -y kernel-devel
yum install -y kernel
yum install -y gcc
cp -r /usr/src/kernels/3.10.0-1160.119.1.el7.x86_64/ /usr/src/kernels/3.10.0-1160.el7.x86_64
# 3.10.0-1160.119.1.el7.x86_64是ls /usr/src/kernels/的值
# 3.10.0-1160.el7.x86_64是(uname -r的值)
chmod +x -R /root/ngbe-1.2.7/
cd /root/ngbe-1.2.7/src/
make install
reboot
Ubuntu环境
cpp
sudo -i
ip a
ip link set dev enx00e04c680295 up
# 其中enx00e04c680295是ip a 查询到的网卡名
dhclient
echo "nameserver 223.5.5.5" > /etc/resolv.conf
bash <(curl -sSL https://linuxmirrors.cn/main.sh)
apt install -y make
apt install -y gcc
apt install -y linux-headers-$(uname -r)
chmod +x -R /home/user/ngbe-1.2.7/
cd /home/user/ngbe-1.2.7/src/
make install
modprobe ngbe
reboot