Atheros のネットワークライバをインストール

まず、NICのドライバを取ってくる

http://www.unitycorp.co.jp/asus/motherboard/intel/lga775/p5kpl-cm/index.html#detail
を見るとP5KPL-CM のNIC

Atheros AR2181 PCIe Gigabit LAN controller

というものを使っている。Atheros。アセロス。アメリカのメーカで無線LANが有名らしい。


ドライバを取ってくる
http://partner.atheros.com/Download.aspx?id=13
説明をよみ、Accept で AR81Family-linux-v1.0.1.0.tar.gz のダウンロードが始まる。
これをUSBメモリに入れる。

atheros がクアルコムの子会社になったので↑のリンクが死んだみたい。
ftp://starlane.gotdns.org/drivers/AR81Family-linux-v1.0.1.0/
ここから取れます。

USBメモリをマウント

ドライバを入れたUSBをサーバに挿して、rootでログイン。


バイスの名前を確認。
多すぎて流れてしまうので、lessで

# dmesg | less
USB Mass Storage support registered.
  Vendor: I-O DATA  Model: USB Flash Disk   Rev:3A
  Type:   Direct-Access                     ANSI SCSI revision:02
SCSI device sdb: 4014080 512-byte hdwr sectors (2055 MB)
...
 sdb: sdb1

とあり、sdb1ってのが名前っぽい

ディレクトリを作ってそこにマウント

# mkdir /mnt/usb
# mount -t vfat /dev/sdb1 /mnt/usb

ローカルにコピー

# mkdir -p /root/work/driver
# cp /mnt/usb/AR81Family-linux-v1.0.1.0.tar.gz /root/work/driver
# cd /root/work/driver

解凍

# tar xvfz AR81Family-linux-v1.0.1.0.tar.gz
atl1e.7
copying
ldistrib.txt
readme
release_note.txt
src/
src/at.h
src/at_ethtool.c
src/at_hw.c
src/at_hw.h
src/at_main.c
src/at_osdep.h
src/at_param.c
src/kcompat.c
src/kcompat.h
src/kcompat_ethtool.c

gzip: stdin: decompression OK, trailing garbage ignored
src/Makefile
src/Module.symvers
tar: Child returned status 2
tar: Error exit delayed from previous errors

なんかエラーでる。

圧縮ファイルの中をみる

# tar tvfz AR81Family-linux-v1.0.1.0.tar.gz
-r-xr-xr-x root/root      4361 2008-05-13 11:54:12 atl1e.7
-r-xr-xr-x root/root     19010 2008-05-13 11:54:12 copying
-r-xr-xr-x root/root      4715 2008-05-13 11:54:12 ldistrib.txt
-r-xr-xr-x root/root      7703 2008-05-13 11:54:12 readme
-r-xr-xr-x root/root       942 2008-07-07 15:46:09 release_note.txt
drwxrwxrwx root/root         0 2008-07-23 18:56:12 src/
-r-xr-xr-x root/root      4310 2008-07-23 14:48:52 src/at.h
-rwxrwxrwx root/root     15816 2008-07-23 14:48:52 src/at_ethtool.c
-rwxrwxrwx root/root     23624 2008-07-23 14:48:52 src/at_hw.c
-rwxrwxrwx root/root     51977 2008-07-23 18:55:06 src/at_hw.h
-rwxrwxrwx root/root     97865 2008-07-23 18:55:33 src/at_main.c
-r-xr-xr-x root/root      3360 2008-07-23 14:48:52 src/at_osdep.h
-r-xr-xr-x root/root      9289 2008-07-23 14:48:52 src/at_param.c
-r-xr-xr-x root/root      5914 2008-07-23 14:48:52 src/kcompat.c
-r-xr-xr-x root/root     36370 2008-07-23 14:48:52 src/kcompat.h
-r-xr-xr-x root/root     30563 2008-07-23 14:48:52 src/kcompat_ethtool.c

gzip: stdin: decompression OK, trailing garbage ignored
-r-xr-xr-x root/root     10934 2008-07-23 14:48:52 src/Makefile
-rwxrwxrwx root/root         0 2008-07-23 14:48:52 src/Module.symvers
tar: Child returned status 2
tar: Error exit delayed from previous errors

...元から src/Module.symvers の容量が0byte になってる。
こいつが原因なのかな?調べたけどこの解決方法がよく分からなかった。
とりあえず、解凍できたものと、圧縮ファイルの中に入っているファイルは、すべて同じ容量だったので、続けてみる。
*1


いざ、インストール

# cd src
# make install
# insmod atl1e.ko


このサーバのIPを設定

# ifconfig eth0 192.168.0.200

再起動するたびに、設定するのは面倒なので、追記しておく

# vim /etc/modprobe.conf
 alias eth0 atl1e

ネットワークをスタート

# /etc/ini.d/network start

ルータにpingをうってみる。

# ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1): 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=0.400 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=0.368 ms

通った!サーバの背面を見ると、LANケーブルの挿口も光ってる。

でも、外のネットワークには繋がってない様子。



なんとなく、再起動。

# shutdown -r now

期待してrootでログインすると、今度は外のネットワークにも繋がるようになってた!
一応確認

$ lsmod | grep atl1e
atl1e                  41876  0

OK



でも、IPが変わってた。そういえば、ifconfig で設定したけど、設定ファイルには書いてなかったので追記。

# vim /etc/sysconfig/network-scripts/ifcfg-eth0
# Attansic Technology Corp. L1 Gigabit Ethernet Adapter
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.0.255
IPADDR=192.168.0.101
NETMASK=255.255.255.0
HWADDR=00:24:8c:9d:b3:9c
ONBOOT=yes
NETWORK=192.168.0.0
GATEWAY=192.168.0.1
TYPE=Ethernet
USERCTL=no
PEERDNS=no
IPV6INIT=no

ついでに
# vim /etc/resolv.conf 
search localdomain
nameserver 192.168.0.1


いい経験になったけど、疲れた。今度からはintelNICを使っているマザーボードを買う。絶対。



参考にしました。
http://ziddy.japan.zdnet.com/qa4481736.html
http://kajuhome.com/tips/tips_00_003.shtml


            • -


蛇足。
最初、CDからインストールしたとき、開発ツールを選択してなかったため、泥沼に陥った。。
記録として書いたけど、消すのもったいないのと、開発環境にチェックをいれた理由としても、残しておく。
インストール時に開発環境にチェックを入れておくと、これらの問題に悩むことはない。


NICのドライバを make しようとすると、失敗する。Makefileの中身を見ると、kernel のソースを探して失敗している様子。
仕方ないので、カーネルのソースを取ってくる。
Mac側から取得

$ wget "http://ftp.riken.jp/Linux/centos/5.3/updates/SRPMS/kernel-2.6.18-128.1.1.el5.src.rpm"

USBに移して、CentOSでマウント

# mount -t vfat /dev/sdb1 /mnt/usb
# mkdir /root/work/kernel
# cp /dev/sdb1/kernel....  /root/work/kernel
# cd /root/work/kernel
# rpm -ivh kernel-2.6.....  展開に失敗した、ディレクトリがないらしい
# mkdir /usr/src/redhat     つくる
# rpm -ivh kernel-2.6.....  もっかい
# cp /usr/src/redhat/SOURCES/linux-2.6.18.tar.bz2 /root/work/kernel
# tar xvfj linux-2.6.18.tar.bz2

Makefile の中をみると
/usr/src/linux以下におけばよさそうなので

# cp -R /root/work/kernel/linux-2.6.18./* /usr/src/linux

あらためて、make install

# cd /root/work/kernel/ar81/src
# make install
# Makefile:107: *** Linux kernel source not configured - missin autoconf.h Stop.

http://support.intel.co.jp/jp/support/network/adapter/1000/linux_readme.htm
をみると

make include/linux/version.h

でOKらしいので、やってみる。

cd /usr/src/linux
make include/linux/version.h
/usr/src/linux/scripts/gcc-version.sh: line 11: gcc: command not found
/usr/src/linux/scripts/gcc-version.sh: line 12: gcc: command not found
make: gcc: Command not found
  CHK     include/linux/version.h

...... まじでか。
http://memorva.jp/memo/linux/gcc_curses.php
をみると、色々必要っぽい。すんごいだるい。この先gcc以外にも、こんな事が起こりそう。
そのため、OSを再インストールして開発環境のパケージにチェック付けることにした。


ちなみに、こういうサイトがあるらしい。
http://rpm.pbone.net/

*1:追記:同じ方法で解凍してるから、結果は同じで当然か!