NIC(玄人志向 GbE-PCI2)のコンパイル

カーネルソースを入手

「kernel-devel」がカーネルソースなので、インストール。(kernel-headersはインストール済み)
# yum install kernel-devel

floppyやSFTPなどでコピーしたソースを展開(以下はFloppyからの手順)

# wget http://www.viaarena.com/Driver/velocity_linux_1.36.zip
# unzip velocity_linux_1.36.zip
# tar xfz ./1.36/bin/velocityget.tgz
「velocityget_1.36」というフォルダが作成される
(2009.1.6時点では最新)

カーネルソースのシンボリックリンクを張る

後述のMakeでは「/usr/src/linux-`uname -r`」をカーネルソースのパスとして認識するので
それに合わせて、centosの/usr/src/kernels/xxxxxからシンボリックリンクを張る。
# ln -s /usr/src/kernels/2.6.18-92.1.22.el5-i686 /usr/src/linux-`uname -r`

Make

後は適当なディレクトリに展開したソースディレクトリに移り、
(例:/root/Velocity_1.36)
# make install
これでモジュールが適切なディレクトリに配置までされているはず。

モジュールの有効化

/etc/modprobe.confの
alias eth0 via-velocity
    ↓
alias eth0 velocityget
に書き換えて念のため再起動を行う。

確認

# lsmod | grep velo
を行ってvelocitygetが表示(読み込まれている)ことを確認した。
ただ、ethtool(例:ethtool eth1)で見ると100Baseと表示されているので、何か不安。
ハブは1000BaseTでリンクしているよう表示されているが、心配なので、後日netperfで確認を行った。
(注:この現象もVer1.30以下で発生していた可能性が高い、Ver1.36では正しく1000Baseと表示された。)

JUMBO FRAMEの有効化

途中経路のハブなどが対応していないと通信異常が発生するので危険だが、
MTUを調整することで1000BaseTの通信速度を向上させることができる。(JUMBO FRAME)
まずは問題なく他のマシンとの通信が可能かを確認する。(一時的にMTUを上げる)
# ifconfig eth0 mtu 9000
(注:デフォルトに戻す場合は、# ifconfig eth0 mtu 1500)
PINGなどを他のマシンに飛ばしてみて、問題なく応答があるようであれば問題ない。
さらにnetperfというソフトを使うことで通信速度の確認をすることもできる。

netperfで速度を確認

別のUnixマシンで「netserver」を起動しておき
CentOS側で「netperf -H xxx.xxx.xxx.xxx(別のマシンのIP)」を実行
Recv Send Send
Socket Socket Message Elapsed
Size Size Size Time Throughput
bytes bytes bytes secs. 10^6bits/sec
65536 16384 16384 10.00 550.05
「550Mbit/sec」は出ているようなので、100Baseではなく、1000BaseTでリンクしていることは確認
できた。(とりあえず安心)
※ちなみに、netperf自体はyumでインストールできなかったので、
RPMの配布サイト
でRHEL5用の「netperf-2.4.2-1.el5.rf.i386.rpm」を取得してRPMでインストールする。(x86_64と間違えないように注意)
rpm -ivh netperf-2.4.2-1.el5.rf.i386.rpm

JUMBO FRAME MTU値の永続化

ifconfigで変更したMTU値は再起動するたびに元の1500に戻ってしまうので、9000で固定する。
/etc/sysconfig/network-scripts/ifcfg-eth0 (eth0は1000BASE/TのNIC)を見ると以下のように記述されているので
(注:NICが複数ある場合はifcfg-eth1,ifcfg-eth2...などになる)
最終行に「MTU=9000」の行を追加する

(設定例)
# VIA Technologies, Inc. VT6120/VT6121/VT6122 Gigabit Ethernet Adapter
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
BROADCAST=192.168.1.255
IPADDR=192.168.1.2
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
HWADDR=00:02:2A:E2:5C:29
MTU=9000

※通常ならこれで問題ないはずだが、ドライバに問題があるせいか、再起動したときにどうしても、カーネルパニックを起こしてしまう。
コマンドラインから「#ifconfig eth0 mtu 9000」を実行した場合は問題なくmtuは変更できるので、
仕方なく、rc.localにコマンドを追加する対応を取った。下記参照。※Ver1.36でも同様の問題発生

JUMBO FRAME MTU値の永続化2

# vi /etc/rc.local
/sbin/ifconfig eth0 mtu 9000
という一行を追加する。
これで起動時にifconfigが自動的に実行されることになる。

参考リンク


最終更新:2009年01月14日 11:40