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で2台目のボックスへ
- カードは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ではこのオプションが単純に信頼できません。私もこのカーネルで同じく何も変わらない結果になったので、やり直したりconfファイルの誤字を探したりしても意味はありません。
私のほうで決着したのはこうです。ケージが空の状態で
modprobe ixgbeするとインターフェースが上がり、HPのケーブルを戻すとまた消え、その同じHPケーブルはMellanox ConnectX-2では何の問題もなくリンクしました。ケーブルは電気的には問題なく、Intelがそのコーディングを気に入らないだけです。効いた対処は、代わりに無銘のジェネリックSFP+ DACを挿すことでした。すぐにリンクアップ、モジュールオプションも再起動も不要です。サポート面では、Intel以外のコーディングのケーブルを使っている時点でどのみちIntelのマトリクスの外にいるので、このボックスをいずれサポート対象にしたいなら、HP品ではなくIntelコード品のDACを買ってください。
カードを見限る前に、ひとつテストしてみてください。DACをケージから完全に抜いて、
rmmod ixgbe、modprobe ixgbeしてからip linkをもう一度見てください。空のケージでインターフェースが出てくるなら、カードもドライバも問題なく、チェックが引っかかっているのはケーブルのほうです。もうひとつ知っておきたいのは、そのHP製DACは他の場所ではリンクしますか。Intel以外のNICなら普通は何の文句もなく受け入れます。それと、これは間違いなくHPコードのケーブルですか、比較用にジェネリックなものが手元にありますか。
不安定とはいえドライバ側にノブがあるだけ、X520はまだマシだと思ったほうがいいです。X710とXL710ではモジュールチェックがファームウェア側に移っていて、
allow_unsupported_sfpはi40eに対しては一切何もしません。X710-DA2にIntel以外のモジュールを挿すとこうなります。これで会話終了です。そこから先の選択肢は、Intelコード品のオプティクスを使うか、コミュニティのxl710-unlockerルート(Intel純正アップデータで新しいNVMイメージを書き込んでから、サードパーティ製ツールでEEPROMの0x6800-0x7000あたりにある11ビットのフィールドをいじる、完全に自己責任)、あるいは最初からOEMバリアントを選ぶかです。HPE 562SFP+は中身がX710で、ファームウェアとi40eを更新した後は、何のハックもなしにサードパーティ製の10Gと1G銅モジュールを受け入れました。
OEMの話は逆方向にも効きます。DellやLenovoブランドのX710-DA2カードは未承認のSFP+やDACを拒否しますし、Intel純正ツールにはそのボード自体が一覧に出てきません。みんなが落ち着いた先は、素のIntel NVMを書き込むことでした。まずIntelのフルBootUtilパッケージからQVドライバが必要で、それがないとユーティリティはそもそもボードと通信しません。最初にオプションROMを差し替えてから、カードをインベントリしてフラッシュします。
インベントリとフラッシュの間に、nvmupdate.cfgをカードのSPIフラッシュサイズ(4MBか8MB)に合う単一のX710エントリだけに絞り込んでください。サイズを間違えると、保存済みのNVMイメージとハードウェアフラッシャーがないと復旧できないレンガになるので、先にETrackIDを読んで確実にしてください。その後9.30-9.40あたりのファームウェアで動いたという報告があり、副産物としてLenovoのボードでSR-IOVが使えるようになった人もいました。それでも、失っても構わないカードでしか試さないほうがいいと思います。
クロスフラッシュやEEPROMパッチのルートをこのスレッドに向けるのは慎重にしたほうがいいです。どちらもここで説明されている状況には効きません。X520のEEPROMのOEMフラグを編集するには、そもそもカードにアクセスするための動作するインターフェースが必要ですが、ここではケーブルをケージから抜くまでインターフェース自体が存在しません。それはポートが存在していて1つのモジュールを拒否している場合の直し方であって、読み込み時に中断するドライバの話ではありません。
もうひとつ深読みしすぎないほうがいいのが、別のNICでのテストです。別のホストでモジュールがリンクするというのは、そのモジュールが健全だということの証明であって、本当に使いたいホストでの動作を証明するものではありません。私が持っているUbiquiti UACC-CM-RJ45-MG銅モジュールは、CCR2004とDebian上のIntel X520-DA2では問題なく動きますが、CRS309とCRS328のSFP+ケージではオートネゴシエーションでも速度を手動固定しても一切リンクしません。ホスト依存は実在するので、まとめ買いする前に実際に使う機種で確認してください。