简介这份文档面向具备 Linux 基础与网络硬件知识的运维、开发人员聚焦 eeupdate64 工具在 x86 平台下对 I210、I350、82575/6、XL710、E810 等网卡的 MAC 地址修改与固件烧录。内容按前期准备、软件适配、i350 与 xl710 实操、全新网卡从零烧录的顺序展开涵盖单口与多口 MAC 批量写入、.eep 固件制作与回写、.bin 与 .eep 烧录耗时差异以及烧录后用 ping 验证网口连通性的完整闭环。文中还给出 eeprom less 状态识别、device ID 由 151F 变为 1521、主板自带网口需避让、多口地址连续分配等排错提示并强调操作前关闭主机、拔掉电源线、在未上电插槽安装网卡完成后重启核对地址以降低误改风险。压缩包内为 1 个 docx约 1.09MB按操作阶段组织适合边做边查。已有 1809 人学习可用于服务器部署、网络环境变更、网卡底层配置与故障复现等场景。1. 从一块认不出的网卡说起eeupdate64 在 Linux 下到底改什么仓库里翻出来的一块 i350插进机器ip l里干干净净连个网口都不给看eeupdate64e一跑回你一句eeprom less。不少人到这一步就判定卡坏了其实这张卡的 EEPROM 里既没有固件也没有 MAC需要先用 Linux 系统下的 eeupdate64 工具把固件烧进去再写 MAC 地址。这类活在网卡返修、整机出厂、服务器换板之后特别常见i210、i350、82575/6、xl710、e810 都在支持列表里。这篇记录按装机顺序走先把 x86 平台和目录结构列清再分别落地 i350 与 xl710 的 MAC 地址修改和固件烧录最后给出跑不通时的排查表和一条能闭环的验证路径。2. 环境先列清eeupdate64e 解压、授权与驱动安装的三个位置2.1 硬件与系统清单一台 x86 机器、两块网卡、一个光转电模块这套活儿的门槛不在命令在物料。少一样就得中途拆机拆完还得重新走一遍断电流程。我一般按下面这张表备料一次性摆到工位上再动手。物料用途注意点x86 主板 PC 一台烧录主机装 Linux 系统必须是物理机虚拟机里认不到 PCI Device IDi350 网卡一块本次改 MAC、烧固件四口千兆PCIe 插槽供电xl710 网卡一块本次烧固件光口验证时要光转电模块键盘、显示器各一个进系统敲命令、必要时进 BIOS 看枚举远程 SSH 在卡没起来时救不了场可连内网的网线一根最后 ping 验证长度够到交换机电源线两根主机与显示器中途要断电插卡别用排插总控光转电模块一个xl710 光口转 RJ45没有它xl710 烧完也 ping 不了为什么强调物理机eeupdate64e干的是直接读写网卡 EEPROM / Flash 的活靠的是 PCIe 配置空间里的 Device ID 来定位设备。虚拟机呈现给你的是一层虚拟网卡Device ID 对不上工具列出来的列表里根本没有目标卡。就算做了 PCIe 直通主机 BIOS 对插槽的枚举、上电时序这些东西仍然绕不开出问题时排查面反而更大。所以这类烧录我一律用一台带标准 PCIe 插槽的 x86 机器系统装最小化的 Linux 就行不需要图形界面。光转电模块容易被漏掉。xl710 常见的是 SFP/QSFP 光口烧录阶段用不到它但最后验证 ping 的时候手上只有一根 RJ45 网线是插不进去的得靠模块转一道。我吃过这个亏卡烧得好好的验证环节卡了半小时找模块。2.2 解压与两个目录/root/Linux_x64 和 OEM_Mfg 别搞混压缩包从网卡芯片厂商的官方支持页面下载用 U 盘或内网传到这台 x86 机器上。放哪儿无所谓我习惯丢/root下因为后面几条路径都是按/root展开的路径一致能少踩一次「目录不存在」的坑。# 进到压缩包所在目录按实际后缀选解压命令 cd /root ls -l eeupdate* # 先看清文件名和后缀 tar -xzf eeupdate64*.tar.gz # .tar.gz 用这条 # unzip eeupdate64*.zip # .zip 用这条解压完先别急着往下走把目录结构看清楚。这套工具解开之后有两处关键路径作用完全不同混了就会出现在错误的地方执行命令、怎么跑都提示找不到设备的情况。# 第一处驱动安装脚本和可执行文件所在目录 cd /root/Linux_x64/ ls -l # 应该能看到 install 和 eeupdate64e 两个文件 # 第二处工具本体与产线脚本目录日常操作都在这里 cd /root/eeupdate/TOOLS/Linux_x64/OEM_Mfg ls -l # 这里能看到 eeupdate64e 可执行脚本第一处是「安装入口」负责把驱动装进系统第二处是「操作入口」改 MAC、烧固件都在这里执行。我一般把这两条路径写在便签上贴显示器边框因为来回cd的时候真的很容易在/root/Linux_x64里就顺手敲了./eeupdate64e然后对着一个空列表发呆。顺带说一句资料里这个工具名有时候被写成eeupdate64e有时候被写成eeupdata64e多一个 a是同一样东西的笔误照着实际文件名敲就行别去mv改名后面文档里的命令都是按原名写的。2.3 chmod x 与 ./install先给权限再装驱动解压出来的文件默认不一定带执行位。直接跑会报Permission denied这是新手最容易卡住的第一道门。权限给完再走驱动安装。cd /root/Linux_x64/ # 给两个文件补上可执行权限 chmod x install chmod x eeupdate64e # 执行安装脚本加载工具依赖的驱动 ./installchmod x里的x是给文件加上执行位install是脚本名。注意./install前面那个./不能省——不加的话 shell 会去PATH环境变量列出的目录里找名为install的程序找到的多半是系统自带的/usr/bin/install那是个拷贝文件的工具跑完什么也不会发生你还以为装好了。这个误会我见过不止一次。./install执行完正常会打印驱动安装成功的提示。这一步实际做的是把工具需要的内核模块装进当前系统让eeupdate64e能绕过普通网卡驱动直接访问 EEPROM。装完之后退出当前目录进到 2.2 里说的第二处操作入口cd /root/eeupdate/TOOLS/Linux_x64/OEM_Mfg ls -l eeupdate64e看到这个文件带着x权限位环境这块就算齐了。接下来是断电插卡关闭计算机拔掉电源线再把 i350 或 xl710 插到 PCIe 插槽上。带电插 PCIe 卡的后果不用多说轻则枚举异常重则卡直接报废这一步没有省事的办法。提示插卡前先摸一下机箱金属部分放静电冬天在干燥机房里这个动作能省下一块卡。3. i350 改 MAC单口 /nic2 与四口 /device1521 /A 两套写法3.1 先看 NIC 编号主板自带那块网口不要动上电开机进到OEM_Mfg目录先不带任何参数跑一次让工具把机器里能识别的网卡全列出来。cd /root/eeupdate/TOOLS/Linux_x64/OEM_Mfg ./eeupdate64e输出里会列出若干个端口每个端口前面有个 NIC 编号。这里有个必须记住的规则NIC1 是 x86 主板自带的网卡不要动它。主板板载网口和插上去的 i350 用的是同类芯片工具会把它们排在一起看着都像目标卡改错了主板网口这台烧录机自己就上不了网了。NIC 编号对应端口能不能动NIC1主板板载网口不要动改完主机自己断网NIC2i350 第 1 个千兆口可改NIC3 至 NIC5i350 第 2 至第 4 个千兆口可改手头这块是四口千兆卡所以列表里除了主板口还能看到四个属于 i350 的端口。改之前先在机箱上给每个口贴个编号标签或者记下网口在挡板上的物理顺序后面ip l核对时对得上号。这个动作看着多余等四个口 MAC 都改完、要逐个确认的时候就知道值了。3.2 单口改 MAC/nic2 /mac 一条命令单个口改 MAC一条命令就够。以00E003509820为例改 i350 的第 1 个口# /nic2 指定端口序号/mac 后面跟 12 位十六进制 MAC ./eeupdate64e /nic2 /mac00e003509820几个参数的含义拆开说/nic2目标端口在工具列表里的 NIC 编号就是 3.1 里看到的那个数字不是物理口序号。物理第 1 口对应的 NIC 值取决于主板枚举顺序以实际列表为准。/mac12 位十六进制不带冒号、不带横线大小写都认。写成00:e0:03:50:98:20工具会报格式错误。MAC 的取值有一条硬规则第一个字节的最低位必须是 0也就是第二个十六进制字符只能是 0、2、4、6、8、A、C、E 之一。这一位是组播标志位写成奇数就成了组播地址网卡收不到单播包表现为链路起来了但 ping 谁都不通。00e003509820的第二个字符是 0合法。命令执行成功会打印修改成功的提示。改完必须重启计算机工具写的是 EEPROM驱动在加载时读一次不重启的话ip l看到的还是旧值容易误判成没改成功。# 重启后核对 ip l看对应网口那行的link/ether字段是不是变成了00:e0:03:50:98:20。格式上工具里写的是无分隔符ip l显示的是带冒号的两种写法指的是同一个地址别以为没生效。3.3 四口批量mac2.dat 的格式与 /A 参数四个口一个个改太慢工具支持按文件批量写。这次改00E003509820到00E003509823四个连续地址做法是先建一个文本文件再让工具按文件烧。cd /root/eeupdate/TOOLS/Linux_x64/OEM_Mfg # 建文件 touch mac2.dat # 编辑写入起始 MAC 和数量 vim mac2.dat文件内容只有一行00e003509820 [4]前面是起始 MAC中括号里的4表示从这个地址开始连续写 4 个工具自己按 1 递增分别落到 4 个口上。中括号和数字之间留一个空格行尾不要有多余字符这个文件是按行解析的多一个空格在某些版本上会解析失败。# /device1521 指定 i350 的 PCI Device ID/A 表示按文件批量写入 ./eeupdate64e /device1521 /A mac2.dat参数说明参数含义本次取值/device按 PCI Device ID 选中所有同型号网卡1521i350 的 ID/A按文件批量写 MAC后面直接跟文件名mac2.dat存放起始地址与数量的文本一行MAC [数量]/device和/nic的差别值得说清楚/nic是「我只动列表里第几个口」/device是「我把所有这个型号的卡一起动」。用/device1521的时候机器里所有 i350 都会被写包括主板板载的那块——如果主板网口也是 i350 芯片它一样会被覆盖。所以批量之前先确认主板网口型号拿不准就老老实实回到/nic一个个来慢一点但不会翻车。批量写完成后同样要重启。重启后用ip l把四个口逐个对一遍确认link/ether是 9820、9821、9822、9823 四个连续地址顺序和物理口一一对应。这一步别偷懒只看第一个口工具按 NIC 编号顺序写入物理口顺序如果和枚举顺序不一致会出现「地址都对、位置错了」的情况后面接线上架时排查起来很费时间。注意批量文件里的 MAC 不能带冒号也不要在同一个文件里混入不连续的地址段工具只认「起始地址 数量」这一种格式。4. 固件烧录i350 的 .eep 与 xl710 的 .bin/.eep 怎么选4.1 i350 只认 .eep先 /dump 备份再烧i350 在固件这一块有个硬限制只能用.eep格式的文件不能用手头现成的.bin和.hex。这条不搞清楚会拿着一堆 bin 文件在命令行前反复试工具只会回你格式不对。.eep从哪儿来从一张已经有固件的同型号卡上导出来。这也是我建议先备份再动手的原因手上的卡只要还能被工具认到就有固件可导。# 导出 NIC2 这个口的固件生成 .eep 文件 ./eeupdate64e /nic2 /dump # 看一眼导出的文件 ls -l *.eep/dump不带参数作用是把这个口 EEPROM 里的内容原样读出来存成文件文件名一般以该口当前 MAC 命名。前面例子里 MAC 是00e003509820导出来就是00E003509820.eep。这个文件就是后面烧录要用的源文件先拷到 U 盘或另一台机器上留一份再往下做。导出成功烧录就是一条命令# /d 后面跟要写入的固件文件 ./eeupdate64e /device1521 /d00E003509820.eep/d是 download 的意思把文件内容写进 EEPROM。这里用/device1521是因为同一批卡都是 i350一次刷完省事只刷单口就换成/nic2。烧完重启计算机重启后 MAC 地址不会变——改固件不影响 MAC这两个东西在 EEPROM 里是分开的两块区域先烧固件再改 MAC 或者反过来都行顺序不影响结果。4.2 eeprom less 的全新卡device 从 151F 回到 1521上面走的是「卡上本来就有固件」的路径。真正麻烦的是一张全新的 i350EEPROM 里既没有固件也没有 MAC插进机器系统根本不把它当网卡认ip l里看不到任何网口。# 对着一张空卡跑工具会明确告诉你 eeprom less ./eeupdate64e # 系统层面也看不到网口 ip l这时候最容易犯的错是拿/device1521去烧命令跑下去没反应或者直接报错。原因是设备 ID 会变没有固件的 i350PCI Device ID 是 151F不是 1521。这个 ID 不是印在卡上的是芯片在没有加载固件时的默认值工具认的就是它。# 空卡要用 151F不能写 1521 ./eeupdate64e /device151f /d00E003509820.eep烧录成功后重启。重启之后再跑一次./eeupdate64e会发现这个口的 Device ID 已经变回 1521 了——固件写进去芯片正常初始化ID 自然回到正常值。到这一步卡才算「活过来」ip l里也能看到网口了。接下来按第 3 章 3.1、3.2 的做法给它写 MAC。顺序不能反没有固件的卡工具连 MAC 区都写不进去先烧固件是唯一路径。# 固件烧好、重启之后再写 MAC ./eeupdate64e /nic2 /mac00e003509820 # 重启后核对 ip l4.3 xl710 的 1572.bin 慢、.eep 快新卡烧不了xl710 的规则和 i350 有两处不同先记结论能烧.bin也能烧.eep但推荐.eep全新无固件的卡烧不了。Device ID 是 1572。MAC 的改法和 i350 完全一致参考 3.1、3.2、3.3 就行不用另学一套。差异全在固件上。# 路径一用 .bin 文件烧耗时很久 ./eeupdate64e /device1572 /d XL710_7p30_SFI_MCTP_CFGID7p2_Quad.bin # 路径二用 .eep 文件烧快很多 ./eeupdate64e /device1572 /d 00E007102958.eep对比项.bin 文件.eep 文件来源内网导入或从已有固件的 xl710 导出从已有固件的 xl710 用/dump导出烧录耗时非常久中途像卡死明显快推荐度应急用不建议常规走首选.bin那份为什么慢我自己的理解是它写的是整块 Flash 镜像工具要逐段擦写校验而.eep只写配置区。慢到什么程度慢到你会怀疑命令挂了手会不自觉去按 CtrlC。千万别按中途打断会把卡烧成半残重启后 Device ID 都可能认不出来那就只能返厂。.eep的导出方式和 i350 一样/dump一把就行文件名以当前 MAC 命名。写命令的时候注意把后缀带上/d 00E007102958.eep不要照着某些示例里被截断的样子只写到数字部分工具找不到文件会直接报错。至于「全新卡烧不了」这条是 xl710 和 i350 最大的区别。i350 空卡还能靠 151F 这个 ID 被工具摸到xl710 的 Flash 里没有初始固件时工具根本定位不到设备没有任何命令能救。所以采购 xl710 时一定要确认是带固件的版本别等到装机才发现手里是一堆烧不进去的裸卡。烧完同样重启然后按第 6 章的流程验证。更多指令可以在工具包自带文档里翻路径一般是eeupdate64e/TOOLS/DOCS/eeupdate.txt里面把各个参数列得比我这里全。5. 避坑与排查eeupdate64e 跑不通时的 5 条记录5.1 现象./eeupdate64e: command not found或Permission denied原因两种情况混在一起。一是当前目录不对人在/root/Linux_x64里就敲了./eeupdate64e那个目录下的文件还没赋权二是文件确实没有执行位解压时权限丢了。解决先pwd确认自己在/root/eeupdate/TOOLS/Linux_x64/OEM_Mfg再ls -l eeupdate64e看有没有x。没有就补一刀chmod x eeupdate64e。如果提示的是command not found而不是Permission denied八成是文件名敲错了注意是eeupdate64e不是eeupdata64e工具名里的a是某些资料里的笔误实际文件没有它。5.2 现象./install显示成功工具列表里还是空的原因驱动装完没有真正加载。./install只是把模块放到位内核没加载或者被系统的原生网卡驱动抢占了设备eeupdate64e就看不到目标卡。解决先lsmod看模块在不在再dmesg | tail -50翻一下最近的加载日志有没有报错或者设备被占用。最省事的办法是装完直接重启一次再跑工具很多「装完没反应」重启就好了。还有一种情况是插槽没插到位进 BIOS 看 PCIe 设备列表里有没有这张卡没有就关机重插。5.3 现象MAC 改完重启ip l里还是旧地址原因三个可能。改了 NIC1也就是主板板载口目标卡压根没动改完没重启驱动还拿着旧的缓存值或者是批量写入时文件里的地址段和实际端口数对不上工具只写了一部分。解决先跑一次./eeupdate64e看列表里每个 NIC 对应的 MAC 现在是什么确认写进去的是不是目标口。如果确实是目标口没变检查命令里/nic的数字和物理口对不对得上。批量写入的把mac2.dat打开看中括号里的数量是不是等于实际端口数四个口写[3]只会写三个。5.4 现象全新 i350 用/device1521烧固件报错或者没反应原因空卡的 Device ID 是 151F不是 1521。工具按 ID 匹配设备1521 匹配不到任何东西。解决把命令里的1521换成151f小写大写都行。烧完重启再跑一次工具确认 ID 已经变回 1521然后才去写 MAC。这个顺序不能跳空卡上直接写 MAC 一定失败。5.5 现象xl710 用.bin烧到一半像卡死CtrlC 之后卡彻底认不到原因.bin是整片 Flash 镜像写入和校验时间长进度条不动是正常现象。中途打断会让 Flash 停在擦除和写入之间固件区不完整工具下次连 Device ID 都读不出来。解决能救的前提是没断电。重新上电看工具还能不能列出 1572能列出来就改用.eep文件重烧一遍通常能盖回去。列不出来基本就是砖了。预防的办法只有一条xl710 固件优先用/dump导出的.eep.bin只在确实拿不到.eep的时候用并且按下回车之后去泡杯茶别盯着屏幕。6. 装完怎么验证从 ip l 到 ping 通的一条闭环改完 MAC、烧完固件命令回显「成功」不算数得让这张卡真的把包发出去。我一般按下面这条链路走一遍五步之内能确认卡是活的。检查项命令期望结果端口是否被识别ip l能看到目标网口状态UP或DOWN都正常MAC 是否写对ip l对应口的link/ether等于设定值主板网口是否让路ifconfig enp0s31f6 down主机不再从板载口走默认路由业务口配 IPifconfig enp1s0f0 172.16.225.33无报错ip l里能看到该地址连通性ping -c 4 内网服务器IP有回包丢包率 0网口名字要用ip l里实际看到的enp0s31f6是主板自带口enp1s0f0是插上去的 i350 第一个口不同机器上编号会变别照抄。# 1. 先关掉主板自带网口避免路由走错 ifconfig enp0s31f6 down # 2. 把内网网线插到 i350 的第一个口先清空地址再配 ifconfig enp1s0f0 0.0.0.0 ifconfig enp1s0f0 172.16.225.33 # 3. 确认地址挂上去了 ip l show enp1s0f0 # 4. ping 内网服务器验证 ping -c 4 172.16.225.1第 2 步里那条0.0.0.0不是多余动作。网口如果之前被 DHCP 或者别的配置挂过地址直接覆盖 sometimes 会残留旧路由先清空再配能避免「IP 配上了但 ping 不通」的假故障。ping 通之后别急着收工把网线拔了再插一次再跑一遍ip l确认 MAC 没有回退——EEPROM 写入成功的卡断电重连后 MAC 是稳定的如果一拔一插就变回旧值说明当时写的是缓存不是 EEPROM得回去重烧。xl710 的验证多一步光口要先插上光转电模块再按同样的流程配 IP 和 ping。模块没插到位的时候链路灯不亮ip l里状态一直是DOWN很容易被误判成固件没烧好。从那以后我每次烧完卡不管工具回显多漂亮都强制走一遍「关板载口 → 配 IP → ping 四个包 → 拔插再确认」这套动作一次没落过。吃过一次亏批量刷了四口工具全绿上架后两个口不通回头查是批量文件里数量写少了一位最后两个口根本没写进去。工具的成功提示只能证明命令执行完了证明不了卡能用。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?