CentOSで無線LANカードを認識させる

Ubuntu入れてる方じゃなくて、「PXEbootで古いDynabookにCentOSをインストール」で使った古い方のノートに、余ってた無線LANカードを差してルーティングの実験をしようと思ったら、無線LANを動かすだけで苦戦してしまったので単体でエントリ。
無線ルータはBuffaloの「WHR-G54S/P」で、カードはそのオマケで入ってるPCカード型の「WLI-DB-G54S」です。
何も考えずにとりあえず指してみたら、デバイスは認識するけどカードのLEDも点灯しないし、当然全く動かないので調べてみることに。まずはドライバから。

LANカードのドライバをLinuxに入れること自体そもそも初めてなんだけど、ググってみると「NdisWrapper」というのを使ってWindows用のドライバを利用してLinuxでも無線LANを動かすらしい(参考:@IT:Linuxで無線LANを使うには)。
ということで、NdisWrapper無線カードのドライバ を拾ってくる。ドライバはlhaの自己解凍exeになっているので、lhaをapt-getしてそいつで解凍。

解凍したアーカイブから適当な.infをみつくろって、

ndiswrapper -i cbg54/win2000/net2pg54.inf

としてやると、ドライバがインストールされたっぽい。ndiswrapper -l で一覧を見てみるとそれっぽいメッセージが出てきました。

net2pg54 : driver installed
device (xxxx:xxxx) present (alternate driver: bcm43xx)

このbcm43xxというのが実際の無線LANチップみたい。2chの情報でこんなのも。

Buffaloから落としてきたドライバで認識は出来たみたいなので今回は無しで。他には、

なんてのも。ざっくり読んでみると「カーネル2.6.18以降でBCM43xxのドライバはデフォルトで入ってるはずだけど、ぶっちゃけ動いてないから結局はNdisWrapper使うはめになるよ」的なことが書いてあるっぽいです。

ということでドライバは入ったはずなんだけど、やっぱりカードのLEDは無反応。他にもいろいろ見てみると、Fedora JP 掲示板 でそれっぽいのが。

rmmod bcm43xx
rmmod ieee80211softmac
rmmod ieee80211
rmmod ieee80211_crypt
modprobe ndiswrapper

とやって、カードを差し直したらLEDが点灯して動きだしました。

次にネットワークの設定を、この場合は/etc/sysconfig/network-scripts/ifcfg-eth1に書いていきます。基本的には普通のNICと同じなんだけど、

TYPE=Wireless
ESSID=(無線のESSID)

てな感じの記述を入れました。で、WEPキーを/etc/sysconfig/network-scripts/keys-eth1に、

KEY="s:(WEPキー文字列)"

とやって書いておく、と。s:で始めると文字列になるみたいです。HEXで書く場合はいらないはず。ついでに、keys-eth1はパーミッション600にして一般ユーザからは見られないように。別にいいじゃんとか思わないでもないけど、まぁ一応。sudo出来ない人にはWEPキー教えない的なポリシーだとちょうどいいですね。

設定自体はこれで問題なかったんですが、内蔵の有線LANがeth0で優先されてしまって(シャレじゃない)、無線の方で通信しないという現象でハマってましたorz 無線LANの設定をして、ケーブルの抜けた有線LANカードでがんばってた…
その間にジタバタしてた時のメモもせっかくなので残す。とりあえずルータと通信できてるかを確認するために、DHCPでIPを取得してみると、IPは問題なく取れるんだけど、

SIOCSIFMTU: Invalid argument

なんてエラーが出てきた。IP自体は取得できてたんだけど、MTUの設定でしくじったらしい。固定IPにするとMTU:1500がデフォルトになって、それで問題ないけど、DHCPでやると何故かうまくいかない模様。ifconfig eth0 mtu 1454 とかやって、数値を抑えると解決はしたものの、正直何がどうなってるのやらさっぱり。

ちなみに、設定がおかしいことに気付いたのは、netstat -rnしてネットワークがeth0に支配されてるのを見た時でした。もっとさっさと…