0、前言

       目前ipxe编译的固件为rom或mrom格式,但intel官方工具支持支flb格式升级,因此需要将rom转换为flb格式。当前intel并没有提供rom转flb的工具,因此自己折腾了个升级步骤成功升级iPXE固件。

1、下载ipxe源码

https://git.ipxe.org/ipxe.git/tree

2、查看当前网卡的pci venderID

lspci -nn|grep -i ethernet

3、下载intel最新的网卡工具

http://downloadmirror.intel.com/19186/eng/PREBOOT.EXE

4、编译ipxe源码,例如网卡i210 pci venderID为80861533

make -j 4 bin/80861533.rom bin/80861533.mrom

5、制作升级的FLB文件

bootutil64e -e
  • 显示结果如下:
Port Network Address Series WOL Flash Firmware Version 
==== =============== ======= === =================== ======= 
1 001B210A7760 Gigabit YES PXE 1.0.13 2 00270e0d5678 Gigabit YES PXE 1.0.8
  • 备份原来的flb文件:
bootutil64e -nic=1 -saveimage -file=backup.flb

(注意这里需要flashfirmware格式为pxe,如果是iscsi需要更换为pxe,更换命令为)

bootutil64e -nic=1 -up=pxe -file=../BootIMG.FLB
  • 提取pxe的flb格式头文件:
dd if=backup.flb bs=1 count=378 of=header.flb
  • 查看80861533.rom和80861533.mrom版本
bootutil64e -iv -file=80861533.rom bootutil64e -iv -file=80861533.mrom
  • 显示结果为:
Connection to QV driver failed - please reinstall it! Intel(R) Ethernet Flash Firmware Utility BootUtil version 1.6.57.0 Copyright (C) 2003-2017 Intel Corporation Image versions in 80861533.rom

PXE v15.10.99

Port    Network Address    Location      Series    WOL    Flash   Firmware Version

====  ===============  ========  =======  ===  =============================  =======

1     00A0C9000000   4:00.0       Gigabit  NO       PXE                       15.10.99



Connection to QV driver failed - please reinstall it! Intel(R) Ethernet Flash Firmware Utility BootUtil version 1.6.57.0 Copyright (C) 2003-2017 Intel Corporation Image versions in 80861533.mrom

PXE v5.9.248

Port    Network Address    Location      Series    WOL    Flash     Firmware Version
====  ===============  ========  =======  ===  =================     ==========

1       00A0C9000000   4:00.0    Gigabit   NO        PXE              15.10.99
  • 查看80861533.rom和80861533.mrom文件大小
# ls -l 
-rw-r--r-- 1 root root 69120 Sep 20 20:06 80861533.mrom 
-rw-r--r-- 1 root root 68096 Sep 20 15:28 80861533.rom
  • UE打开header.flb文件,地址0xe0为rom文件大小,下图rom文件大小为0x010e00即69120Bytes,0x136为版本号,下图rom版本为5.9.248。修改此两个地方为80861533.rom和80861533.mrom的值,分别命令为header-pxe-mrom.flb、header-pxe-rom.flb
  • 查看文件版本
bootutil64e-iv -file 80861533-rom.flb

(header-pxe-mrom.flb、header-pxe-rom.flb版本不替换也没有关系,不影响升级,只影响查文件版本时的显示)

  • 合并文件为最终升级的FLB文件
cat header-pxe-mrom.flb 80861533.mrom > 80861533-mrom.flb cat header-pxe-rom.flb 80861533.rom > 80861533-rom.flb

6、升级新的FLB文件

bootutil64e -nic 1 -restoreimage -file 80861533-rom.flb 或 bootutil64e -nic 1 -restoreimage -file 80861533-mrom.flb

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐