Просмотр Исходного

h1. Connect X-2

создайте исполняемый файл


{code}
/etc/sysconfig/modules/mellanox.modules
{code}
с содержимым


{code}
#!/bin/sh
/sbin/modprobe mlx4_core
/sbin/modprobe mlx4_en
{code}

h1. Connect X-3

Идём на сайт

https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/

Качаем ISO'шку под нужный нам дистрибутив (сейчас CentOS 6.10) и кладём её в /root/ на сервер

Монтируем

{code}
mkdir /mnt/mellanox
mount -o ro,loop MLNX_OFED_LINUX-4.2-1.2.0.0-rhel6.8-x86_64.iso /mnt/mellanox/
{code}

Запускаем установку (идёт долго, после установки может быть зависание минут на пять).

{code}
cd /mnt/mellanox
./mlnxofedinstall
/etc/init.d/openibd restart
{code}

{info}
Вероятнее всего потребуется доставить ряд зависимостей. О чём будет сообщено установщиком:
{info}
{code}
Logs dir: /tmp/MLNX_OFED_LINUX-4.0-2.0.0.1.6322.logs
Verifying KMP rpms compatibility with target kernel...
Error: One or more required packages for installing MLNX_OFED_LINUX are missing.
Please install the missing packages using your Linux distribution Package Management tool.
Run:
yum install gtk2 atk cairo gcc-gfortran libxml2-python tcsh tcl numactl tk
{code}

Ставим:

{code}
yum -y install gtk2 atk cairo gcc-gfortran libxml2-python tcsh tcl numactl tk
{code}

И повторяем установку.

h1. Как определить что установленный драйвер не подходит

Проверьте что драйвер сейчас загружен:

{code}
lsmod | grep mlx
{code}

Если в вывод не пустой -- выполните команду и найдите в её выводе сетевую карту.

{code}
lspci -k
{code}

Если в её выводе нет строчки kernel driver in use - значит драйвер не подходит.

Если в её выводе есть kernel driver in use -- скорее всего всё работает и нужно перепроверить вывод команды ip link / ifconfig.
{code}...
05:00.0 Ethernet controller: Mellanox Technologies MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (rev b0)
Subsystem: Mellanox Technologies Device 0015
Kernel driver in use: mlx4_core
Kernel modules: mlx4_core
...
{code}

ethtool может показывать другой драйвер:

{code}
$ ethtool -i eth2
driver: mlx4_en
{code}

Ничего страшного в этом нет, для работы mellanox требуется несколько загруженных модулей ядра.

h2. Как проверить что исходники для нужного драйвера

Находим pci id устройства:

1. Выполняем lspci и запоминаем bus id нужного устройства:

{code}
$ lspci
...
05:00.0 Ethernet controller: Intel Corporation 82541PI Gigabit Ethernet Controller (rev 05)
...
{code}

bus id - 05:00.0.

Теперь узнаем pci id устройства:

{code}
$ lspci -n | grep 05:00.0
05:00.0 0200: 8086:107c (rev 05)
{code}

PCI ID = 8086:107c

8086 - номер вендора, в данном случае это Intel.

107c - номер устройства.

Пробуем найти номер устройства в исходниках драйвера.

Если его там нет - скорее всего это драйвера не подходят для этого устройства.

Например для Mellanox :

{code}
[username@reductor mlnx-en-2.4-1.0.0.1]$ grep -ri 6750 ./
./drivers/net/ethernet/mellanox/mlx4/main.c: { PCI_VDEVICE(MELLANOX, 0x6750), MLX4_PCI_DEV_FORCE_SENSE_PORT },
./drivers/net/ethernet/mellanox/mlx4/main.c.orig: { PCI_VDEVICE(MELLANOX, 0x6750), MLX4_PCI_DEV_FORCE_SENSE_PORT },
{code}