vine/Gigabit Eather

背景

1000Baseのネットワークにするべく,LANボードを購入したがLinuxのためなのか?マザーボードとの相性なのか?なかなかうまくいきませんでした.
やっとうまくいきましたので,一応まとめてみました.

使用LANボード

LGY-PCI-GT

ドライバのインストール

LGY-PCI-GTはRealTek?のRTL8169チップを使用しているので,Realtek社から最新のドライバ(2.20)をダウンロードしてこちらを使用する.

解凍

# unzip linux-8169(220).zip

改行コードをCRLFからLFに変換

# cd src
# mv r8169_n.c r8169_n_org.c
# nkf -Lu r8169_n_org.c  > r8169_n.c

コードの編集(src/r8169_n.c)

  • irqreturn_tをirqreturn_t_R8169
  • IRQ_NONEをIRQ_NONE_R8169
  • IRQ_HANDLEDをIRQ_HANDLED_R8169

にそれぞれ変更

コンパイル

# make clean modules
# make install

ドライバを追加

/etc/modules.confに追加

alias eth0 r8169

使用状況

とりあえずは使えるのだが,NFSサーバとsambaサーバとの相性がイマイチのようです.
NFSサーバの起動・終了には時間がかかるし,通信速度が異常に遅くなる.
sambaサーバは,通信速度はそれなりにでるが,あまり使っていると突然Linuxがハングしてしまいます.

Intel PRO/1000 MT

ドライバのインストール

標準で組み込まれているがe1000からダウンロードしたドライバを使用する.

解凍

$ tar zxvf e1000-6.3.9.tar.gz

コンパイル&インストール

$ cd e1000-6.3.9/src
# make install

ドライバを追加

/etc/modules.confに追加

alias eth0 e1000

使用状況

とりあえずは使えるが,通信をすると時々ネットワークが使えなくなる.
ログ(/var/log/message)に次のようなメッセージが通知されている.

kernel: NETDEV WATCHDOG: eth0: transmit timed out
kernel: e1000: eth0: e1000_clean_tx_irq: Detected Tx Unit Hang
kernel:   Tx Queue             <0>
kernel:   TDH                  <a>
kernel:   TDT                  <a>
kernel:   next_to_use          <a>
kernel:   next_to_clean        <2>
kernel: buffer_info[next_to_clean]
kernel:   time_stamp           <9fd5>
kernel:   next_to_watch        <2>
kernel:   jiffies              <a3bd>
kernel:   next_to_watch.status <0>
kernel: e1000: eth0: e1000_watchdog: NIC Link is Up 1000 Mbps Full Duplex

オプションをいろいろと変更してみてもダメでした.
e1000のSourceForgeにも同様のバグが報告されている.マザーボードがVIAの古いチップセットの為との報告ともあるので,ドライバでなんとかなるのかは微妙です.

GbE-PCI2

ドライバのインストール

VIA社のVT6122というチップを使っているので,VIA Networking Technologies, Incからドライバをダウンロードする.

解凍

$ unzip VT6120_VT6122v24FVNT.zip
$ cd LINUX
$ tar zxvf velocityget.tar.gz

コンパイル&インストール

$ cd 1.22
# make install

ドライバを追加

/etc/modules.confに追加

alias eth0 velocityget

使用感

とりあえず問題なく動いており,ログにも変なメッセージもありませんでした.
現在はこのLANボードを使っております.