RTL8111D 用ドライバをインストールするには (1)
Intel 新 Atom MB (D510MO) で Ubuntu 9.10 を使うには の続き.
D510MO に Ubuntu Linux (9.10 server, 64bit) をインストールする際,搭載されている GbE NIC, Realtek RTL8111D 用のドライバの入れ方について.
- 自動判別では間違ったドライバが入ってしまう
- r8168 ドライバを使うには
- リブート後も r8168 ドライバを使うには
- カーネル・アップデート後も r8168 ドライバを使うには-2
- そもそもなぜ自動判別に失敗するのか
症状: 自動判別では間違ったドライバが入ってしまう
Ubuntu 9.10 server, 64bit 版を入れてはみたものの,どうもネットワーク接続が不安定.GbE ハブを疑ったりしていたものの,どうやら間違ったデバイス・ドライバがインストールされるという問題にあたっているようだ.
D510MO に使われている GbE NIC は Realtek RTL8111D.対応するドライバは RTL8168/RTL8111 用のドライバ r8168.ただし自動認識させると,似て非なる r8169 ドライバが使われてしまう.
dmesg の結果から関連する行:
r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded r8169 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 r8169 0000:01:00.0: setting latency timer to 64 alloc irq_desc for 29 on node 0 alloc kstat_irqs on node 0 r8169 0000:01:00.0: irq 29 for MSI/MSI-X eth0: RTL8168d/8111d at 0xffffc9000034c000, 00:27:0e:XX:XX:XX, XID 281000c0 IRQ 29 ... r8169: eth0: link up
lsmod の結果から関連する行:
Module Size Used by r8169 38884 0 mii 6368 1 r8169
これは以前よりよく知られた問題のようで,いくつも報告がある.例えば,
CentOS 5.2のネットワークインストールが途中で止まったまま動かなくなる現象が数回続く。
http://www.greedy.jp/blog/nowhereman/200901/31/200145
CentOSを入れたがNICを認識しない。
http://d.hatena.ne.jp/hkano/20081014/1223910948
RX droppedが猛烈な勢いでカウントアップ。1分間も放置すると500万とかそれくらいの勢いで上昇しまくりんぐ
http://piro791.blog.so-net.ne.jp/2008-10-01
ただし私のところでは,上で報告されているように完全にダメというわけではなく,使えるときは使える.RX dropped が観測されることもない.インストールやアップデートは終了しているわけだし.
とはいえ以下のような気づきにくい問題もあるらしいので,直しておきたい.
小さなファイルなら問題は無いが、大きなファイルになると、転送途中に必ずといって良いほど接続が途切れてしまう。
http://tokcs.com/blog/2010/01/10/server-lan/
3GB 程度のファイルをコピーしてみると、コピーが途中で止まってしまう現象が発生した。http://www.natzworks.com/digital/entries/2009/000222.html
r8168 ドライバを使うには
本家 Realtek からドライバをダウンロードしてインストールすればよい (以下,カーネルやドライバのバージョン名は適宜読み替えてください).
Realtek の web (http://www.realtek.com/) から
- トップページ > ダウンロードセンター > ネットワ-ク向けIC > Network Interface Controllers > 10/100/1000M Gigabit Ethernet > PCI Express > Software
を選択し,r8168-8.015.00.tar.bz2, "LINUX driver for kernel 2.6.x and 2.4.x (Support x86 and x64) 8.015.00, 2009/11/27" をダウンロード, README に従う.
$ tar xvf r8168-8.015.00.tar.bz2 $ cd r8168-8.015.00 $ make clean modules $ make install (sudo で)
すると以下のコマンドが自動実行され,r8168.ko がインストールされる.
install -m 744 -c r8168.ko /lib/modules/2.6.31-17-server/kernel/drivers/net/
ドライバ一覧を作り直し,r8169 ドライバを削除,r8168 ドライバを認識させる.
$ depmod -a $ rmmod r8169 mii $ modprobe r8168
あとはネットワーク関係を再起動すれば,問題なく使えるようになる.
$ /etc/init.d/networking restart
lsmod で r8168 ドライバが認識されていることが確認できる.
のだが,リブートすると,r8169 ドライバに戻ってしまう.
リブート後も r8168 ドライバを使うには
(2010.05.05 追加)
このような指摘もあるようです.
「Atom 64bit+RTL8168/8111」の組み合わせが問題?
http://ameblo.jp/mikurins/entry-10523479313.html