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
  • 显示结果如下:
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
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值