ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Linux 下用 eeupdate64 为 i350 / XL710 网卡改 MAC 与烧固件实战指南

Linux 下用 eeupdate64 为 i350 / XL710 网卡改 MAC 与烧固件实战指南 简介面向Linux系统下的网络设备维护与开发工程师这份资源专门讲解利用eeupdate64工具对I210、I350、82575/6、XL710、E810等Intel网卡进行MAC地址修改与固件烧录的完整操作流程。文档内容覆盖前期软硬件准备、工具获取与权限适配以及i350网卡单个/多个MAC地址修改、.eep固件制作与刷写、全新无固件网卡从零烧录到测试验证的完整路径同时说明xl710网卡使用.bin或.eep文件烧录的差异并给出推荐做法。文档还特别提醒i350固件修改只能使用.eep格式xl710用.bin烧录耗时较长建议优先采用.eep文件以提升效率这些细节能帮助规避常见坑点。资源包共1个文件为docx格式文档大小1.09MB内容按前期准备、软件适配、具体网卡操作和从零修改之路分模块展开命令行示例配合结果截图便于按步骤查阅操作。已有1788人学习浏览适合从事服务器部署、网卡固件维护及网络环境变更的技术人员参考能够帮助解决实际工作中的网卡底层配置难题也可作为新网卡初始化的操作手册。1. 为什么要把 eeupdate64 当作网卡维护的标配工具拿到一批几百片的二手 i350 或 XL710 网卡第一件事往往不是插上就用而是要把板载 MAC 改成资产系统里登记好的地址。Linux 下这个操作不用开机箱、不用进 BIOS靠 Intel 官方工具 eeupdate64 就能把“改 MAC”和“重烧固件”两道工序一次做完。很多运维第一次用这个工具就翻车要么把-nic和-mac参数理解错把网卡改成系统里已经存在的地址要么在 XL710 上照搬 i350 的命令把整个网卡刷成版本不匹配的黑匣子。这篇文章把 i350 和 XL710 在 Linux 下用 eeupdate64 改 MAC、烧固件的完整路径捋一遍适合正在做网络硬件维护、服务器交付和网卡备件管理的工程师照着复现。2. 准备阶段驱动、工具和网卡识别做错了后面全白搭2.1 先识别芯片型号和驱动igb 还是 i40eeeupdate64 不能凭外观猜网卡型号它依赖系统里加载的驱动来识别设备。所以动手前先确认芯片组对应的内核模块i350 走的是 igb 驱动XL710 走的是 i40e 驱动。一组 linux 常用命令就能把型号、驱动和总线信息一次看清楚lspci -nn | grep -Ei ethernet|igb|i40e ethtool -i ens2f0 lsmod | grep -E igb|i40elspci的输出里会直接出现 Intel Corporation I350 Gigabit Network Connection 或 XL710 的字样后面的[8086:1521]这类编号是 PCI 设备 ID。ethtool -i返回的driver:字段如果显示 igb说明当前网卡由 igb 驱动接管显示 i40e 就是 XL710 系列。lsmod用来确认驱动模块已经加载如果模块没挂上eeupdate64 会报找不到设备。这里有一个很常见的误判系统里插了两张同型号网卡但 eth0/ens2f0 这类接口名在重启后会变直接按接口名操作容易烧错网卡。正确做法是把 lspci 的总线地址和 ethtool 的接口名对应起来例如lspci -s 05:00.0 -v能看到该总线上的 MAC 地址再和ip link show ens2f0对照。先确认“哪条总线对应哪个系统接口”后面操作才能定位到具体的物理网卡。2.2 eeupdate64 工具怎么拿、怎么确认它能用eeupdate64 是 Intel 以太网驱动包里自带的命令行烧录工具通常包含在驱动包解压后的util目录里。常见做法是去 Intel 下载中心找对应网卡型号的“完整驱动包”而不是只下载内核模块。解压后能看到eeupdate64这个可执行文件注意它是 64 位 x86 程序拿到手先赋予执行权限并确认版本chmod x eeupdate64 ./eeupdate64 -?-?参数会列出当前工具支持的全部开关。不同版本工具可用的参数有差异就以本机这份输出的帮助文本为准。这一步花两分钟能避免后面因为参数写错而反复折腾比如老版本不支持-j指定路径新版又加了-nvmupdate等专用模式。工具运行需要 root 权限因为要直接访问 PCI 配置空间和 flash 设备普通用户执行会直接权限拒绝。工具本身不挑发行版CentOS、Ubuntu、Debian 都能跑但有一个前提必须是 x86_64 架构。遇到国产 ARM 平台飞腾、鲲鹏跑不起来时别在原地耗把网卡拆下来插到一台 x86 的测试机上改完再装回去这比在 ARM 上交叉编译各种依赖现实得多。2.3 动手前的备份永久 MAC、EEPROM 快照和版本号改 MAC 和烧固件都属于写硬件操作一旦断电中断网卡可能变成一块不认设备的砖。所以每次操作前先把网卡的原始信息完整留档。三条命令各干一件事ethtool -P ens2f0 ethtool -e ens2f0 dump i350_backup_eeprom.hex ethtool -i ens2f0ethtool -P显示的是永久 MAC 地址permanent address这个地址来自网卡固件和ip link里显示的当前 MAC 可能不同。ethtool -e把整个 EEPROM/flash 内容导出成十六进制文件烧录失败时可以用它配合工具做恢复。ethtool -i里的fw-version记下来升级完固件要拿这个值做前后对比。备份文件建议按“机器名-网卡型号-日期”命名存到独立目录而不是随手放 /tmp。多网卡机器每张卡导出一份标签写清总线地址。这一步看着多余但真遇到过批量交付时两张卡 EEPROM 数据互串的情况有备份就能逐字节比对出问题。3. i350 网卡改 MAC查询、修改与固件烧录一次走通3.1 查询 NIC 编号和当前 MAC不要凭 eth 名猜eeupdate64 对网卡的编号方式是按 PCI 总线扫描顺序排的-nic序号不是系统里的 eth0 接口名。先用查询模式列出所有网卡编号./eeupdate64 -all输出会显示每个-nic序号对应的设备型号、总线地址和当前 MAC。比如机器上插了两张 i350可能显示NIC 1: Intel I350 ... MAC 00:1B:21:...NIC 2是第二张卡。想确认 1 号到底是哪张物理卡就对上一步备份时记录的总线地址或者用-nic 1单独再看一眼详细信息./eeupdate64 -nic 1 -mac这个命令不会改任何东西只是把 1 号网卡当前固件里的 MAC 显示出来。养成先查再改的习惯能避免把生产机器上正在用的网卡当成测试卡刷掉。另外-all输出里 MAC 全为FF:FF:FF...或全零时说明 flash 内容已经异常这种卡建议先做固件重烧再改 MAC顺序反了可能白改。3.2 修改 MAC 的最小命令一条命令的格式边界确认好 NIC 编号后改 MAC 就是一条命令的事sudo ./eeupdate64 -nic 1 -mac 001B21AABBCC-nic 1指定第一张物理网卡-mac后面跟 12 位十六进制字符不带冒号、不带0x。这是 Intel 工具最多见的输入格式部分版本也能识别-mac00:1B:21:AA:BB:CC带冒号的写法但我建议统一用无分隔格式避免工具版本不一样导致解析出错。执行成功后工具会打印类似MAC Address updated successfully的信息。命令执行完固件里的永久 MAC 已经变了但当前系统接口的 MAC 要重启或手动ip link set才会同步。这里有一个容易误解的点ip link show看到的地址可能还是旧值别急着判定命令没生效用ethtool -P查永久地址那个值变了才算写进固件。如果机器上有多个端口且要分别改成不同地址就用循环逐卡处理for n in 1 2 3 4; do sudo ./eeupdate64 -nic $n -mac 001B21AA00${n} done循环里每次用${n}拼出唯一 MAC避免手抖把两张卡改成同一个地址。实际环境里两张网卡同 MAC 会导致 ARP 表错乱交换机上会看到 MAC 漂移告警排查起来非常头疼。3.3 i350 固件烧录从 .hex 到验证需要升级固件时先去 Intel 官网下载对应 i350 型号的固件更新包解压后通常能得到.hex或.flv格式的固件文件。烧录命令如下sudo ./eeupdate64 -nic 1 -up -j /opt/eee_fw/ -f i350_1_63_17.hex-up表示执行 update 模式-j指定依赖文件所在目录工具运行时可能需要在同目录找配置或驱动文件-f后跟实际的固件文件。注意-f和文件名之间可以不加等号但文件路径不要包含中文或空格。烧录过程中绝对不能断电也不要执行重启操作。建议用带外管理IPMI/iLO或者物理终端执行命令避免 SSH 断连后无法确认进度。烧录完成后工具一般会提示重新上电此时关机、拔电源、再开机让网卡用新固件重新初始化。升级完验证三个值ethtool -i的fw-version是否变成新版本、ethtool -P的永久 MAC 是否还是我们改过的地址、ip link里接口是否 UP。固件升级有时会连带 MAC 一起重置所以先改 MAC 再升固件的顺序不可靠每次升级完都要重新确认一遍 MAC。4. XL710 网卡操作固件结构不同命令不能直接照搬4.1 XL710 与 i350 的差别NVM 和 DDP 是两套东西XL710 是 i40e 系列表面看都是 Intel 网卡但固件结构和 i350 完全不一样。i350 的 flash 里存的是传统 NVM改 MAC 和烧固件都走同一套 EEPROM 逻辑XL710 除了基础 NVM还多了一个 DDPDynamic Device Personalization配置区用于加载不同的包处理管线。这带来了两个直接后果一是升级固件时要认准 XL710 专用的 NVM 更新包拿 i350 的包强刷会直接报容量或校验错误二是如果 DDP 配置和驱动版本不匹配接口可能起来了但收发包异常。所以在 XL710 上执行任何操作前先查当前固件和 DDP 状态ethtool -i ens3f0 dmesg | grep -i ddpethtool -i的fw-version在 XL710 上通常长这样7.21 0x80005e08 1.2709.0三段含义分别是 NVM 版本、ETrack ID、DDP 包版本。dmesg里能看到 DDP 加载成功或失败的信息。这些值记录下来和升级后的输出做对比。4.2 用 eeupdate64 改 XL710 的 MACNIC 编号怎么找XL710 改 MAC 的命令和 i350 完全相同但设备多的时候-nic编号容易错位。比如一张 XL710 双口卡在 lspci 里占两个 PCI 地址工具扫描后可能把两个口编成 1 和 2也可能跨卡连续编。先用./eeupdate64 -all把编号全部列出来sudo ./eeupdate64 -all sudo ./eeupdate64 -nic 1 -mac 001B21C0FF01-all输出里会带每个 NIC 的 PCI 地址对照 lspci 的结果就能确定 1 号口是哪个物理插槽。确认无误后再改。XL710 的 MAC 写入也是冲 flash 永久区改完同样用ethtool -P验证。有一点要注意XL710 在部分服务器上启用了 Intel 的“可管理以太网”功能比如 AMT 或 SMBus 接管这种情况下工具可能报device in use或写入失败。遇到这个问题进 BIOS 把网卡的 manageability 功能关掉再操作改完再开回来不要强行绕过锁。4.3 XL710 固件与 DDP 配置升级的常见做法XL710 的固件升级推荐用配套的 NVM 更新包通常驱动包解压后会有nvmupdate_xxx目录里面除了 eeupdate64 工具还有烧录脚本和配置文件。常见做法是进到该目录直接执行工具让它自动识别固件sudo ./eeupdate64 -nic 1 -up工具默认会在当前目录找匹配的固件文件找不到再用-f显式指定。相比 i350XL710 升级失败的后果更严重因为它的 NVM 区还包含管理固件和 DDP 包头刷一半断电可能连 PCIe 设备都枚举不出来。所以 XL710 烧录严格走“先验证固件包 hash → 物理终端执行 → 烧写完成提示后再重启”的流程。DDP 配置本身一般不需要用 eeupdate64 烧它通常由驱动在接口 up 时自动加载。如果确认 DDP 版本不匹配正确做法是下载对应驱动版本里的 DDP 包替换/lib/firmware/i40e/下的文件后重新加载驱动。不要在 DDP 加载正常时去动固件那属于给运行中的业务网卡找风险。5. 常见问题与排查改 MAC 和烧固件时最容易翻车的六个场景5.1 系统接口名变了eth0 变 ens2f0 不是玄学现象改完 MAC 重启原来配置好 IP 的 eth0 找不到了系统里出现一个新的接口名IP 地址也没了。原因传统发行版通过 udev 规则或/etc/sysconfig/network-scripts/ifcfg-eth0里的HWADDR字段把某个 MAC 绑定到固定接口名。固件里的 MAC 一改系统觉得“这是一张新网卡”于是按新规则重新命名。解决改 MAC 前先记下原来的接口名和 MAC。如果确认新 MAC 就是要用的可以直接改 ifcfg 文件里的HWADDR或者删掉旧的 udev 规则文件后重启。养成一个习惯每次改完 MAC 顺手执行ip link show确认接口名网络不通时第一时间查这里。5.2 重启后 MAC 回滚哪些算正常哪些算没写进去现象改完当时ethtool -P显示新 MAC重启后ip link看到的当前 MAC 又变回旧的。原因这里要分两种。第一种是正常现象——驱动加载时会用固件里的永久 MAC 初始化接口但 NetworkManager 或 systemd 网络配置里如果写了旧的MACAddress覆盖项系统会在接口启动后用旧值覆盖。第二种才是真异常——固件没写进去重启后 flash 里的值又还原。解决先用ethtool -P看永久 MAC如果永久 MAC 是新值说明固件没问题去查网络管理服务的配置覆盖如果永久 MAC 是旧值说明修改没真正落盘重新执行一次改 MAC 命令烧录过程中注意工具是否输出verify failed之类的警告。5.3 管理网口的 IP 丢失ifcfg 里藏着旧地址现象改了 MAC 后这台机器的远程管理 IP ping 不通控制台登录一看网卡没配 IP。原因多数服务器网卡的 IP 配置在/etc/sysconfig/network-scripts/ifcfg-*或 Netplan 文件里里面如果写了旧的 MAC系统就不会把这份配置绑定到新 MAC 上。解决动手前先导出网卡配置文件列表记下哪个配置文件对应哪个接口。改完 MAC 后同步更新配置文件里的 MAC 字段再重启网络服务。这也是为什么批量操作一定要做“机器-接口-MAC-配置文件”四联表不然 20 台机器改完能有两台直接断网失联。5.4 固件升级后性能异常DDP 和 NVM 版本不配套现象XL710 升级完 NVM 固件接口能起来但吞吐上不去或者跑万兆只能到两三兆的水平dmesg 里报 DDP 相关错误。原因NVM 和 DDP 是分开加载的只升了 NVM 没升 DDP或者 DDP 包版本太老驱动加载时不认。解决到 Intel 下载中心找配套的 DDP 包版本号要和 NVM 匹配工具输出里通常会写对应关系把 DDP 文件放到/lib/firmware/i40e/后执行rmmod i40e modprobe i40e重新拉起接口验证。5.5 ARM 平台和国产 Linux 上跑不起来现象在飞腾/鲲鹏服务器上执行./eeupdate64 -?报cannot execute binary file或段错误。原因eeupdate64 长期只有 x86_64 版本不认 ARM 指令集部分国产 Linux 的 32 位兼容层也没装动态链接失败。解决不要浪费时间做各种兼容层折腾把网卡插到 x86 的机器上用工具改完再装回去。这个方案几分钟就能完成少走一个晚上的弯路。真正需要频繁改 MAC 的维护团队备一台 x86 测试机专门干这事比每台机器都装环境省心得多。5.6 烧录中途断了网卡变砖的补救思路现象烧录过程中 SSH 断连、机房断电或有人误触重启之后系统里lspci都看不到网卡了。原因flash 写入是连续操作中断后固件区数据不完整PCIe 配置空间里可能连设备 ID 都是错的系统自然枚举不到。解决先用另一张网卡或板载网卡把机器拉起把备份的 EEPROM 文件和固件包复制到本地用编程器常见有 CH341A 这类 SPI flash 编程器把备份写回 flash 芯片。i350 的 flash 芯片在板卡正反面拆下来之前先用记号笔标好方向和位号。这一步不能保证 100% 救回来但有备份和正确烧录器多数情况能恢复。这才是每张卡都留 EEPROM 快照的真正价值。6. 验证与收尾改完怎么确认真生效以及值得养成的维护习惯6.1 用 ethtool 和 ip link 确认 MAC 真的写进固件每次操作完用一组命令做最终确认顺序不要乱ethtool -P ens2f0 ip link show ens2f0 | grep ether ethtool -i ens2f0先看ethtool -P的永久 MAC这是固件里的真实值再看ip link的当前 MAC两者一致才说明当前接口用的就是新固件地址。ethtool -i里的fw-version和driver字段用于确认驱动版本和固件版本匹配。如果永久 MAC 是新值但当前 MAC 是旧的说明有软件层覆盖去排查网络管理服务如果两个都是旧值说明 flash 写入没成功重新执行修改命令。6.2 固件版本与 DDP 状态的验证对 i350 来说升级固件后看ethtool -i的 fw 版本号是否变成目标版本即可。对 XL710 要额外看 DDP 状态ethtool -i ens3f0 dmesg | grep -i ddp如果 dmesg 里出现DDP package loaded且没有 error说明配置加载正常。还要顺手跑一次ethtool -S ens3f0看 rx/tx 的 error 计数是否为 0。这些命令可以组成一个验证脚本放到维护库以后每改一台机器都跑一遍输出存档。6.3 维护表把 MAC、固件和网卡名写在同一张表里我现在每次批量维护前都会先建一张表字段包括机器序列号、网卡型号、PCI 地址、系统接口名、修改前永久 MAC、修改后永久 MAC、固件版本、操作日期、操作人。这张表平时不觉得有用一到排查“哪台机器地址不对”“谁把固件刷错版本”时就是救命的数据。改 MAC 和烧固件这种操作最贵的是排查成本一张表能省掉大半。这些年我踩过最深刻的坑是有一次给一台线上机改 MAC没等烧录命令输出完成就手动重启结果网卡从系统里彻底消失。后来靠编程器把备份写回去才救回来。从那以后我给自己定了两条规矩第一没有永久 MAC 和 EEPROM 备份不操作第二烧录命令必须在物理终端或带外 console 里执行。这两条规矩看起来只是流程繁琐但每一次都避免了大问题。希望这篇笔记也能帮你少走一次弯路。本文还有配套的精品资源点击获取
返回列表