本帖最后由 myway 于 2024-9-29 11:21 编辑
首先说结论:可以刷成原厂的固件,可有【但是】
Edit1: 原厂各个版本基本都能随便刷(升降级),也能刷回去华为版固件。 但是,华为的刷成原厂固件有问题,两个口其中一个口在VyOS识别为A/D(Admin Down,表示该接口在管理上被关闭)
Edit2:除了OS上操作固件刷新外, 实践了更加简便的UEFI路径,基本是有手就能刷。
首先,感谢 有求必硬 提供了华为 SP330的固件,由于买了这个卡,所以打算刷新一下固件。
但解压包里边的 install.sh 即便用sudo提权了,也执行没有任何动静。
因此,想起来以前LSI SAS芯片的也出了好几家不同OEM的卡,然后也是可以刷回原厂固件。 想到这里,燃起希望,满世界搜索。
方法,找到了,但是操作起来比较复杂,恐怕没有点Linux基础的,后边我觉得你就浏览算了。
工具,其实就两个程序,加上配套的rom、bin以及cfg文件。但是准备环境是有些周转,若你也想捣鼓,自己按照实际情况调整。
1. 基本情况
由于我是在VyOS 1.4LTS环境下,使用X710-DA2作为接入光猫以及交换机的。因此,为了不破坏生产环境,我就直接用VyOS 1.5 Rolling,即Debian 12 Linux
2. 准备原厂固件有关文件
创建一个目录,例如 X710-DA2
下载 Intel® Ethernet Adapter Complete Driver Pack 840M
https://www.intel.com/content/ww ... 0da2/downloads.html
解压后,Release_29.3.1\NVMUpdatePackage\700_Series 中找到 700Series_NVMUpdatePackage_v9_52_Linux.tar.gz, 继续解压。
将 \700Series\ 整个Linux_x64 文件夹,以及, Release_29.3.1\APPS\BootUtil\Linux_x64\ 的 bootutil64e、\DRIVER 复制到 X710-DA2
然后,在 Linux_64 里边找到 BootIMG.FLB、nvmupdate64e、X710DA2_9p52_CFGID7p2_OEMGEN_K97470.bin 放到根目录。
切记,别删除了DRIVER目录
弄好之后,应该是这样:
- Mode LastWriteTime Length Name
- ---- ------------- ------ ----
- d----- 2024/8/14 17:36 Linux_x64
- d----- 2024/9/27 16:29 DRIVER
- -a---- 2024/7/10 6:17 3444736 bootutil64e
- -a---- 2024/8/14 17:33 4153240 nvmupdate64e
- -a---- 2024/9/27 16:37 1550967 BootIMG.FLB
- -a---- 2024/9/27 17:01 48479 nvmupdate.cfg
- -a---- 2024/9/27 16:51 4194304 X710DA2_9p52_CFGID7p2_OEMGEN_K97470.bin
复制代码
然后将整个文件夹,拷贝到OS里边,例如 /home/vyos/
3. 准备OS环境
如下就根据自己实际情况调整, 主要的目的就是 编译驱动,即iqvlinux.ko,华为固件包里边,自带的是5.10.0.60.18.0.50.h1083.eulerosv2r11.x86_64
我现在怀疑是老哥没有注意OS,如果有Ubuntu,Debian之类,应该就能执行,至少可以加载 这个网卡驱动,不用麻烦自己编译。。。
流水账记录一下,在VyOS下如何达成目的
- #系统环境
- vyos@vyos:/mnt/710/DRIVER$ lsb_release -a
- No LSB modules are available.
- Distributor ID: Debian
- Description: Debian GNU/Linux 12 (bookworm)
- Release: 12
- Codename: bookworm
- #内核版本
- vyos@vyos:/mnt/710/DRIVER$ uname -r
- 6.6.51-vyos
- #添加apt源
- sudo nano /etc/apt/source.list
- deb https://mirrors.huaweicloud.com/debian/ bookworm main non-free non-free-firmware contrib
- deb-src https://mirrors.huaweicloud.com/debian/ bookworm main non-free non-free-firmware contrib
- deb https://mirrors.huaweicloud.com/debian-security/ bookworm-security main
- deb-src https://mirrors.huaweicloud.com/debian-security/ bookworm-security main
- deb https://mirrors.huaweicloud.com/debian/ bookworm-updates main non-free non-free-firmware contrib
- deb-src https://mirrors.huaweicloud.com/debian/ bookworm-updates main non-free non-free-firmware contrib
- deb https://mirrors.huaweicloud.com/debian/ bookworm-backports main non-free non-free-firmware contrib
- deb-src https://mirrors.huaweicloud.com/debian/ bookworm-backports main non-free non-free-firmware contrib
- sudo apt update
- #安装编译基础包
- sudo apt install build-essential
- #安装 Linux kernel headers
- 来源:https://dev.packages.vyos.net/?dir=repositories/current/pool/main/l/linux-upstream
- 下载:https://dev.packages.vyos.net/repositories/current/pool/main/l/linux-upstream/linux-headers-6.6.51-vyos_6.6.51-1_amd64.deb
- sudo dpkg -i linux-headers-6.6.51-vyos_6.6.51-1_amd64.deb
- #编译以及安装网卡驱动
- vyos@vyos:~$
- cd /home/vyos/X710-DA2
- sudo ./install
- Extracting archive...OK!
- Compiling the driver...OK!
- Directory for driver installation does not exist...need to create it.
- Directory for driver installation created successfully.
- Skipping removing QV driver - it does not exist...
- Copying iqvlinux.ko driver file to /lib/modules directory...OK!
- Driver installation verification...Installed!
复制代码
4. 开始动手刷固件
首先,检测硬件,如下的Port 3、4 应该就是目标网卡。
- vyos@vyos:/mnt/710$ sudo ./bootutil64e
- Intel(R) Ethernet Flash Firmware Utility
- BootUtil version 1.42.06.0
- Copyright (C) 2003-2024 Intel Corporation
- Type BootUtil -? for help
- Port Network Address Location Series WOL Flash Firmware Version
- ==== =============== ======== ======= === ============================= =======
- 1 D05099DDB61C 0:31.6 Gigabit N/A FLASH Not Present
- 2 78586011A242 1:00.0 40GbE N/A UEFI,PXE Enabled 1.0.31
- 3 78586011A243 1:00.1 40GbE N/A UEFI,PXE Enabled 1.0.31
- 4 D05099DDB61B 4:00.0 Gigabit N/A FLASH Not Present
复制代码
接着,刷ROM,确保BootIMG.FLB与bootutil64e都在一起
没有意外的话,我是没有,所以你要是有,,,我没有答案给你。 稍等一下,保存卡上现有的ROM,以及刷入新的ROM
1.0.31 --> 1.1.45
- vyos@vyos:/mnt/710$ sudo ./bootutil64e -NIC=2 -up=combo
- Intel(R) Ethernet Flash Firmware Utility
- BootUtil version 1.42.06.0
- Copyright (C) 2003-2024 Intel Corporation
- Programming flash on port 2 with flash firmware image
- Create restore image of NIC 2 before proceeding? (Y)es or (N)o: y
- Y
- Saving flash firmware image on port 2 to file 1572400B.FLB...saved
- /
- Flash update successful
- Port Network Address Location Series WOL Flash Firmware Version
- ==== =============== ======== ======= === ============================= =======
- 1 D05099DDB61C 0:31.6 Gigabit N/A FLASH Not Present
- 2 78586011A242 1:00.0 40GbE N/A UEFI,PXE Enabled 1.1.45
- 3 78586011A243 1:00.1 40GbE N/A UEFI,PXE Enabled 1.1.45
- 4 D05099DDB61B 4:00.0 Gigabit N/A FLASH Not Present
复制代码
最重要的一环来了,修改nvmupdate.cfg文件。 原版文件里的信息,你打开看看就知道,保存着每个型号的信息。
确认网卡的型号,我的是X710-DA2,以及需要如下命令,得到的firmware-version中的 80002a82 信息,即ETrackID
- vyos@vyos:~$ sudo ethtool -i eth2
- driver: i40e
- version: 6.6.51-vyos
- firmware-version: 5.05 0x[color=Red]80002a82[/color] 1.1313.0
- expansion-rom-version:
- bus-info: 0000:01:00.0
- supports-statistics: yes
- supports-test: yes
- supports-eeprom-access: yes
- supports-register-dump: yes
- supports-priv-flags: yes
复制代码
准备 创建 nvmupdate.cfg 文件。 a. 从原版文件找到X710-DA2对应的那组信息。 b. 将 80002a82 替换 REPLACES: 原有信息。
正确的文件,应该是如下样子,保存好,与 nvmupdate64e一起放在根目录。
- vyos@vyos:~$ sudo nano nvmupdate.cfg
- CURRENT FAMILY: 1.0.0
- CONFIG VERSION: 1.14.0
- BEGIN DEVICE
- DEVICENAME: X710-DA2
- VENDOR: 8086
- DEVICE: 1572
- NVM IMAGE: X710DA2_9p52_CFGID7p2_OEMGEN_K97470.bin
- OROM IMAGE: BootIMG.FLB
- EEPID: 8000F4BC
- REPLACES: 80002A82
- RESET TYPE: POWER
- END DEVICE
复制代码
最重要的一步,刷入固件。 这里注意用 root 操作,会省却点麻烦事。
然后,执行 ./nvmupdate64e -rd, -rd 是 重置vender的配置,即华为的配置。
这个细节,是因为有些OEM有自己的配置限制,例如LENOVO 的不能打开SR-IOV
稍微耐心等个几分钟,如下#2 X710的Firmware就会被刷新。
- vyos@vyos:/home/vyos/X710-DA2$ sudo -i
- root@vyos:/home/vyos/X710-DA2# ./nvmupdate64e -rd
- Intel(R) Ethernet NVM Update Tool
- NVMUpdate version 1.42.8.0
- Copyright(C) 2013 - 2024 Intel Corporation.
- WARNING: To avoid damage to your device, do not stop the update or reboot or power off the system during this update.
- Inventory in progress. Please wait [-*********]
- Num Description Ver.(hex) DevId S:B Status
- === ================================== ============ ===== ====== ==============
- 01) Intel(R) Ethernet Connection (7) N/A(N/A) 15BB 00:000 Not supported
- I219-LM
- 02) Intel(R) Ethernet Controller X710 5.05(5.05) 1572 00:001 Update
- for 10GbE SFP+ available
- 03) Intel(R) I210 Gigabit Network N/A(N/A) 1533 00:004 Update not
- Connection available
- Options: Adapter Index List (comma-separated), [A]ll, e[X]it
- Enter selection: 2
- Would you like to back up the NVM images? [Y]es/[N]o: y
- Update in progress. This operation may take several minutes.
- [....******]
- Num Description Ver.(hex) DevId S:B Status
- === ================================== ============ ===== ====== ==============
- 01) Intel(R) Ethernet Connection (7) N/A(N/A) 15BB 00:000 Not supported
- I219-LM
- 02) Intel(R) Ethernet Controller X710 9.80(9.50) 1572 00:001 Update
- for 10GbE SFP+ successful
- 03) Intel(R) I210 Gigabit Network N/A(N/A) 1533 00:004 Update not
- Connection available
- A power cycle is required to complete the update process.
- Tool execution completed with the following status: All operations completed successfully.
- Press any key to exit.
复制代码
你若是想看更多信息,执行 ./nvmupdate64e -i -l,最后那个参数是 小写字母 l,即 list
5. reboot
重新进入系统后, 检查信息
- vyos@vyos:~$ sudo ethtool -i eth2
- driver: i40e
- version: 6.6.49-amd64-vyos
- firmware-version: 9.50 0x8000f4bc 1.3682.0
- expansion-rom-version:
- bus-info: 0000:01:00.0
- supports-statistics: yes
- supports-test: yes
- supports-eeprom-access: yes
- supports-register-dump: yes
- supports-priv-flags: yes
- vyos@vyos:~$
复制代码
firmware-version: 5.5 --> 9.50
写完,睡觉。 |