RealTek 8168B を CentOS 5.5 で使う。
仕事で今時なパソコンに 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
コメント
コメントを投稿