部屋のファイルサーバはIntel D945GCLF2というマザーボードです。ここにDebian GNU/Linux 5.0(Lenny) を入れ、カーネルだけLinux 2.6.28に入れ替えて使っています。
しかしこのボード、買った当初からどうにもネットワークが不安定で、通信中に突然リンクダウンしたり、NETDEV WATCHDOG: transmit timed outというOopsが出てNICごと撃沈します。
あまりに調子が悪くていい加減イライラしてきたので、解決に向けて調べることにしました。
調べてみるとD945GCLF2のNICはRealtek RTL8168BというPCI Express接続(※)のギガビットイーサネットインタフェースです。
それに対して今使っているドライバは、Realtek RTL816「9」SというPCI接続のギガビットイーサネットのドライバです。つまり不調の原因はドライバが間違っていたせいだったのです。しかし間違ったドライバなのに中途半端に動いてしまうのでタチが悪いです。
なんで動いちゃうの?という疑問はさておき、正しいドライバ(RTL8111/8168シリーズ用のドライバ)はRealtekのサイトのこの辺からダウンロードできます。
トップページからの行き方は [上のメニューDownloads] - [左のメニューCommunications Network ICs] - [Network Interface Controllers] - [10/100/1000M Gigabit Ethernet] - [PCI Express] - [Software] - [LINUX driver for kernel 2.6.x and 2.4.x (Support x86 and x64) 8.012.00] です。長い。
ビルドの仕方やインストールの仕方はアーカイブを展開したときにできるreadmeファイルに詳しく書いてあります。下記に一例を示します。
# rmmod r8169 # cd /usr/src # tar xjvf r8168-8.012.00.tar.bz2 # make clean make -C src/ clean make[1]: Entering directory `/usr/src/r8168-8.012.00/src' rm -rf *.o *.ko *~ core* .dep* .*.d .*.cmd *.mod.c *.a *.s .*.flags .tmp_versions Module.symvers Modules.symvers Module.markers *.order make[1]: Leaving directory `/usr/src/r8168-8.012.00/src' # make modules make -C src/ modules make[1]: Entering directory `/usr/src/r8168-8.012.00/src' make -C /lib/modules/2.6.28-r8168/build SUBDIRS=/usr/src/r8168-8.012.00/src modules make[2]: Entering directory `/usr/src/linux-2.6.28-r8168' CC [M] /usr/src/r8168-8.012.00/src/r8168_n.o /usr/src/r8168-8.012.00/src/r8168_n.c:5076: warning: 'rtl8168_reinit_task' defined but not used CC [M] /usr/src/r8168-8.012.00/src/r8168_asf.o LD [M] /usr/src/r8168-8.012.00/src/r8168.o Building modules, stage 2. MODPOST 1 modules CC /usr/src/r8168-8.012.00/src/r8168.mod.o LD [M] /usr/src/r8168-8.012.00/src/r8168.ko make[2]: Leaving directory `/usr/src/linux-2.6.28-r8168' strip --strip-debug r8168.ko make[1]: Leaving directory `/usr/src/r8168-8.012.00/src' # make install make -C src/ install make[1]: Entering directory `/usr/src/r8168-8.012.00/src' install -m 744 -c r8168.ko /lib/modules/2.6.28-r8168/kernel/drivers/net/ make[1]: Leaving directory `/usr/src/r8168-8.012.00/src' # depmod -a # modprobe r8168
手順はRTL8169用のドライバを削除してから、RTL8111/8168用のドライバをインストールしているだけです。
(※)個人的にはギガビットイーサをPCI接続にして、PCI Expressを拡張スロットに出して欲しかったなあ…と思う。
< | 2009 | > | ||||
<< | < | 05 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | - | - | 1 | 2 |
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 | - | - | - | - | - | - |
合計:
本日: