Intel Arc Pro B70 ×2 でLinux機を組んだ — BIOSを保存すると起動しなくなるマザーと、SSHが通るまでの一晩

はじめに — なぜ Intel の GPU を2枚も

自宅ではWindows機(RTX 4070、12GB)がブログのアイキャッチ画像を作っている。Flux.1 schnell を fp8 で動かしているが、12GB だと UNet だけで 11GB を食い、デスクトップ側が VRAM を使っていると CPU に落ちて10倍遅くなる。この制約が地味に効いていて、画像生成を別の機械に移したかった。

選んだのは SPARKLE の Intel Arc Pro B70(32GB)。2枚で VRAM は 64GB になる。NVIDIA の同容量と比べれば圧倒的に安く、Intel が B シリーズ向けに LLM 推論と画像・動画生成のスタック(llm-scaler)を出していて、Linux での土台が整ってきていた。画像生成が本命、LLM 推論は副産物、という位置づけだ。

本体はパーツから自分で組むことにした。自作経験はWindows機だけで、Linux機を組むのは初めて。構成は Ryzen 7 9700X、ASRock X870 Taichi Creator(10GbE内蔵)、DDR5 32GB×2、2TB NVMe、1200W電源、Fractal の Meshify 2。GPU は PCIe 5.0 を x8/x8 に分けて2枚挿す。ヘッドレスで書斎の隅に置き、モニターもキーボードもつながない前提で、IP KVM の GL.iNet Comet も用意した。

この記事は、組み立てから「Mac から SSH で常用でき、B70 が2枚ともドライバに認識された」ところまでの一晩の記録だ。主役は、途中で判明したマザーボードの不具合である。

1. 組み立て — マニュアルがざっくりすぎる

紙のマニュアルは配線図が大雑把で、オンラインの詳細版を Claude に読み込ませ、電源・メモリ・SSD の資料と突き合わせた手順にしてから進めた。初めてのパーツで迷った点をいくつか。

  • 12V-2x6(GPU用電源ケーブル)は、電源側の端に小さなセンサー用のコネクタが分かれていて、本体の小さなソケットに挿す。GPU 側は緑の部分が隠れるまで押し込む
  • ケースのファンは3ピンだが、マザーの4ピンヘッダに挿してよい(DC制御で回る。回転数の表示は N/A になる)
  • B70 は 1,139g ある。つっかえ棒はひとまず見送り、たわみが出たら対処することにした

組み上がった本体の中身。B70が2枚、x8/x8で挿さっている

2. 最初の起動 — C5 で止まる

初回は Dr. Debug(マザーの2桁表示)が C5 で止まった。メモリトレーニングのコードだ。CMOS クリアをして、メモリを1枚にしたら BIOS 画面まで来た。BIOS を 4.50 から 4.60(AGESA 1.3.0.1d)に上げ、2枚目を戻すと 64GB で認識した。ここまでは「AM5 ではよくある初回のメモリトレーニング」の範囲で、想定内だった。

想定外はこの後だった。

3. BIOS を保存すると二度と起動しない

ファンの制御を見ようと BIOS に入り、F10 で保存して再起動したら、EC で止まって動かなくなった。CMOS クリアをすると起動する。そして、BIOS で何も変えずに「Save Changes and Exit」しただけでも同じことが起きる。

Dr. Debug が「EC」で止まっている

切り分けに夜中まで費やした。試したのは次のとおり。

  • BIOS 4.60 を Instant Flash と BIOS Flashback の両方で書き直し → 同症状
  • BIOS 4.50 に戻す → 同症状
  • メモリ2枚、1枚ずつ(A2 スロットに各1枚) → 同症状
  • 前面 USB・USB-C・オーディオの配線を全部外した最小構成 → 同症状
  • GPU 未装着(オンボード HDMI 出力) → 同症状

ネットで同じ報告は見つからなかった。ここまでやって変わらないなら、マザーボードの個体不良か、メモリとの相性のどちらかしかない。メモリは QVL に載っている型番ではないが、13万円のメモリをおいそれと買い替えて試すわけにもいかない。販売店(アーク)の初期不良対応の期間内だったので、翌朝に問い合わせを送った。

いっぽうで、BIOS の初期設定のままなら普通に起動して動くことも分かった。Resizable BAR と Above 4G Decoding はデフォルトで有効。初期設定で困るのは「停電後の自動起動」と「プライマリ表示の固定」くらいで、前者は Comet と ATX 電源制御ボードで代替できる。つまり、交換を待ちながら構築を進められる。そう割り切った。

4. B70 を2枚挿す — 認識の確認で引っかかる罠

マザーの問題を抱えたまま、GPU を2枚とも挿した。BIOS の画面は B70 を挿してもマザーの HDMI に出る。

Ubuntu のインストーラーのシェルから lspci で確認すると、B70 ×2(デバイス ID e223)と、CPU 内蔵の AMD GPU が見えた。ここで1つ罠がある。Intel Arc のカードは内部に PCIe スイッチを持っていて、GPU そのものは x1・2.5GT/s と表示される。本当のリンク速度は、その上流のブリッジで読む必要がある。上流を見ると PCIe 5.0 で x8/x8、期待どおりだった。

lspci の出力。上流ブリッジが Speed 32GT/s, Width x8

5. Ubuntu Server のインストール — 手打ちがしんどい

Ubuntu Server 24.04.5 を、SD カードリーダーに焼いたイメージからオフラインで入れた。llm-scaler が対応しているのが 24.04 だったので、26.04 ではなくこちらにした。

インストール自体は何事もなく終わった。問題はその後だ。LAN をつなぐ場所と組み立てた場所が違い、ネットワーク設定を先に書く必要があった。モニターとキーボードで YAML を手打ちしたら、

  • コロンの後ろの半角スペースを落とす
  • ethernets の r を落とす
  • ファイル名の .yaml のドットを落とす(netplan は .yaml で終わるファイルしか読まない)

と、一行ずつ引っかかった。教訓は単純で、画面で打つのは SSH が通るまでの最小限にして、残りは全部 Mac からコピペでやる。netplan の設定は echo ... | sudo tee の1行にしておけばよかった。

もう1つ。LAN をつながずに起動すると systemd-networkd-wait-online が2分待つ。固まったように見えるが、待てばログイン画面が出る。

ようやく出た b70 login: の画面

LAN をつないで Mac から ssh tada@<IP> が通った瞬間に、この夜の山は越えた。IP は Mac Studio で動かしている dnsmasq のリース一覧から拾った。

6. ここからは Claude Code に任せる

SSH が通れば、あとは Mac Studio 上の Claude Code にブリーフを渡して進められる。一晩で済んだ作業を列挙する。

  • SSH を b70 専用の鍵に切り替え、パスワード認証を無効化。鍵を他の用途と使い回さない理由(片方を差し替えると両方止まる、漏れたときの被害が広がる)は決裁メモに残した
  • dnsmasq で固定 IP を割り当て、Obsidian のネットワーク管理ノートを更新
  • Tailscale に参加させ、サーバー用途なので key expiry を無効化
  • B70 の作業用リポジトリを作り、cc-bridge(自作の Claude Code 連携)に direct モードで登録。ジョブに許すのは ssh b70 と scp だけ。b70 側は sudo NOPASSWD なので「ssh を許す = root を渡す」と理解したうえで、秘密情報を置かない実験機だから可とした
  • カーネルは、Intel の公式資料を調べさせたうえで方式を3つ(Ubuntu HWE 7.0 / llm-scaler のインストーラ / 26.04 で入れ直し)に整理してもらい、HWE 7.0 + 上流の GuC ファームウェアを選んだ。後で別方式に切り替える余地を残すため
  • 再起動後、2枚とも Kernel driver in use: xe、GuC は Intel の要求版を満たし、xe 関係のエラーなし。カーネルとファームウェアは apt-mark hold
  • 古い 6.8 カーネルは autoremove から外し、GRUB から戻れる先として残す
  • Uptime Kuma に SSH の死活と「xe が2枚付いているか」の Push 監視を追加
  • カード側ファームウェア(IFWI)は、版の確認だけして更新しないと決定。板向けの専用データが配布されていない、更新後に完全な電源断が要る(マザー不良対応中にやる操作ではない)、失敗時の復旧が保証されない、の3点から

途中、Claude Code のログインの期限が切れて止まる場面があった。スマホのブラウザからターミナルを開いて /login すれば復旧できると分かったので、長期トークンの導入は見送った。

7. 教訓

  • 初期不良は「症状を固定して切り分けを尽くす」のが先。何を試して同じだったか、構成は何か、が揃っていれば販売店とのやり取りは一往復で済む。切り分けの最中に「相性かも」と高価な部品を買い足さない
  • ヘッドレス機は、SSH が通るまでが勝負。そこまでの手打ちを減らす設計(1行で書けるコマンドを用意する、IP KVM を先に用意する)に投資する価値がある
  • Intel Arc の PCIe リンクは上流ブリッジで読む。GPU 本体の表示を見て「x1 しか出てない」と慌てない
  • ホストに入れるのはドライバとファームウェアまで。llm-scaler の本体は Docker なので、カーネルを固定しておけばソフト選定をあとから変えられる
  • 後戻りできる選択肢を選ぶ。HWE カーネルを選んだのも、6.8 を残したのも、IFWI を触らなかったのも同じ理由

次にやること

  • 販売店の返事を待ってマザーボードを交換する。返送時は CPU ソケットカバーを忘れずに
  • ATX 電源制御ボードが届いたら Comet と合わせて取り付け、電源操作も遠隔にする
  • 本題の画像生成。Intel の llm-scaler-omni(ComfyUI)で、4070 機と同じ条件(Flux.1 schnell、1344×768、4ステップ)の生成を動かし、速さと見た目を比べる。32GB あるので fp8 ではなく bf16 版が載る。それで質が上がるかも見たい

組み立てを始めてから SSH が通るまで、ほぼ一晩。マザーボードの不具合がなければ半分で済んだはずだが、切り分けの過程で BIOS Flashback も CMOS クリアも身体で覚えたので、無駄ではなかったことにしておく。