PVEにおけるNIC問題の修正

i226 NIC用のDebian上でのProxmox VEの実行

1. 解決策の概要

この解決策は、ZimaBoard 2プラットフォームでIntel i226シリーズNICを使用したProxmox VE仮想化環境の展開に関するものです。目標は、高バージョンLinuxカーネルにおけるPCIe ASPM電力管理によって引き起こされるNICドライバのNULLポインタ逆参照問題を解決し、カーネルパニックやシステムの応答なしを回避することです。

  • ハードウェアプラットフォーム: ZimaBoard 2
  • ソフトウェアバージョン: Debian 12.8.0
  • ネットワーク環境: プロセス全体で有線接続を使用することを推奨します。ルーターのサブネット情報(このガイドのサブネット例: 10.0.0.1/16)を準備してください。
  • 核心目的: i226 NICの高バージョンLinuxカーネルにおけるASPM電力管理の競合およびカーネルパニック(Kernel Panic)の問題を解決し、安定した仮想化環境を構築すること。
  • 前提知識: PCIe ASPM(特にL1サブステート)がIntel i226-V NICで有効になると、物理リンクのアップ/ダウンイベント、ドライバのリロード、またはリンクの再交渉時にigcドライバでNULLポインタ逆参照が発生することがあり、これがカーネルパニックやシステムのフリーズを引き起こします。この解決策は、「Debianベース+PVEカーネル」の展開モデルを採用しており、Proxmoxカーネルを導入する前に電力管理とファームウェア環境を調整し、高いハードウェア互換性とチューニングの柔軟性を実現します。

主な操作手順

  1. Debian 12.8のインストール: ネットワークインストールISOを使用し、ディスク全体を使用してUEFIブートを行います。
  2. ASPMの無効化: /etc/default/grubを編集し、GRUB_CMDLINE_LINUX_DEFAULTpcie_aspm=offを追加し、update-grubを実行して再起動します。
  3. 基本設定: 国内ミラーに切り替え、firmware-intel-miscをインストール。IP設定を一時的に構成し、接続テストを行います。
  4. Proxmoxの準備: /etc/hostsを設定し、Proxmoxのno-subscriptionリポジトリとGPGキーを追加します。
  5. Proxmoxのインストール: apt install proxmox-ve postfix open-iscsiを実行。pve-firmwareとの競合があれば、dpkg --force-overwriteを使って強制インストールし、apt install -fで依存関係を修正します。
  6. ブリッジネットワークの設定: /etc/network/interfacesを編集し、物理NIC(例: enp1s0)をブリッジvmbr0に追加、静的IPとゲートウェイを設定してネットワークを再起動します。
  7. アクセスの確認: 再起動後、https://<IP>:8006にアクセスします。

2. 操作手順

以下のコマンドは、Debianシステムでrootまたはsudo権限で実行されます。

2.1 Debianのインストールと作成

ベースシステムの安定性と制御性を確保するため、この解決策ではDebian 12.8を基盤として使用します。

  1. ソフトウェアリソースのダウンロード

  2. ブータブルUSBドライブの作成

    • 少なくとも8GBのUSBドライブを挿入します。
    • balenaEtcherを開き、USBドライブをターゲットデバイスとして選択します。
    • 「ファイルからフラッシュ」をクリックし、ダウンロードしたdebian-12.8.0-amd64-netinst.isoを選択します。ソフトウェアが自動的にディスクを選択します。
    • 「フラッシュ!」をクリックして完了まで待ち、USBドライブを安全に取り外します。
  3. BIOSブート

    • 準備したUSBドライブをZimaBoardのUSBポートに挿入します。
    • 電源を入れ、F11キーを繰り返し押します(一部の機種ではESCまたはDeleteキーを使用する場合もありますが、ZimaBoard 2はデフォルトでF11です)。
    • ブートメニューで、「UEFI」と名前に付いたUSBドライブエントリを選択します。
  4. インストール手順の概要
    Debianの青いウェルカム画面に入った後、以下のガイドラインに従ってください:

    • インストールモード: グラフィカルインストールを選択することを推奨します(初心者に最も使いやすい)。
    • 言語と地域: 「英語」または好ましい言語を選択し、キーボードは「アメリカ英語」を選択します。
    • ディスクのパーティション設定: 「ディスク全体を使用」を選択し、ZimaBoard内蔵のeMMCまたはインストールしたSSDを選択、その後「すべてのファイルを1つのパーティションに」としてパーティションスキームを設定します。

2.2 クリーンDebianシステムでのNICのデバッグ

  1. PCIe高度電力管理(ASPM)の無効化

    nano /etc/default/grub

    以下の行を変更します:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on iommu=pt pcie_aspm=off"

    保存して終了後、GRUBを更新して再起動します:

    update-grub
    reboot
  2. 安定したDNSサーバーへの切り替え(仮)

    nano /etc/resolv.conf

    以下を追加します:

    nameserver 223.5.5.5
    nameserver 114.114.114.114
  3. ファームウェアのインストール

    # キャッシュをクリア
    rm -rf /var/lib/apt/lists/*
    # 更新してIntel NICファームウェアをインストール
    apt update
    apt install firmware-intel-misc -y
  4. NICインターフェースの仮設定
    この例では、インターフェース名はenp8s0、ルーターアドレスは10.0.0.1です。

    # 既存のIP設定をクリア
    ip addr flush dev enp8s0
    # インターフェースをダウン
    ip link set enp8s0 down
    # IPアドレスとゲートウェイを設定
    ip addr add 10.0.1.100/16 dev enp8s0
    ip route add default via 10.0.0.1
    # インターフェースをアップ
    ip link set enp8s0 up
  5. 接続テスト

    ping -I enp8s0 8.8.8.8

    成功すれば、NICは正常に機能しています。

2.3 Proxmox VEカーネルのインストール

  1. ホストファイルの設定

    # ホスト名を確認(この例ではホスト名は"debian"です)
    hostname
    nano /etc/hosts

    ファイルに以下を追加:

    127.0.0.1       localhost
    10.0.1.21 debian.proxmox.com debian
  2. Proxmoxソフトウェアリポジトリの追加

    # curlがない場合はインストール
    apt update && apt install curl -y
    # GPGキーを追加
    curl -fSsL http://download.proxmox.com/debian/proxmox-release-bookworm.gpg -o /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
    # pve-no-subscription.listを編集
    nano /etc/apt/sources.list.d/pve-no-subscription.list
    # 以下を追加
    deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
  3. PVEカーネルとコアコンポーネントのインストール

    # 更新してフルアップグレードを実行
    apt update
    apt full-upgrade -y
    # Proxmox VEのコアパッケージをインストール
    apt install proxmox-ve postfix open-iscsi -y
    • インストール中にPostfix設定ウィンドウが表示されたら、Tabキーで「ローカルのみ」を選択し続行。

    前回インストールしたDebianファームウェアパッケージとpve-firmwareが競合する可能性があります。上書きします:

    dpkg -i --force-overwrite /var/cache/apt/archives/pve-firmware_*.deb
    # 残りの依存関係問題を修正し、必要であればコアパッケージを再インストール
    apt install -f
    apt install proxmox-ve

    インストール後、再起動しカーネルバージョンを確認します:

    reboot
    # 再起動後
    uname -a

    出力に6.8.x-pveが表示されれば、インストールは成功です。

2.4 ネットワークの設定

proxmox-veをインストールすると、元のネットワーク管理ツールが削除され、Proxmoxのネットワークモデルが導入されます。そのため、メインインターフェースの手動設定が必要です。

インターフェースファイルを編集します:

nano /etc/network/interfaces

物理NICがenp1s0で、静的IP10.0.1.21/16とゲートウェイ10.0.0.1を設定する場合、ファイルを以下のように変更します:

iface enp1s0 inet manual

auto vmbr0
iface vmbr0 inet static
address 10.0.1.21/16
gateway 10.0.0.1
bridge-ports enp1s0
bridge-stp off
bridge-fd 0

保存して終了し、ネットワークを再起動します:

systemctl restart networking

2.5 検証とWebインターフェースアクセス

Webブラウザを開き、次のアドレスにアクセスします:

https://10.0.1.21:8006

「詳細設定」をクリックし、「10.0.1.21に進む(安全でない)」を選択後、Debianシステムのroot資格情報でログインします。Proxmox VEのWebインターフェースにアクセスできるはずです。

3. トラブルシューティング

Q: 公式のダウンロードソースが遅い、またはアクセスできない場合は?

  • Debian: 公式ミラーリストを訪れ、自国または地域のミラーを選択し、チュートリアル内のdeb.debian.orgおよびsecurity.debian.orgをそのミラーのドメインに置き換えてください。
  • Proxmox: Proxmoxには公式ミラーリストはありませんが、よく知られたサードパーティのミラーを使用するか、「proxmox mirror」を検索してミラーアドレスを探してください。

ソースを更新した後、apt updateを実行して変更を適用します。