Fedora で fit-PC2 の無線 LAN を使用する

概要

fit-PC2 を購入し Fedora 14 を入れましたが、インストール直後の状態では fit-PC2 の無線は使えませんでした。 そこで、Ralink のサイトよりドライバ (ソースコード) を入手してインストールしました。 てこずりましたが、やっと fit-PC2 で無線 LAN アダプタを使えるようになりましたので、設定をまとめておきます。 ちなみに無線通信の相手 (アクセスポイント) はバッファローの WLAE-AG300N/V です。 802.11g/b、WPA2 + AES に設定して使用しています。

私が慣れていないというのもあって NetworkManager ではうまく動かすことができず、慣れ親しんだ network サービスを使うことにしました。 更に iwconfig での設定がうまくいかなかったので、/sbin/if-local に iwpriv コマンドの羅列を書いて動かすようにしました。 (コンパイル時パラメータを変えながら試行錯誤したので、ひょっとすると今は iwconfig も使えるようになっているかも知れません)

ちなみに lspci してみると以下のように表示されます。

03:00.0 Network controller: RaLink RT3090 Wireless 802.11n 1T/1R PCIe

有線 LAN の方 (r8169 ドライバ) は Fedora インストール直後から使用できています。

ドライバのコンパイル

まずはRalink のサイトより RT3090PCIe の Linux 用ドライバソースコードをダウンロードします。 私が使用したバージョンは 2.4.0.4 (2010/12/17) です。 ダウンロードした ZIP ファイルを展開した後は、README_STA_pci を読んでおきましょう。 RT2860 が名前に含まれるファイルはあるけど RT3090 は無かったりするので、一瞬ダウンロードするファイルを間違えたかと思いましたが、展開したディレクトリ名に RT3090 が含まれていればそれは RT3090 用です。

続いてコンパイルに必要なパッケージをインストールします。 このドライバを使うにはカーネル全体を作り直す必要はなく、ドライバのコンパイルのみで済みました。 Fedora サイトの情報を参考にしましたが、yum で kernel-devel をインストールすると最新版がダウンロードされ、インストールされているカーネルとバージョンの差異が生じるため、マニュアルで rpm をダウンロード&インストールしました。 (バージョンを指定するやり方があるのかも知れませんが、yum 初心者なのでわかりません…。)

rpm -ihv kernel-devel-2.6.35.6-45.fc14.i686.rpm

次はいよいよコンパイルです。 Makefile は変更不要でしたが、os/linux/config.mk の HAS_NATIVE_WPA_SUPPLICANT_SUPPORT を n に変えました。 y のままコンパイルしたものはうまく動きませんでした。 ちなみに HAS_WPA_SUPPLICANT の方は y のままです。

HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n

後は一般ユーザで普通に make します。 make の最後で /tftpboot にモジュールをコピーしようとして、(多分) 失敗しますが、気にしなくて良いと思います。

make

続いて root 権限で make install しましょう。 /lib/modules/(uname -r)/kernel/drivers/net/wireless/ の下に rt3090sta.ko というドライバファイルがインストールされ、depmod -a も実行されます。

make install

ここまででドライバが準備できました。 このドライバが読み込まれると ra0 という無線 LAN 用インターフェイスが使用可能になります。

起動用ファイルの準備

起動時のネットワーク設定用ファイルを準備して行きます。 まず、ネットワーク用サービスを NetworkManager から network に切り替えます。

chkconfig NetworkManager off
chkconfig --level 2345 network on

続いて /etc/sysconfig/network-scripts/ifcfg-ra0 を用意します。 こちらは一般的な内容ばかりです。

DEVICE=ra0
TYPE=Wireless
BOOTPROTO=none
IPADDR=192.168.0.1
PREFIX=24
IPV6INIT=no
ONBOOT=yes

最後に /sbin/ifup-local を作ります。 ifup-local とはインターフェイスの起動直後に呼び出されるスクリプトファイルです。 かなり強引な気がしますが、私のケースでは iwconfig による設定が今一つだったのでこうしてしまいました。

#!/bin/sh
if [ "$1" = "ra0" ]; then
iwpriv ra0 set NetworkType=Infra
iwpriv ra0 set AuthMode=WPA2PSK
iwpriv ra0 set EncrypType=AES
iwpriv ra0 set SSID=your_ssid
iwpriv ra0 set WPAPSK=your_key
fi

ifup-local には実行属性をつけますが、大事な内容が含まれるので読めるのは root だけにしておきましょう。

chmod 700 /sbin/ifup-local

ここまでで準備は整いました。 fit-PC2 をリブートすれば無線 LAN が使えるようになると思います。

その他・おまけ

ifconfig で ra0 を見ると RX(TX) packets は 0のままカウントアップされません。 通信は出来ているのでそういうものなのでしょう。 RX(TX) bytes の方はきちんと増えています。

有線 LAN の方の話ですが、/etc/sysconfig/network-scripts/ifcfg-eth0 を整理していたら、「Device eth0 does not seem to be present」というエラーが出るようになってしまいました。 MAC アドレス指定 (HWADDR) の行を消したのがまずかったようでこれを戻したところ無事使用できるようになりました。