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
を使うことにした