====== 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の取得 ====
[[https://www.mellanox.com/products/infiniband-drivers/linux/mlnx_ofed|公式サイト]]から最新のOFEDを取ってくる。
ConnectX-3はLTSドライバでのサポートとなっているので間違わないように。利用規約への同意が必要なので、作業マシンでISOをダウンロードし管理Web画面からアップロードするのが手っ取り早い。
Proxmox VE 6.3はDebian 10.7ベースだが、LTSのOFEDはDebian 10.0向けまでしか用意されていない。メージャーバージョンが同じなら大丈夫だろうってなもんで、これを使う事にする。
==== ISOの展開 ====
アップロードした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を使った通信が問題なくできるか確認する。
===== 参考サイト =====
* [[https://community.mellanox.com/s/article/howto-install-mlnx-ofed-driver|HowTo Install MLNX_OFED Driver]]
* [[https://insujang.github.io/2020-01-25/building-mellanox-ofed-from-source/|Building Mellanox OFED from source code]]
* [[https://forums.servethehome.com/index.php?threads/install-mellanox-driver-proxmox-ve-5-1.17913/|Install Mellanox Driver Proxmox VE 5.1 | ServeTheHome Forums]]
* [[https://wangmingjun.com/2018/09/22/reinstall-the-driver-of-mellanox-infiniband-when-kernel-is-changed/|Reinstall the Driver of Mellanox Infiniband When Kernel Is Changed – 王明军的博客]]