virtualization:proxmox_ve_7_4_how_to_build_latest_mlnx_ofed

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

virtualization:proxmox_ve_7_4_how_to_build_latest_mlnx_ofed [2023-09-03 20:33] (現在)
Decomo 作成
行 1: 行 1:
 +====== Proxmox VE 7.4でConnectX-4向けMLNX_OFEDを自前ビルドする ======
 +
 +===== 試した環境 =====
 +
 +  * Proxmox VE 7.4-16
 +  * ConnectX-4
 +  * NVIDIA MLNX_OFED 23.07-0.5.0.0
 +
 +===== 手順 =====
 +
 +===== 現状の確認 =====
 +
 +インボックスドライバの状態を確認しておく。
 +
 +<code>
 +# modinfo mlx5_core.ko 
 +filename:       /lib/modules/5.15.116-1-pve/kernel/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.ko
 +license:        Dual BSD/GPL
 +description:    Mellanox 5th generation network adapters (ConnectX series) core driver
 +author:         Eli Cohen <eli@mellanox.com>
 +srcversion:     9360D44A27768A47D5B87A7
 +alias:          auxiliary:mlx5_core.eth
 +alias:          pci:v000015B3d0000A2DFsv*sd*bc*sc*i*
 +alias:          pci:v000015B3d0000A2DCsv*sd*bc*sc*i*
 +alias:          pci:v000015B3d0000A2D6sv*sd*bc*sc*i*
 +alias:          pci:v000015B3d0000A2D3sv*sd*bc*sc*i*
 +alias:          pci:v000015B3d0000A2D2sv*sd*bc*sc*i*
 +alias:          pci:v000015B3d00001023sv*sd*bc*sc*i*
 +alias:          pci:v000015B3d00001021sv*sd*bc*sc*i*
 +alias:          pci:v000015B3d0000101Fsv*sd*bc*sc*i*
 +alias:          pci:v000015B3d0000101Esv*sd*bc*sc*i*
 +alias:          pci:v000015B3d0000101Dsv*sd*bc*sc*i*
 +alias:          pci:v000015B3d0000101Csv*sd*bc*sc*i*
 +alias:          pci:v000015B3d0000101Bsv*sd*bc*sc*i*
 +alias:          pci:v000015B3d0000101Asv*sd*bc*sc*i*
 +alias:          pci:v000015B3d00001019sv*sd*bc*sc*i*
 +alias:          pci:v000015B3d00001018sv*sd*bc*sc*i*
 +alias:          pci:v000015B3d00001017sv*sd*bc*sc*i*
 +alias:          pci:v000015B3d00001016sv*sd*bc*sc*i*
 +alias:          pci:v000015B3d00001015sv*sd*bc*sc*i*
 +alias:          pci:v000015B3d00001014sv*sd*bc*sc*i*
 +alias:          pci:v000015B3d00001013sv*sd*bc*sc*i*
 +alias:          pci:v000015B3d00001012sv*sd*bc*sc*i*
 +alias:          pci:v000015B3d00001011sv*sd*bc*sc*i*
 +alias:          auxiliary:mlx5_core.eth-rep
 +alias:          auxiliary:mlx5_core.sf
 +depends:        tls,pci-hyperv-intf,mlxfw,psample
 +retpoline:      Y
 +intree:         Y
 +name:           mlx5_core
 +vermagic:       5.15.116-1-pve SMP mod_unload modversions 
 +parm:           debug_mask:debug mask: 1 = dump cmd data, 2 = dump cmd exec time, 3 = both. Default=0 (uint)
 +parm:           prof_sel:profile selector. Valid range 0 - 2 (uint)
 +
 +# modinfo mlx5_ib.ko 
 +filename:       /lib/modules/5.15.116-1-pve/kernel/drivers/infiniband/hw/mlx5/mlx5_ib.ko
 +license:        Dual BSD/GPL
 +description:    Mellanox 5th generation network adapters (ConnectX series) IB driver
 +author:         Eli Cohen <eli@mellanox.com>
 +srcversion:     8E73EF489C7285961573072
 +alias:          auxiliary:mlx5_core.rdma
 +alias:          auxiliary:mlx5_core.multiport
 +alias:          auxiliary:mlx5_core.rdma-rep
 +depends:        mlx5_core,ib_core,ib_uverbs
 +retpoline:      Y
 +intree:         Y
 +name:           mlx5_ib
 +vermagic:       5.15.116-1-pve SMP mod_unload modversions 
 +</code>
 +
 +==== 最新のOFEDの取得 ====
 +
 +[[https://www.mellanox.com/products/infiniband-drivers/linux/mlnx_ofed|公式サイト]]から最新のOFEDを取ってくる。
 +
 +利用規約への同意が必要なので、作業マシンでISOをダウンロードし管理Web画面からアップロードするのが手っ取り早い。
 +
 +Proxmox VE 7.4はDebian 11.6ベースだが、MLNX_OFEDはDebian 11.3用となっている。メージャーバージョンが同じなら大丈夫だろうってなもんで、これを使う事にする。
 +
 +==== ISOの展開 ====
 +
 +アップロードしたMLNX_OFEDのISOから中身を取り出す。
 +
 +インストールスクリプトを書き換える必要があるので、てきとーにマウントして作業フォルダにコピーする。ドットファイルが含まれるので"/."のドットを忘れずに。
 +
 +<code>
 +# mkdir /mnt/iso
 +# mount -t iso9660 /var/lib/vz/template/iso/MLNX_OFED_LINUX-23.07-0.5.0.0-debian11.3-x86_64.iso /mnt/iso
 +# mkdir ~/ofed2307
 +# cp -Rp /mnt/iso/. ~/ofed2307/
 +# cd ~/ofed2307
 +</code>
 +
 +==== インストールスクリプトの書き換え ====
 +
 +そのままのインストールスクリプトでは古いMLNX_OFEDパッケージの削除のところで失敗するので、当該箇所を書き換える。
 +
 +mlnxofedinstallファイルのremove_old_package関数を即returnするように変える。
 +
 +<code>
 +#
 +# remove old packages
 +#
 +sub remove_old_packages
 +{
 +        return; # ★追加
 +        print_and_log("Removing old packages...\n", (not $quiet));
 +...
 +</code>
 +
 +==== インストールスクリプトの書き換え ====
 +
 +
 +==== 必要なツールのインストール ====
 +
 +ビルドに必要なツールとヘッダを入れる。
 +
 +<code>
 +# apt install gcc make dkms pve-headers-$(uname -r)
 +</code>
 +
 +試しにmlnxofedinstallを実行してみる。普通にやるとディストリビューションチェックで弾かれるので、''--skip-distro-check''を付ける。
 +<code>
 +# ./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
 +</code>
 +
 +特に初めて実行した場合、上記のようにパッケージ不足のエラーが出る可能性が高い。メッセージに従い追加する。
 +
 +<code>
 +# apt install chrpath automake tcl tk m4 bison libgfortran4 dpatch libltdl-dev graphviz flex gfortran swig quilt ethtool autoconf debhelper pkg-config autotools-dev
 +</code>
 +
 +==== 過去バージョンパッケージの削除 ====
 +
 +古いMLNX_OFEDが入っている場合、debのインストールに失敗することがある。本来はスクリプト内で削除されるものと追われるが、remove_old_packagesを書き換えちゃったので手動で消す必要がある。
 +
 +<code>
 +# ./mlnxofedinstall --skip-distro-check
 +...
 +
 +Do you want to continue?[y/N]:y
 +
 +Checking SW Requirements...
 +Installing new packages
 +Installing ofed-scripts-23.07...
 +Installing mlnx-tools-23.07...
 +Failed to install mlnx-tools DEB
 +Collecting debug info...
 +See /tmp/MLNX_OFED_LINUX.52981.logs/mlnx-tools.debinstall.log
 +</code>
 +
 +メッセージでは「debインストールのログを見ろ」となっているが、同じフォルダ内の''general.log''の方を見た方が分かりやすかったりする。
 +
 +<code>
 +# less /tmp/MLNX_OFED_LINUX.52981.logs/general.log 
 +...
 +
 +Installing mlnx-tools-23.07...
 +Running /usr/bin/dpkg -i --force-confmiss '/root/ofed2307/DEBS/mlnx-tools_23.07-0.2307050_amd64.deb'
 +Failed to install mlnx-tools DEB
 +</code>
 +
 +''dpkg -i''で失敗していることが分かる。同じコマンドを実行してみる。
 +
 +<code>
 +# /usr/bin/dpkg -i --force-confmiss '/root/ofed2307/DEBS/mlnx-tools_23.07-0.2307050_amd64.deb'
 +dpkg: regarding .../mlnx-tools_23.07-0.2307050_amd64.deb containing mlnx-tools:
 + mlnx-tools breaks mlnx-ofed-kernel-utils (<< 5.4)
 +  mlnx-ofed-kernel-utils (version 4.9-OFED.4.9.4.0.8.1) is present and installed.
 +
 +...
 +</code>
 +
 +古いmlnx-ofed-kernel-utilsが悪さをしているのでアンインストール。
 +
 +<code>
 +# dpkg --purge mlnx-ofed-kernel-utils
 +(Reading database ... 289858 files and directories currently installed.)
 +Removing mlnx-ofed-kernel-utils (4.9-OFED.4.9.4.0.8.1) ...
 +</code>
 +
 +こんな感じでせっせと消していく。
 +
 +==== ビルド ====
 +
 +問題が解消されれば
 +
 +CPUがうんうん唸りを上げてビルドが走るので、重いVMが動いてたり、リソースがカツカツの場合は要注意。
 +
 +<code>
 +# ./mlnxofedinstall --skip-distro-check
 +Logs dir: /tmp/MLNX_OFED_LINUX.1597501.logs
 +General log file: /tmp/MLNX_OFED_LINUX.1597501.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-tools
 +mlnx-ofed-kernel-utils
 +mlnx-ofed-kernel-dkms
 +iser-dkms
 +isert-dkms
 +srp-dkms
 +rdma-core
 +libibverbs1
 +ibverbs-utils
 +ibverbs-providers
 +libibverbs-dev
 +libibverbs1-dbg
 +libibumad3
 +libibumad-dev
 +ibacm
 +librdmacm1
 +rdmacm-utils
 +librdmacm-dev
 +mstflint
 +ibdump
 +libibmad5
 +libibmad-dev
 +libopensm
 +opensm
 +opensm-doc
 +libopensm-devel
 +libibnetdisc5
 +infiniband-diags
 +mft
 +kernel-mft-dkms
 +perftest
 +ibutils2
 +ibsim
 +ibsim-doc
 +ucx
 +sharp
 +hcoll
 +knem-dkms
 +knem
 +openmpi
 +mpitests
 +dpcp
 +srptools
 +mlnx-ethtool
 +mlnx-iproute2
 +rshim
 +ibarr
 +
 +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-23.07...
 +Installing mlnx-tools-23.07...
 +Installing mlnx-ofed-kernel-utils-23.07...
 +Installing mlnx-ofed-kernel-dkms-23.07...
 +Installing iser-dkms-23.07...
 +Installing isert-dkms-23.07...
 +Installing srp-dkms-23.07...
 +Installing rdma-core-2307mlnx47...
 +Installing libibverbs1-2307mlnx47...
 +Installing ibverbs-utils-2307mlnx47...
 +Installing ibverbs-providers-2307mlnx47...
 +Installing libibverbs-dev-2307mlnx47...
 +Installing libibverbs1-dbg-2307mlnx47...
 +Installing libibumad3-2307mlnx47...
 +Installing libibumad-dev-2307mlnx47...
 +Installing ibacm-2307mlnx47...
 +Installing librdmacm1-2307mlnx47...
 +Installing rdmacm-utils-2307mlnx47...
 +Installing librdmacm-dev-2307mlnx47...
 +Installing mstflint-4.16.1...
 +Installing ibdump-6.0.0...
 +Installing libibmad5-2307mlnx47...
 +Installing libibmad-dev-2307mlnx47...
 +Installing libopensm-5.16.0.MLNX20230719.c143fc96...
 +Installing opensm-5.16.0.MLNX20230719.c143fc96...
 +Installing opensm-doc-5.16.0.MLNX20230719.c143fc96...
 +Installing libopensm-devel-5.16.0.MLNX20230719.c143fc96...
 +Installing libibnetdisc5-2307mlnx47...
 +Installing infiniband-diags-2307mlnx47...
 +Installing mft-4.25.0...
 +Installing kernel-mft-dkms-4.25.0...
 +Installing perftest-23.07.0...
 +Installing ibutils2-2.1.1...
 +Installing ibsim-0.12...
 +Installing ibsim-doc-0.12...
 +Installing ucx-1.15.0...
 +Installing sharp-3.4.0.MLNX20230719.b557c42d...
 +Installing hcoll-4.8.3223...
 +Installing knem-dkms-1.1.4.90mlnx2...
 +Installing knem-1.1.4.90mlnx2...
 +Installing openmpi-4.1.5rc2...
 +Installing mpitests-3.2.20...
 +Installing dpcp-1.1.40...
 +Installing srptools-2307mlnx47...
 +Installing mlnx-ethtool-6.3...
 +Installing mlnx-iproute2-6.3.0...
 +Installing rshim-2.0.9...
 +Installing ibarr-0.1.3...
 +Selecting previously unselected package mlnx-fw-updater.
 +(Reading database ... 292223 files and directories currently installed.)
 +Preparing to unpack .../mlnx-fw-updater_23.07-0.5.0.0_amd64.deb ...
 +Unpacking mlnx-fw-updater (23.07-0.5.0.0) ...
 +Setting up mlnx-fw-updater (23.07-0.5.0.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:      ConnectX4
 +  Part Number:      MCX413A-GCA_Ax
 +  Description:      ConnectX-4 EN network interface card; 50GbE single-port QSFP28; PCIe3.0 x8; ROHS R6
 +  PSID:             MT_2600110035
 +  PCI Device Name:  03:00.0
 +  Base GUID:        1c34da0300XXXXXX
 +  Base MAC:         1c34daXXXXXX
 +  Versions:         Current        Available     
 +     FW             12.28.2006     12.28.2006    
 +     PXE            3.6.0102       3.6.0102      
 +     UEFI           14.21.0017     14.21.0017    
 +
 +  Status:           Up to date
 +
 +
 +Log File: /tmp/0Vn37mCk_z
 +Real log file: /tmp/MLNX_OFED_LINUX.1597501.logs/fw_update.log
 +Device (03:00.0):
 +        03:00.0 Ethernet controller: Mellanox Technologies MT27700 Family [ConnectX-4]
 +        Link Width: x4 ( WARNING - device supports x8 )
 +        PCI Link Speed: 8GT/s
 +
 +Installation passed successfully
 +To load the new driver, run:
 +/etc/init.d/openibd restart
 +</code>
 +
 +==== バージョン確認 ====
 +
 +modinfoで出来上がったドライバを確認。
 +
 +<code>
 +# modinfo mlx5_core
 +filename:       /lib/modules/5.15.107-1-pve/updates/dkms/mlx5_core.ko
 +alias:          auxiliary:mlx5_core.eth-rep
 +alias:          auxiliary:mlx5_core.eth
 +basedon:        Korg 6.3-rc3
 +version:        23.07-0.5.0
 +license:        Dual BSD/GPL
 +description:    Mellanox 5th generation network adapters (ConnectX series) core driver
 +author:         Eli Cohen <eli@mellanox.com>
 +srcversion:     407EDD4D22D57D972676A47
 +alias:          pci:v000015B3d0000A2DFsv*sd*bc*sc*i*
 +alias:          pci:v000015B3d0000A2DCsv*sd*bc*sc*i*
 +alias:          pci:v000015B3d0000A2D6sv*sd*bc*sc*i*
 +alias:          pci:v000015B3d0000A2D3sv*sd*bc*sc*i*
 +alias:          pci:v000015B3d0000A2D2sv*sd*bc*sc*i*
 +alias:          pci:v000015B3d00001023sv*sd*bc*sc*i*
 +alias:          pci:v000015B3d00001021sv*sd*bc*sc*i*
 +alias:          pci:v000015B3d0000101Fsv*sd*bc*sc*i*
 +alias:          pci:v000015B3d0000101Esv*sd*bc*sc*i*
 +alias:          pci:v000015B3d0000101Dsv*sd*bc*sc*i*
 +alias:          pci:v000015B3d0000101Csv*sd*bc*sc*i*
 +alias:          pci:v000015B3d0000101Bsv*sd*bc*sc*i*
 +alias:          pci:v000015B3d0000101Asv*sd*bc*sc*i*
 +alias:          pci:v000015B3d00001019sv*sd*bc*sc*i*
 +alias:          pci:v000015B3d00001018sv*sd*bc*sc*i*
 +alias:          pci:v000015B3d00001017sv*sd*bc*sc*i*
 +alias:          pci:v000015B3d00001016sv*sd*bc*sc*i*
 +alias:          pci:v000015B3d00001015sv*sd*bc*sc*i*
 +alias:          pci:v000015B3d00001014sv*sd*bc*sc*i*
 +alias:          pci:v000015B3d00001013sv*sd*bc*sc*i*
 +alias:          auxiliary:mlx5_core.sf
 +depends:        tls,mlxdevm,mlx_compat,mlxfw,pci-hyperv-intf,psample
 +retpoline:      Y
 +name:           mlx5_core
 +vermagic:       5.15.107-1-pve SMP mod_unload modversions 
 +parm:           num_of_groups:Eswitch offloads number of big groups in FDB table. Valid range 1 - 1024. Default 15 (uint)
 +parm:           debug_mask:debug mask: 1 = dump cmd data, 2 = dump cmd exec time, 3 = both. Default=0 (uint)
 +parm:           prof_sel:profile selector. Valid range 0 - 3 (uint)
 +parm:           probe_vf:probe VFs or not, 0 = not probe, 1 = probe. Default = 1 (bool)
 +
 +# modinfo mlx5_ib
 +filename:       /lib/modules/5.15.107-1-pve/updates/dkms/mlx5_ib.ko
 +alias:          auxiliary:mlx5_core.rdma-rep
 +alias:          auxiliary:mlx5_core.multiport
 +alias:          auxiliary:mlx5_core.rdma
 +license:        Dual BSD/GPL
 +description:    Mellanox 5th generation network adapters (ConnectX series) IB driver
 +author:         Eli Cohen <eli@mellanox.com>
 +srcversion:     31CDFA9AAC8B3926D9DF320
 +depends:        mlx5_core,ib_core,ib_uverbs,mlx_compat
 +retpoline:      Y
 +name:           mlx5_ib
 +vermagic:       5.15.107-1-pve SMP mod_unload modversions 
 +parm:           dc_cnak_qp_depth:DC CNAK QP depth (uint)
 +</code>
 +
 +システムを再起動し、ConnectX-4を使った通信が問題なくできるか確認する。
 +
 +===== 参考サイト =====
 +
 +  * [[proxmox_ve_6_3_how_to_build_latest_mlnx_ofed]]
  
  • virtualization/proxmox_ve_7_4_how_to_build_latest_mlnx_ofed.txt
  • 最終更新: 2023-09-03 20:33
  • by Decomo