2010-11-11

RealTek 8168B を CentOS 5.5 で使う。

Hadoop クラスタ作った


仕事で今時なパソコンに CentOS 5.5 を使って Hadoop クラスタを作っていた。 使ったマザーボードはこれら。



  • MSI X58 Pro-E

  • ASUS M4A88TD-V EVO/USB3


適度な負荷をかけていると必ず kernel panic になったりして困っていた。
問題が起きる箇所は2カ所あった。



  • SATA のコントローラ。 これはBIOSでのSATAの設定を、IDE でなく AHCI に切り替えることで解決。

  • Ethernet コントローラ。 RealTek の 8168B というチップを使っており、これのドライバが CentOS 5.5 のカーネルに収録されていない。


SATAの問題はBIOSの設定を切り替えて、再インストールすることで解消。 


残る Ethernet のドライバだが、r8168 を使っているのに CentOS のカーネルでは、r8169 のドライバを使い回してしまうところに問題があった。 ということで r8168 のドライバを入手して入れれば良さそう。


利用していたマシンの /sbin/lspci -v の結果は、下記のようになっています。


06:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 02)
Subsystem: Micro-Star International Co., Ltd. Unknown device 7522
Flags: bus master, fast devsel, latency 0, IRQ 98
I/O ports at e800 [size=256]
Memory at fbdff000 (64-bit, non-prefetchable) [size=4K]
Memory at f8ff0000 (64-bit, prefetchable) [size=64K]
Expansion ROM at fbdc0000 [disabled] [size=128K]
Capabilities: [40] Power Management version 3
Capabilities: [50] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable+
Capabilities: [70] Express Endpoint IRQ 1
Capabilities: [b0] MSI-X: Enable- Mask- TabSize=2
Capabilities: [d0] Vital Product Data

06:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 06)
Subsystem: ASUSTeK Computer Inc. Unknown device 8432
Flags: bus master, fast devsel, latency 0, IRQ 58
I/O ports at e800 [size=256]
Memory at fdfff000 (64-bit, prefetchable) [size=4K]
Memory at fdff8000 (64-bit, prefetchable) [size=16K]
Expansion ROM at febe0000 [disabled] [size=128K]
Capabilities: [40] Power Management version 3
Capabilities: [50] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable+
Capabilities: [70] Express Endpoint IRQ 1
Capabilities: [b0] MSI-X: Enable- Mask- TabSize=4
Capabilities: [d0] Vital Product Data
Capabilities: [100] Advanced Error Reporting
Capabilities: [140] Virtual Channel

調べ回っていたところ、ELRepo から最近のカーネルドライバを入手して入れれば良いとのこと。 以下、手順を記録しておく。


ELRepo の登録


yum から ELRepo のパッケージをインストールできるようにする。


rpm -Uvh http://elrepo.org/elrepo-release-5-1.el5.elrepo.noarch.rpm

インストール後、elrepo を enable にするために、/etc/yum.repos.d/elrepo.repo を編集。


[elrepo]
name=ELRepo.org Community Enterprise Linux Repository - el5
baseurl=http://elrepo.org/linux/elrepo/el5/$basearch/
http://elrepo.reloumirrors.net/elrepo/el5/$basearch/
http://mirror.solvention.de/elrepo.org/linux/elrepo/el5/$basearch/
http://ftp.ines.lug.ro/elrepo/elrepo/el5/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org
protect=0

「enabled=1」を設定ね。 または yum コマンドを実行するときに


yum --enablerepo=elrepo

とか行ってもOK。


kmod-r8168 をインストール


今回の目的のドライバ r8168 をインストール


yum install kmod-r8168

リブート


あとはリブートすればOK。


もし失敗したら


もしドライバのインストールに失敗して、一時的に CentOS 標準の r8169 を使いたいとしたら、こんなコマンドを実行してね。


rmmod r8168
modprobe mii
insmod /lib/modules/$(uname -r)/kernel/drivers/net/r8169.ko

参考資料


0 件のコメント:

コメントを投稿