korechi’s diary

とあるVR/ARエンジニアのブログ

Mellanox純正ドライバをリビルドしてinsmodする手順

CentOS 6.6の環境でテストしています
Redhat系かDebian, Ubuntu系かでちょっと変わるので注意してください

ドライバのダウンロード

ここから自分の環境にあったものをダウンロード

中身を解凍

ダウンロードしたところにmlnx-en*.tgzがあると思うのでそれを解凍します

$ tar -zxvf mlnx-en-*.tgz

すると同じディレクトリに同じ名前のフォルダができます

RPMSを解凍

$ cd mlnx-en*
$ cd SRPMS
$ rpm -ivh mlnx-en*.src.rpm

これでrpmファイルが解凍されます
解凍されたものはホームディレクトリの下のrpmbuildディレクトリ下にあります
どこに展開されるかは

$ rpm --showrc | grep _topdir

で確認できます

ドライバのリビルド

まずはじめに*.koファイルがどこにできるかを調べます(そこらへんで作業すれば良い)

$ cd BUILD
$ find . * | grep .ko
/mlnx-en-3.3/obj/default/drivers/net/ethernet/mellanox/mlx4/mlx4_en.ko

つまりmlx4のドライバをいじりたいなら

$ cd mlnx-en-3.3/obj/default/drivers/net/ethernet/mellanox/mlx4/

でいろいろした後に

$ cd ../../../../../
$ make

makeすれば良い

ドライバのinsmod

これは下のようなinstall.shを自分は作った

#!/bin/sh
MODULE=mlx4_en
DEVICE=mlx4
insmod mlx4_core.ko
insmod -f ./${MODULE}.ko
MAJOR=`cat /proc/devices | awk "\\$2==\"${DEVICE}\" {print \\$1}"`
rm -f /dev/${DEVICE}
mknod /dev/${DEVICE} c ${MAJOR} 0

uninstall.shももちろん用意しておくと便利

#!/bin/sh
MODULE=mlx4_en
DEVICE=mlx4
rmmod ${MODULE}
rm -f /dev/${DEVICE}
rmmod mlx4_core.ko

あとはこれらをまわせば良い

追記

install.shとuninstall.shがいけてなかったので、

$ sudo insmod mlx4_en.ko
$ sudo rammed mlx4_en.ko

を使うことにした