更新と言うより、再設定と言った方が最適か。
現在サーバー機に使っているマザーボード、Intel社のD945GCLF2には、オンボードのGigabit LANチップがついている。
なるべく余計な物はつけない構成で稼働させているので、もちろんインターネットへの接続はこのオンボードのLANを使用している。
このサーバーを導入した当初から見られた挙動として、Sambaの不安定さがあった。
小さなファイルなら問題は無いが、大きなファイルになると、転送途中に必ずといって良いほど接続が途切れてしまう。何度も何度も再挑戦してやっと転送できる。といった感じ。
今までログもろくに見ないで、Sambaが悪い!と決めつけて、その都度Sambaの再起動をしてみたり設定を見直したりしてきたが、一向に改善しなかった。
Sambaのログを見てみると、丁度接続が切れたぐらいのタイミングで、Connection Timeoutと出ている。接続が切れたからと言ってSambaデーモンが終了してしまっているわけではない。
となると、ネットワークが怪しいとみてdmesgを見てみると、案の定、eth0が何度もlink downとlink upを繰り返しているのが確認できた。
ネットでこれらの状況で検索をかけてみると、どうも問題はkernelがNICを誤認識して、ドライバとして”r8168″を充てないといけないところを、”r8169″を充ててしまっている事が原因とのことだった。
そこで、きちんとNICに”r8168″ドライバを充ててやる為にドライバの再インストールを行った。
.
ドライバは、ネットからダウンロードしてくる。RealtekのHPが何故か閲覧不可だったので、アーカイブサイトからダウンロードしてきた。
ダウンロードしてきたらアーカイブを展開。
# tar xjvf r8168-8.008.00.tar.bz2 # cd r8168-8.008.00
中に入っている “readme” に詳しい方法が書いてあるのでその通りに行っていく。
まずは既存のドライバの削除。…の前にドライバ構築に必要なパッケージ(kernel-devel)がインストールされているか確認する。ドライバを削除するとNICが認識しなくなるので、別のパソコンでパッケージをダウンロードしなければならなくなる。非常に面倒なので、ドライバを消す前にダウンロードする。
パッケージをインストールしたら、”r8169″があるかチェックして、あるようなら削除。
# lsmod | grep r8169 r8169 40836 0 mii 13312 1 r8169 # rmmod r8169
削除が終わったら新しいドライバをmakeする。
# make clean modules make -C src/ clean make[1]: ディレクトリ `/root/src/r8168-8.008.00/src' に入ります rm -rf *.o *.ko *~ core* .dep* .*.d .*.cmd *.mod.c *.a *.s .*.flags .tmp_versions Module.symvers Modules.symvers *.order make[1]: ディレクトリ `/root/src/r8168-8.008.00/src' から出ます make -C src/ modules make[1]: ディレクトリ `/root/src/r8168-8.008.00/src' に入ります make -C /lib/modules/2.x.xx-generic/build SUBDIRS=/root/src/r8168-8.008.00/src modules make[2]: ディレクトリ `/usr/src/linux-headers-2.x.xx-generic' に入ります CC [M] /root/src/r8168-8.008.00/src/r8168_n.o /root/src/r8168-8.008.00/src/r8168_n.c: In function ‘rtl8168_down’: /root/src/r8168-8.008.00/src/r8168_n.c:4494: 警告: unused variable ‘poll_locked’ /root/src/r8168-8.008.00/src/r8168_n.c: トップレベル: /root/src/r8168-8.008.00/src/r8168_n.c:2420: 警告: ‘rtl8168_phy_power_down’ defined but not used /root/src/r8168-8.008.00/src/r8168_n.c:3834: 警告: ‘rtl8168_reinit_task’ defined but not used LD [M] /root/src/r8168-8.008.00/src/r8168.o Building modules, stage 2. MODPOST 1 modules CC /root/src/r8168-8.008.00/src/r8168.mod.o LD [M] /root/src/r8168-8.008.00/src/r8168.ko make[2]: ディレクトリ `/usr/src/linux-headers-2.x.xx-generic' から出ます strip --strip-debug r8168.ko make[1]: ディレクトリ `/root/src/r8168-8.008.00/src' から出ます
Errorが出なければ成功。続いてインストール。
# make install make -C src/ install make[1]: ディレクトリ `/root/src/r8168-8.008.00/src' に入ります install -m 744 -c r8168.ko /lib/modules/2.x.xx-generic/kernel/drivers/net/ make[1]: ディレクトリ `/root/src/r8168-8.008.00/src' から出ます # depmod -a # insmod ./src/r8168.ko
最後にきちんとドライバが当たっているか確認。
# lsmod | grep r8168 r8168 40592 0 # ifconfig -a eth0 Link encap:イーサネット ハードウェアアドレス 00:xx:xx:xx:xx:xx inetアドレス:10.0.0.10 ブロードキャスト:10.0.0.255 マスク:255.255.255.0 inet6アドレス: fe80::21c:c0ff:feb4:cb26/64 範囲:リンク UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1 RXパケット:279 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:252 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:1000 RXバイト:199323 (199.3 KB) TXバイト:52104 (52.1 KB) 割り込み:252 lo Link encap:ローカルループバック inetアドレス:127.0.0.1 マスク:255.0.0.0 inet6アドレス: ::1/128 範囲:ホスト UP LOOPBACK RUNNING MTU:16436 メトリック:1 RXパケット:1485341 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:1485341 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:0 RXバイト:853725539 (853.7 MB) TXバイト:853725539 (853.7 MB) # dmesg | tail [2902334.084090] r8169 0000:01:00.0: PCI INT A disabled [2902583.202193] [drm:i915_getparam] *ERROR* Unknown parameter 6 [2903055.279270] r8168 Gigabit Ethernet driver 8.008.00-NAPI loaded [2903055.279334] r8168 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [2903055.279377] r8168 0000:01:00.0: setting latency timer to 64 [2903055.280426] r8168 0000:01:00.0: irq 2300 for MSI/MSI-X [2903055.282482] r8168: This product is covered by one or more of the following patents: US5,307,459, US5,434,872, US5,732,094, US6,570,884, US6,115,776, and US6,327,625. [2903055.282533] eth0: Identified chip type is 'RTL8168C/8111C'. [2903055.282545] eth0: RTL8168B/8111B at 0xf8610000, 00:xx:xx:xx:xx:xx, IRQ 2300 [2903059.208342] r8168: eth0: link up [2903069.856018] eth0: no IPv6 routers present