hachiNote

勉強したことをメモします。

CentOS5でNICが認識されない(AR8131)

目的

さてさて、OSのインストールも済んだし、早速データのコピーでも……って、ifconfig 打っても eth0 がないじゃないですか! NICが認識されてねぇ〜。このままじゃ通信不能だ。

ネットで調べてみると、CentOS5で、AR8131というチップセットNICが認識しないという話があるようで、皆さんすでに体験済みの様子。今回はAR8131のドライバのインストールを行います。

搭載されているNICの種類を確認する

皆さんすでに同じ問題にぶちあっているみたいで、いくつか記事がありました。今回はこちらを主に参考にさせていただきました。ありがとうございます。

CentOS5.5 で NIC(ネットワーク/LAN)が認識しない(MSI785GM / Atheros AR8131) [ へっぽこSEのメモ帳 ]
http://www.kurobuti.com/blog/?p=1998

記事を読んでいて私も始めて知ったのですが、刺さっているデバイスの種類を知るには、lspci というコマンドをたたけばいいんですね。勉強になります。覚えておかなきゃ。

# /sbin/lspci
 (中略)
02:00.0 Ethernet controller: Atheros Communications AR8131 Gigabit Ethernet (rev c0)

ふむ。どうやら私のPCには Atheros Communicationsというメーカーの、AR8131というチップが載ったNICが搭載されているみたいです。lspciで出てくるってことは、デバイスとしては認識されているということみたいです。でもドライバがないから使える状態になってないってことみたいですね。

AR8131のドライバをダウンロードしてくる

とりあえず最新のドライバのほうがいいかなと思って探したんですが、ATHEROS のサイトがいまいち雑でわかりづらいです。一応これかなぁってものは見つけたんですが……。

ATHEROS COMMUNICATIONS, INC.
http://partner.atheros.com/Download.aspx?id=162

怪しさ満載のサイトですが、下のほうの「Accept」ボタンを押すと、AR81Family-linux-v1.0.1.14.tar.gz がダウンロードできます。

ところが……、なんかこれ、tar xzvf で解凍するとエラーが出るんですよね。

# tar xzvf AR81Family-linux-v1.0.1.14.tar.gz
./
./atl1e.7
./atl1e.spec
./at_osdep.h
./copying
./dkms.conf
./ldistrib.txt
./Makefile
./pci.updates
./readme
./release_note.txt
./src/
./src/.atl1c_main.c.swo
./src/atl1c.h
./src/atl1c_ethtool.c
./src/atl1c_hw.c
./src/atl1c_hw.h
./src/atl1c_main.c
./src/atl1c_param.c
./src/atl1e.h
./src/atl1e_ethtool.c
./src/atl1e_hw.c
./src/atl1e_hw.h
./src/atl1e_main.c
./src/atl1e_param.c
./src/at_common.h
./src/at_common_main.c
./src/at_osdep.h
./src/kcompat.c
./src/kcompat.h
./src/kcompat_ethtool.c
./src/Makefile

gzip: stdin: decompression OK, trailing garbage ignored
./src/Module.markers
./src/Module.symvers
./src/modules.order
tar: Child returned status 2
tar: 処理中にエラーが起きましたが、最後まで処理してからエラー終了させました

理由が良くわからないので、参考にしたサイトと同じバージョンのドライバならどうだろうと思って、こっちも取ってきました。

http://code.google.com/p/iats/downloads/detail?name=AR81Family-Linux-v1.0.1.9.tar.gz&can=2&q=label%3AOpSys-Linux

AR81Family-Linux-v1.0.1.9.tar.gz がダウンロードできました。これを解凍したときもやっぱりエラー。

うーん。なんだろ。相変わらずわかりませんけど、その後ソースをいじるっぽいので、参考にしたサイトと同じバージョンの AR81Family-Linux-v1.0.1.9.tar.gz を使うことにしました。

ドライバインストール

下の手順でわざわざnicというディレクトリを作ってますが、これはこのドライバのtar.gzの中身にディレクトリがないからで、そのまま展開するとファイルがどばっと散らばってしまうからです(なんて雑な仕事なんだ…)。なので、名前は何でもいいです。

# mkdir nic
# mv AR81Family-Linux-v1.0.1.9.tar.gz nic
# cd nic
# tar xzvf AR81Family-Linux-v1.0.1.9.tar.gz
# cd src

 ここで、kcompat.h の中身を書き換える。

 1573行目
 #if ( LINUX_VERSION_CODE > KERNEL_VERSION(2,6,24) )
  ↓
 #if ( LINUX_VERSION_CODE > KERNEL_VERSION(2,6,12) )
 
 数字の根拠はわからず。自分のカーネルバージョンより古い値ならいいのかなぁ。

# make
# make install

あとは再起動。すると、eth0が現れるはずです。