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ボードを使っております.