Proxmox VE 6.3でConnectX-3向けMLNX_OFEDを自前ビルドする

2021-12-08現在、最新のMLNX_OFED LTS 4.9-4.0.8.0でもProxmox VE 7に対応していない。インボックスドライバでConnectX-3を動かさざるをえず、WindowsゲストでVFが動かないので注意のこと。

  • Proxmox VE 6.3-3
  • ConnectX-3 Pro EN
  • Mellanox OFED LTS 4.9-2.2.4.0

modinfoでPVE 6.3のビルトインドライバのバージョンを確認してみる。

# modinfo mlx4_core
filename:       /lib/modules/5.4.78-2-pve/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_core.ko
version:        4.0-0
license:        Dual BSD/GPL
description:    Mellanox ConnectX HCA low-level driver
author:         Roland Dreier
srcversion:     25D4BE18689C49081028B96
...

# modinfo mlx4_en
filename:       /lib/modules/5.4.78-2-pve/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_en.ko
version:        4.0-0
license:        Dual BSD/GPL
description:    Mellanox ConnectX HCA Ethernet driver
author:         Liran Liss, Yevgeny Petrilin
srcversion:     78D5DFCC022AAE0752BABC2
depends:        mlx4_core
...

2021-01-15現在、ConnectX-3向けOFEDの最新版は4.9-2.2.4.0 LTSなので、内蔵の4.0はびっくりするほど古い。

公式サイトから最新のOFEDを取ってくる。

ConnectX-3はLTSドライバでのサポートとなっているので間違わないように。利用規約への同意が必要なので、作業マシンでISOをダウンロードし管理Web画面からアップロードするのが手っ取り早い。

Proxmox VE 6.3はDebian 10.7ベースだが、LTSのOFEDはDebian 10.0向けまでしか用意されていない。メージャーバージョンが同じなら大丈夫だろうってなもんで、これを使う事にする。

アップロードしたMLNX_OFEDのISOから中身を取り出す。

インストールスクリプトを書き換える必要があるので、てきとーにマウントして作業フォルダにコピーする。ドットファイルが含まれるので“/.”のドットを忘れずに。

# mkdir /mnt/iso
# mount -t iso9660 /var/lib/vz/template/iso/MLNX_OFED_LINUX-4.9-2.2.4.0-debian10.0-x86_64.iso /mnt/iso
# mkdir ~/ofed
# cp -Rp /mnt/iso/. ~/ofed/
# cd ~/ofed

そのままのインストールスクリプトでは古いMLNX_OFEDパッケージの削除のところで失敗するので、当該箇所を書き換える。

mlnxofedinstallファイルのremove_old_package関数を即returnするように変える。

#
# remove old packages
#
sub remove_old_packages
{
        return; # ★追加
        print_and_log("Removing old packages...\n", (not $quiet));
...

ビルドに必要なツールとヘッダを入れる。

# apt install gcc make dkms pve-headers-$(uname -r)

試しにmlnxofedinstallを実行してみる。普通にやるとディストリビューションチェックで弾かれるので、–skip-distro-checkを付ける。

# ./mlnxofedinstall --skip-distro-check
Logs dir: /tmp/MLNX_OFED_LINUX.22915.logs
General log file: /tmp/MLNX_OFED_LINUX.22915.logs/general.log
(中略)
Checking SW Requirements...
One or more required packages for installing MLNX_OFED_LINUX are missing.
Attempting to install the following missing packages:
chrpath automake tcl tk m4 bison libgfortran4 dpatch libltdl-dev graphviz flex gfortran swig quilt ethtool autoconf debhelper pkg-config autotools-dev

恐らく、上記のようにパッケージ不足のエラーになるので、追加でインストールする。

# apt install chrpath automake tcl tk m4 bison libgfortran4 dpatch libltdl-dev graphviz flex gfortran swig quilt ethtool autoconf debhelper pkg-config autotools-dev

パッケージが揃ったところで、改めてmlnxofedinstallを実行しドライバをビルドする。

CPUがうんうん唸りを上げてビルドが走るので、重いVMが動いてたり、リソースがカツカツの場合は要注意。

# ./mlnxofedinstall --skip-distro-check
Logs dir: /tmp/MLNX_OFED_LINUX.11169.logs
General log file: /tmp/MLNX_OFED_LINUX.11169.logs/general.log

Below is the list of MLNX_OFED_LINUX packages that you have chosen
(some may have been added by the installer due to package dependencies):

ofed-scripts
mlnx-ofed-kernel-utils
mlnx-ofed-kernel-dkms
rshim-dkms
iser-dkms
isert-dkms
srp-dkms
mlnx-rdma-rxe-dkms
libibverbs1
ibverbs-utils
libibverbs-dev
libibverbs1-dbg
libmlx4-1
libmlx4-dev
libmlx4-1-dbg
libmlx5-1
libmlx5-dev
libmlx5-1-dbg
librxe-1
librxe-dev
librxe-1-dbg
libibumad
libibumad-static
libibumad-devel
ibacm
ibacm-dev
librdmacm1
librdmacm-utils
librdmacm-dev
mstflint
ibdump
libibmad
libibmad-static
libibmad-devel
libopensm
opensm
opensm-doc
libopensm-devel
infiniband-diags
infiniband-diags-compat
mft
kernel-mft-dkms
libibcm1
libibcm-dev
perftest
ibutils2
libibdm1
ibutils
ar-mgr
dump-pr
ibsim
ibsim-doc
ucx
sharp
hcoll
knem-dkms
knem
openmpi
mpitests
libdapl2
dapl2-utils
libdapl-dev
srptools
mlnx-ethtool
mlnx-iproute2
neohost-backend
neohost-sdk

This program will install the MLNX_OFED_LINUX package on your machine.
Note that all other Mellanox, OEM, OFED, RDMA or Distribution IB packages will be removed.
Those packages are removed due to conflicts with MLNX_OFED_LINUX, do not reinstall them.

Do you want to continue?[y/N]:y

Checking SW Requirements...
Installing new packages
Installing ofed-scripts-4.9...
Installing mlnx-ofed-kernel-utils-4.9...
Installing mlnx-ofed-kernel-dkms-4.9...
Installing rshim-dkms-1.18...
Installing iser-dkms-4.9...
Installing isert-dkms-4.9...
Installing srp-dkms-4.9...
Installing mlnx-rdma-rxe-dkms-4.9...
Installing libibverbs1-41mlnx1...
Installing ibverbs-utils-41mlnx1...
Installing libibverbs-dev-41mlnx1...
Installing libibverbs1-dbg-41mlnx1...
Installing libmlx4-1-41mlnx1...
Installing libmlx4-dev-41mlnx1...
Installing libmlx4-1-dbg-41mlnx1...
Installing libmlx5-1-41mlnx1...
Installing libmlx5-dev-41mlnx1...
Installing libmlx5-1-dbg-41mlnx1...
Installing librxe-1-41mlnx1...
Installing librxe-dev-41mlnx1...
Installing librxe-1-dbg-41mlnx1...
Installing libibumad-43.1.1.MLNX20200211.078947f...
Installing libibumad-static-43.1.1.MLNX20200211.078947f...
Installing libibumad-devel-43.1.1.MLNX20200211.078947f...
Installing ibacm-41mlnx1...
Installing ibacm-dev-41mlnx1...
Installing librdmacm1-41mlnx1...
Installing librdmacm-utils-41mlnx1...
Installing librdmacm-dev-41mlnx1...
Installing mstflint-4.14.0...
Installing ibdump-6.0.0...
Installing libibmad-5.4.0.MLNX20190423.1d917ae...
Installing libibmad-static-5.4.0.MLNX20190423.1d917ae...
Installing libibmad-devel-5.4.0.MLNX20190423.1d917ae...
Installing libopensm-5.7.2.MLNX20201014.9378048...
Installing opensm-5.7.2.MLNX20201014.9378048...
Installing opensm-doc-5.7.2.MLNX20201014.9378048...
Installing libopensm-devel-5.7.2.MLNX20201014.9378048...
Installing infiniband-diags-5.6.0.MLNX20200211.354e4b7...
Installing infiniband-diags-compat-5.6.0.MLNX20200211.354e4b7...
Installing mft-4.15.1...
Installing kernel-mft-dkms-4.15.1...
Installing libibcm1-41mlnx1...
Installing libibcm-dev-41mlnx1...
Installing perftest-4.4.0.mlnxlibs...
Installing ibutils2-2.1.1...
Installing libibdm1-1.5.7.1...
Installing ibutils-1.5.7.1...
Installing ar-mgr-1.0...
Installing dump-pr-1.0...
Installing ibsim-0.10...
Installing ibsim-doc-0.10...
Installing ucx-1.8.0...
Installing sharp-2.1.2.MLNX20200428.ddda184...
Installing hcoll-4.4.2957...
Installing knem-dkms-1.1.3.90mlnx1...
Installing knem-1.1.3.90mlnx1...
Installing openmpi-4.0.3rc4...
Installing mpitests-3.2.20...
Installing libdapl2-2.1.10.1.mlnx...
Installing dapl2-utils-2.1.10.1.mlnx...
Installing libdapl-dev-2.1.10.1.mlnx...
Installing srptools-41mlnx1...
Installing mlnx-ethtool-5.4...
Installing mlnx-iproute2-5.4.0...
Installing neohost-backend-1.5.0...
Installing neohost-sdk-1.5.0...
Selecting previously unselected package mlnx-fw-updater.
(Reading database ... 88906 files and directories currently installed.)
Preparing to unpack .../mlnx-fw-updater_4.9-2.2.4.0_amd64.deb ...
Unpacking mlnx-fw-updater (4.9-2.2.4.0) ...
Setting up mlnx-fw-updater (4.9-2.2.4.0) ...

Added 'RUN_FW_UPDATER_ONBOOT=no to /etc/infiniband/openib.conf

Initializing...
Attempting to perform Firmware update...
Querying Mellanox devices firmware ...

Device #1:
----------

  Device Type:      ConnectX3Pro
  Part Number:      MCX314A-BCC_Ax
  Description:      ConnectX-3 Pro EN network interface card; 40GigE; dual-port QSFP; PCIe3.0 x8 8GT/s; RoHS R6
  PSID:             MT_1090111023
  PCI Device Name:  01:00.0
  Port1 MAC:        e41d2d7416e0
  Port2 MAC:        e41d2d7416e1
  Versions:         Current        Available     
     FW             2.42.5000      2.42.5000     
     PXE            3.4.0752       3.4.0752      

  Status:           Up to date


Log File: /tmp/MLNX_OFED_LINUX.11169.logs/fw_update.log
Device (01:00.0):
        01:00.0 Ethernet controller: Mellanox Technologies MT27520 Family [ConnectX-3 Pro]
        Link Width: x8
        PCI Link Speed: 8GT/s

Installation passed successfully
To load the new driver, run:
/etc/init.d/openibd restart

modinfoで出来上がったドライバを確認。

# modinfo mlx4_core
filename:       /lib/modules/5.4.78-2-pve/updates/dkms/mlx4_core.ko
version:        4.9-2.2.4
license:        Dual BSD/GPL
description:    Mellanox ConnectX HCA low-level driver
author:         Roland Dreier
srcversion:     0E22D5CD2864A28C729715C

# modinfo mlx4_en
filename:       /lib/modules/5.4.78-2-pve/updates/dkms/mlx4_en.ko
version:        4.9-2.2.4
license:        Dual BSD/GPL
description:    Mellanox ConnectX HCA Ethernet driver
author:         Liran Liss, Yevgeny Petrilin
srcversion:     69FB9FB2542ADA2197811E7

システムを再起動し、ConnectX-3を使った通信が問題なくできるか確認する。

  • virtualization/proxmox_ve_6_3_how_to_build_latest_mlnx_ofed.txt
  • 最終更新: 2023-03-12 17:10
  • by Decomo