Intel 网卡使用iPXE固件

1、下载ipxe源码

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

2、编译ipxe

1) 先使用lspci -nn|grep -i eth查询当前网卡的device id,如:

2)编译ipxe,可以选择编译legacy的rom,也可以选择编译uefi的rom:

#如 legacy rom
make bin/8086100e.rom
#如 uefi rom
make bin-x86_64-efi/8086100e.efirom

3、修改网卡

1)工具

烧录网卡需要用到intel的两个工具:

1、bootutil64e,下载地址:
bootutil64e下载地址

2、eeupdate64e,该软件需要intel账号才能下载:
eeupdate64e下载地址

2)烧录前准备工作

1、用bootutil64e将网卡升级为pxe

因测试的是legacy环境,暂未测试uefi

bootutil64e  -nic=1 -up=pxe  -file=BootIMG.FLB
bootutil64e  -e
  • 显示结果如下:
c 复制代码
Port Network Address Series  WOL Flash Firmware      Version
==== =============== ======= === =================== =======
  1   001B210A7760   Gigabit YES PXE                 1.0.13
  2   001B210A7761   Gigabit YES PXE                 1.0.13

2、用eeupdate64e dump网卡固件:

eeupdate64e -nic=1 -dump

可以看到当前目录生成了一个001B210A7760.bin的文件,该文件即为网卡固件。

3、修改固件

此部分将区分网卡:

1、网卡如果是intel 82599、intel x520,那么不需要操作,此步跳过

2、网卡如果是intel i210,由于i210比较老,因此工具校验的不是那么严格,可以参考文档Intel i210网卡使用iPXE固件直接进行烧录

3、网卡如果是intel x540、intel x550/x552、 intel x722等等,则需要修改固件,将步骤2中的导出的网卡固件里面的pxe rom部分替换为ipxe的rom。

替换方式如下(下面以x722为例):

使用UltraEdit打开步骤2中生成的bin文件

由于intel固件中都是以word形式读写数据,因此需要找到0x5地址的值,0x5地址为指向option rom的实际存放地址,即上图中的数据DE 83,word值即为0x83de,而高位表示指针的type

即网卡pxe option rom的地址为:0x3de * 4k = 0x3de0000

可以看到此地址的数据内容确实是PXE的option rom启动信息。

4、将pxe信息替换为ipxe信息

#其中3960 * 1K 即为 偏移地址 0x3de000
dd if=808637d0.bin of=001B210A7760.bin bs=1K seek=3960 conv=notrunc

5、 修改pxe版本信息

此部分不是强制要求,不修改也不影响

PXE的版本信息位于固件地址0x32,如上图中的版本即为1.1.09,可以修改为ipxe自身的版本号,但需要注意两点:

1、修改后,固件地址0x3f为checksum,必须重新计算更新

2、几乎每个网卡固件的配置部分都是有一个shadow的,以x722为例,x722的网卡固件配置大小为64K,因此shadow的起始位置也为64K即0x10000

如果要修改版本信息最好两部分配置一起修改一起更新各自的checksum。

这里就不详细讲checksum计算方法了。

4、烧录网卡固件

此部分也区分网卡进行说明:

1、网卡如果是intel 82599、intel x520,因为82599的网卡配置和option rom是分别存放于eeprom和flash中,所以可以直接使用eeupdate64e包中的lanconf64e工具,选择flash,选择文件808610f8.rom进行烧录到flash中

2、网卡如果是intel i210,那么可以参考文档Intel i210网卡使用iPXE固件

3、网卡如果是intel x540、intel x550/x552,此类网卡配置和option rom都是位于同一个flash当中,需要使用烧录器将网卡flash取下,再修改过的ipxe 固件001B210A7760.bin重新烧回到flash当中。

【注意】:此处无法使用eeupdate64e再将001B210A7760.bin重新刷回网卡,因为本身001B210A7760.bin固件添加了签名校验,修改了ipxe后校验值已经对不上了,而这个校验只在升级时eeupdate64e使用,eeupdate64e检查到校验不正确时会返回烧写失败。使用烧录器重新烧录后,不管是bios还是系统当中都只会校验0x3f地址的checksum,不会再校验签名,因此不影响使用

4、intel x722,此网卡比较特殊,该网卡没有自身网卡的flash,而是和bios共用flash,因此网卡固件需要包入到bios当中,但在bios中存放的位置是固定的,因此可以使用烧录器将整个bios一起读出来,然后计算偏移值,使用dd命令替换对应网卡固件的区域,然后再用烧录器重新烧回bios flash当中

dd if=001B210A7760.bin of=bios.bin bs=1K seek=xxxx conv=notrunc
相关推荐
穷人小水滴1 个月前
编译运行 llama.cpp (vulkan, Intel GPU SYCL)
ai·gpu·intel·llama.cpp·a770·vulkan·sycl
roxxo3 个月前
生产英特尔CPU处理器繁忙的一天
经验分享·笔记·制造·cpu·intel·生产制造·intel 芯片
dingdingfish3 个月前
一个计算密集小程序在不同CPU下的表现
linux·arm·cpu·intel·benchmark·amd
硬蛋学堂4 个月前
英特尔 “AI” 科通:英特尔AI大模型应用前瞻
大数据·人工智能·intel
神仙约架4 个月前
【INTEL(ALTERA)】采用 JTAG 频率为 24MHz 或 16Mhz 的非流水线Nios® V/m 处理器,niosv-download 失败
fpga开发·intel·altera
迪普微社区5 个月前
产品推荐 | 基于Intel (Altera) Cyclone V打造的水星Mercury SA1核心板
图像处理·fpga开发·fpga·intel·altera·核心板
zeruns6 个月前
升级一下电脑,CPU换I5-14600K,主板换华硕B760M
电脑·cpu·intel·i5·14600k
Hcoco_me7 个月前
什么是Boot Guard?电脑启动中的信任链条解析
arm开发·算法·电脑·uefi·intel·安全启动
猛码Memmat8 个月前
ARM与X86架构的区别与联系
arm开发·架构·intel·amd
神仙约架10 个月前
【INTEL(ALTERA)】 quartus 专业版软件 23.4 中模拟以太网子 FPGA IP 时p_ss_app_st_tx_ready 信号变为 X
网络·fpga开发·intel·quartus·altera