哈喽,你好啊,我是雷工!
最近有个项目使用信创的服务器,总是出现死机的情况,
联系厂家检查了一下,说是沐创网卡固件较低造成的,
让移除网卡或升级固件尝试一下。
记得5月份按厂家的说法处理过一台,
处理完观察没有出现死机的情况。
现在其余3台也要使用,但距离上次处理过去3个多月了,都忘记上次咋搞的了。
看来还是有做笔记的必要,于是这次记录一下解决过程。
便于以后类似问题的快速处理。
01 服务器系统
服务器信息


02 操作步骤
要先更新驱动rnp-1.0.102.tar,再更新固件。
2.1、下载驱动固件
首先通过厂家提供的连接下载沐创网卡驱动和固件;

2.2、指定目录
将驱动压缩包解压缩,然后进入解压缩文件中的指定目录src文件夹中,
由于部分操作需要root权限,先切换到root用户;
[admin@localhost src]$ su root
密码:
[root@localhost src]#

2.3、编译驱动
在src文件夹中点击右键-点击【在终端中打开】,打开一个终端,
输入:sudo make 编译驱动

编译驱动显示完整内容如下:
[root@localhost src]# sudo make
Makefile:44: *** compile without define.mk.
filtering include/linux/dev_printk.h out
filtering include/net/flow_keys.h out
filtering include/linux/device/class.h out
all files (for given query) filtered out
filtering include/linux/device/class.h out
filtering include/linux/device/class.h out
1 /* Autogenerated for KSRC=/lib/modules/4.19.90-89.11.v2401.ky10.aarch64/source via kcompat-generator.sh */
2 #define HAVE_DEVLINK_FLASH_UPDATE_BEGIN_END_NOTIFY
3 #define HAVE_DEVLINK_FLASH_UPDATE_PARAMS
4 #define HAVE_DEVLINK_HEALTH
5 #define HAVE_DEVLINK_INFO_DRIVER_NAME_PUT
6 #define HAVE_DEVLINK_PARAMS
7 #define HAVE_DEVLINK_PARAMS_PUBLISH
8 #define HAVE_DEVLINK_PORT_SPLIT
9 #define HAVE_DEVLINK_PORT_SPLIT_EXTACK
10 #define HAVE_DEVLINK_PORT_TYPE_ETH_HAS_NETDEV
11 #define HAVE_DEVLINK_REGIONS
12 #define HAVE_DEVLINK_REGION_OPS_SNAPSHOT
13 #define HAVE_DEVLINK_REGISTER_SETS_DEV
14 #define NEED_DEVLINK_RESOURCES_UNREGISTER_NO_RESOURCE
15 #define NEED_DEVLINK_TO_DEV
16 #define NEED_DEVLINK_UNLOCKED_RESOURCE
17 #define HAVE_NDO_FDB_ADD_VID
18 #define HAVE_NDO_GET_DEVLINK_PORT
19 #define HAVE_NDO_UDP_TUNNEL_CALLBACK
20 #define NEED_NETIF_NAPI_ADD_NO_WEIGHT
21 #define NEED_NET_PREFETCH
22 #define NEED_BUS_FIND_DEVICE_CONST_DATA
23 #define NEED_ETHTOOL_SPRINTF
24 #define HAVE_ETHTOOL_FLOW_RSS
25 #define HAVE_XDP_DO_FLUSH
26 #define NEED_NO_NETDEV_PROG_XDP_WARN_ACTION
27 #define HAVE_FLOW_DISSECTOR_KEY_CVLAN
28 #define HAVE_CDEV_DEVICE
29 #define HAVE_POLL_T
30 #define HAVE_STREAM_OPEN
31 #define NEED_CLASS_CREATE_WITH_MODULE_PARAM
32 #define NEED_CLASS_CREATE_WITH_MODULE_PARAM
33 #define HAVE_GNSS_MODULE
34 #define HAVE_STRUCT_PCI_DEV_PTM_ENABLED
35 #define NEED_PCIE_PTM_ENABLED
36 #define NEED_MUL_U64_U64_DIV_U64
37 #define HAVE_PTP_CLOCK_INFO_ADJFINE
38 #define NEED_DIFF_BY_SCALED_PPM
*** The target kernel has CONFIG_MODULE_SIG_ALL enabled, but
*** the signing key cannot be found. Module signing has been
*** disabled for this build.
make[1]: 进入目录“/usr/src/kernels/4.19.90-89.11.v2401.ky10.aarch64”
CC [M] /home/admin/SCADA/001-ruanjian/服务器死机问题/沐创/rnp-1.0.102/src/rnp_main.o
CC [M] /home/admin/SCADA/001-ruanjian/服务器死机问题/沐创/rnp-1.0.102/src/rnp_common.o
CC [M] /home/admin/SCADA/001-ruanjian/服务器死机问题/沐创/rnp-1.0.102/src/rnp_debugfs.o
CC [M] /home/admin/SCADA/001-ruanjian/服务器死机问题/沐创/rnp-1.0.102/src/rnp_ethtool.o
CC [M] /home/admin/SCADA/001-ruanjian/服务器死机问题/沐创/rnp-1.0.102/src/rnp_lib.o
CC [M] /home/admin/SCADA/001-ruanjian/服务器死机问题/沐创/rnp-1.0.102/src/rnp_mbx.o
CC [M] /home/admin/SCADA/001-ruanjian/服务器死机问题/沐创/rnp-1.0.102/src/rnp_pcs.o
CC [M] /home/admin/SCADA/001-ruanjian/服务器死机问题/沐创/rnp-1.0.102/src/rnp_n10.o
CC [M] /home/admin/SCADA/001-ruanjian/服务器死机问题/沐创/rnp-1.0.102/src/rnp_phy.o
CC [M] /home/admin/SCADA/001-ruanjian/服务器死机问题/沐创/rnp-1.0.102/src/rnp_mbx_fw.o
CC [M] /home/admin/SCADA/001-ruanjian/服务器死机问题/沐创/rnp-1.0.102/src/rnp_sriov.o
CC [M] /home/admin/SCADA/001-ruanjian/服务器死机问题/沐创/rnp-1.0.102/src/rnp_param.o
CC [M] /home/admin/SCADA/001-ruanjian/服务器死机问题/沐创/rnp-1.0.102/src/rnp_compat.o
CC [M] /home/admin/SCADA/001-ruanjian/服务器死机问题/沐创/rnp-1.0.102/src/rnp_sysfs.o
CC [M] /home/admin/SCADA/001-ruanjian/服务器死机问题/沐创/rnp-1.0.102/src/rnp_dcb.o
CC [M] /home/admin/SCADA/001-ruanjian/服务器死机问题/沐创/rnp-1.0.102/src/rnp_ptp.o
CC [M] /home/admin/SCADA/001-ruanjian/服务器死机问题/沐创/rnp-1.0.102/src/rnp_mpe.o
LD [M] /home/admin/SCADA/001-ruanjian/服务器死机问题/沐创/rnp-1.0.102/src/rnp.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/admin/SCADA/001-ruanjian/服务器死机问题/沐创/rnp-1.0.102/src/rnp.mod.o
LD [M] /home/admin/SCADA/001-ruanjian/服务器死机问题/沐创/rnp-1.0.102/src/rnp.ko
make[1]: 离开目录“/usr/src/kernels/4.19.90-89.11.v2401.ky10.aarch64”
[root@localhost src]#
2.4、安装驱动
通过输入:
sudo make install
开始安装驱动;

安装过程大概需要10分钟左右时间;
安装过程显示所有内容如下:
[root@localhost src]# sudo make install
Makefile:44: *** compile without define.mk.
filtering include/linux/dev_printk.h out
filtering include/net/flow_keys.h out
filtering include/linux/device/class.h out
all files (for given query) filtered out
filtering include/linux/device/class.h out
filtering include/linux/device/class.h out
*** The target kernel has CONFIG_MODULE_SIG_ALL enabled, but
*** the signing key cannot be found. Module signing has been
*** disabled for this build.
make[1]: 进入目录“/usr/src/kernels/4.19.90-89.11.v2401.ky10.aarch64”
Building modules, stage 2.
MODPOST 1 modules
make[1]: 离开目录“/usr/src/kernels/4.19.90-89.11.v2401.ky10.aarch64”
Installing modules…
*** The target kernel has CONFIG_MODULE_SIG_ALL enabled, but
*** the signing key cannot be found. Module signing has been
*** disabled for this build.
make[1]: 进入目录“/usr/src/kernels/4.19.90-89.11.v2401.ky10.aarch64”
INSTALL /home/admin/SCADA/001-ruanjian/服务器死机问题/沐创/rnp-1.0.102/src/rnp.ko
DEPMOD 4.19.90-89.11.v2401.ky10.aarch64
make[1]: 离开目录“/usr/src/kernels/4.19.90-89.11.v2401.ky10.aarch64”
Copying manpages…
Running depmod…
/sbin/depmod -e -F /lib/modules/4.19.90-89.11.v2401.ky10.aarch64/source/System.map -a 4.19.90-89.11.v2401.ky10.aarch64
Updating initramfs…
[root@localhost src]#
2.5、挂载驱动
挂载驱动指令如下:
sudo modprobe rnp

2.6、查看驱动
输入如下指令查看驱动是否安装成功:
lsmod | grep rnp
返回全部内容如下:
[root@localhost src]# sudo modprobe rnp
[root@localhost src]# lsmod | grep rnp
rnp 393216 0
[root@localhost src]# modinfo rnp
filename: /lib/modules/4.19.90-89.11.v2401.ky10.aarch64/updates/drivers/net/ethernet/mucse/rnp/rnp.ko
version: 1.0.102
license: GPL
description: Mucse(R) 1/10/25/40 Gigabit PCI Express Network Driver
author: Mucse Corporation, mucse@mucse.com
srcversion: 646B68D921E239654730F07
alias: pci:v00008848d00001C00svsdbcsci*
alias: pci:v00008848d00001C03svsdbcsci*
alias: pci:v00008848d00001003svsdbcsci*
alias: pci:v00008848d00001C01svsdbcsci*
alias: pci:v00008848d00001001svsdbcsci*
alias: pci:v00008848d00001004svsdbcsci*
alias: pci:v00008848d00001002svsdbcsci*
alias: pci:v00008848d00001000svsdbcsci*
depends:
name: rnp
vermagic: 4.19.90-89.11.v2401.ky10.aarch64 SMP mod_unload modversions aarch64
parm: IntMode:Change Interrupt Mode (0=Legacy, 1=MSI, 2=MSI-X), default 2 (array of int)
parm: max_vfs:Number of Virtual Functions: 0 = disable (default), 1-MAX_SRIOV_VFS = enable this many VFs (array of int)
parm: SRIOV_Mode:Change SRIOV Mode (0=MAC_MODE, 1=VLAN_MODE), default 0 (array of int)
parm: pf_msix_counts_set:Number of Max MSIX Count: (default un-limit) (array of int)
parm: rnp_loglevel:uint
parm: debug:Debug level (0=none,…,16=all) (int)
parm: fix_eth_name:set eth adapter name to rnpXX (uint)
parm: module_enable_ptp:enable ptp feature, disabled default (uint)
parm: mpe_src_port:mpe src port (uint)
parm: min_rx_pkt_len:Minumum RX packet length (uint)
parm: mpe_pkt_version:ipv4 or ipv6 src port (uint)
[root@localhost src]#
驱动安装完毕后关闭此终端即可。

2.7、配置编译环境
更新驱动如果不成功,可以配置下编译环境:
yum install -y kernel-devel
yum install -y gcc
yum install -y make
03 更新固件
安装完网卡驱动以后还需要更新一下固件,
这里使用ethtool命令更新固件,更新固件后需要重启服务器才能生效。
3.1、拷贝
首先将解压后的固件拷贝到Linux系统的/lib/firmware路径下

这里我直接复制粘贴时粘贴选项为灰色,直接拖到该路径下时提示:权限不够

3.2、修改权限
通过如下命令将该路径赋予一下权限:
sudo chmod -R 777 /usr/local/lib

复制完权限再执行复制粘贴,或拖动到指定路径下;
或者也可以通过命令复制到指定路径下。

3.3、烧录命令
执行烧录命令:
ethtool -f <ethX> xxx.img.bin 0
命令中<ethx>需要修改为实际网口名。

更新固件,用时1分钟左右;
3.4、查看版本
烧录完成后通过以下命令查看当前版本:
ethtool -i ens3f0
其中ens3f0为本服务器的实际网口名

通过上面截图可以看到当前截图还是:0.3.0-rc9
于是重启服务器。
再次查看,此时版本号为新安装的1.0.102

至此,网卡驱动和固件更新完成。






