Supermicro AOC-STGN-i1S(X520)在Proxmox 7.1上:插上HP的DAC后ip link里根本没有这个接口
我家里跑一台小的Proxmox,想给存储节点弄一条像样的10G链路,于是装了一块二手Supermicro AOC-STGN-i1S。就是普通的Intel 82599方案,板子上印着E157872,我以为这会是整个搭建里最省心的一步。结果不是。
- Supermicro AOC-STGN-i1S,Intel X520-DA1,板卡标记E157872
- Proxmox 7.1,内核5.15.30-1-pve
- HP品牌无源SFP+ DAC接到另一台机器
- 网卡在PCI总线上能正常枚举
驱动始终没能加载完成。内核日志说它检测到一个不支持的SFP+/QSFP模块类型,因此中止,之后就完全没有端口可以配置:
lspci -> the X520 is listed, no complaints
ip link -> lo and the onboard 1G only, no 10G interface at all
dmesg -> ixgbe aborts loading, unsupported SFP+/QSFP module type
已经做过的事:
- 建了/etc/modprobe.d/ixgbe.conf,内容是
options ixgbe allow_unsupported_sfp=1,然后update-initramfs -u并重启:没有变化 - 改成用内核参数传同一个选项:没有变化
- 手动
rmmod ixgbe再modprobe ixgbe:ip link里依然什么都没多出来
这块网卡是不是坏了,还是说在5.15内核上有什么办法能绕过这个检查,而我漏掉了?
Comments 5
你描述的正是ixgbe碰上EEPROM白名单的典型样子。驱动读到模块ID,判断它不在Intel认可的列表里,于是在注册netdev之前就中止了,这就是为什么
lspci能看到网卡,而ip link里什么都没有。这完全不是硬件故障,也正因为如此,把模块从笼子里拔出来端口就会立刻恢复。文档里给出的逃生通道就是你已经用过的那个:
在5.15上这个选项就是不可靠。我在这个内核上得到了一模一样的无效结果,所以没必要重新试一遍或者去配置文件里找什么拼写错误。
真正解决问题的是这样:笼子空着的时候,
modprobe ixgbe之后接口就起来了,插回HP那根线缆接口又消失了,而同一根HP线缆插到一块Mellanox ConnectX-2上却毫无障碍地建立了链路。线缆本身电气上没问题,只是Intel不喜欢它的编码方式。最终解决办法是换成一根普通的无品牌通用SFP+ DAC。链路立刻就起来了,不用改任何模块参数,也不用折腾重启。关于支持性:只要用了非Intel编码的线缆,你本来就已经在Intel的兼容矩阵之外了,所以如果这台机器以后还需要走支持渠道,建议买Intel编码的DAC而不是HP的。
在断定这块网卡坏之前,先做一个测试。把DAC完全从笼子里拔出来,然后
rmmod ixgbe、modprobe ixgbe,再看一次ip link。如果空笼子的情况下接口出现了,那说明网卡和驱动都没问题,卡壳的是这根线缆。还有一件值得弄清楚的事:那根HP的DAC在别的地方能用吗?非Intel网卡通常会毫无怨言地接受它。还有,你确定是那根HP编码的线缆有问题,还是你手头有一根普通线缆可以拿来对比一下?
你在X520上至少还有一个驱动开关可以拧,虽然不太靠谱,已经算幸运的了。到了X710和XL710上,这个模块检查搬到了固件里,
allow_unsupported_sfp对i40e来说完全不起作用。往X710-DA2里插一个非Intel模块,得到的是:然后就没得谈了。从这里出发,选项是用Intel编码的光模块,或者走社区的xl710-unlocker路线(用Intel自己的更新工具刷一个全新的NVM镜像,再用第三方工具去动EEPROM里大约0x6800-0x7000附近的十一位字段,风险自负),或者一开始就选一个OEM变体:HPE 562SFP+底子就是X710,刷完固件和i40e更新之后,不用任何破解就接受了第三方的10G和1G铜模块。
关于OEM这个角度,在Dell和联想的X710-DA2板卡上情况反而更糟:它们拒绝未经批准的SFP+和DAC,连Intel自家的工具都不认这块板子。大家最后的做法是给它们刷回原厂的Intel NVM。首先需要Intel完整BootUtil包里的QV驱动,不然这些工具根本连不上板卡;先替换option ROM,然后才去盘点板卡再刷写:
在盘点和刷写之间,要把nvmupdate.cfg精简到只留和板卡SPI闪存容量匹配的那一条X710记录,4MB还是8MB。选错容量就是一块砖,得靠保存的NVM镜像和硬件刷写器才能救回来,所以先读ETrackID确认清楚。据说9.30-9.40这个区间的固件之后能正常工作,联想这些板卡上还顺带解锁了SR-IOV。不过我还是只会拿一块坏了也无所谓的板卡去试。
在这个帖子里提刷固件和改EEPROM这些路线要小心,因为它们都解决不了帖子描述的情况。改X520 EEPROM里的OEM标志,前提是得先有一个能用的接口才能连到这块网卡上,而这里在把线缆从笼子里拔出来之前根本没有接口存在。那是给一个存在、但拒绝某个模块的端口用的修法,不是给一个加载就中止的驱动用的。
另外我也不会太看重在另一块网卡上的测试。一个模块在别的主机上能建立链路,证明的是模块本身没问题,不能证明它在你真正想用的这台主机上也行。我手头的Ubiquiti UACC-CM-RJ45-MG铜模块,在CCR2004和跑Debian的Intel X520-DA2上都用得很好,插到CRS309和CRS328的SFP+笼子里却怎么都建立不了链路,不管开着自动协商还是手动固定速率。主机相关性是真实存在的,所以在批量采购之前先在具体要用的那台机器上验证一遍。