目的
さてさて、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: 処理中にエラーが起きましたが、最後まで処理してからエラー終了させました
理由が良くわからないので、参考にしたサイトと同じバージョンのドライバならどうだろうと思って、こっちも取ってきました。
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が現れるはずです。