Fedora 9で無線LANを使えるようにする

Fedora 9 で無線 LAN を使えるようにする
1 はじめに
Fedora 9 を PS3 にインストールした状態では無線 LAN (WLAN) が動かず、 yum で最
新状態にアップデートしても今のところ動作しないため、このドキュメントでは、PS3 で
WLAN を正常に動かすための方法を紹介します。
2 前準備・前提
はじめに、最新の F9 の update を行っておく。
# yum update -y
これによって下記の rpm パッケージが導入されます。
kernel-2.6.26.3-29.fc9.ppc64
wpa_supplicant-0.6.3-6.fc9.ppc
wireless-tools-29-2.fc9.ppc
NetworkManager-0.7.0-0.11.svn4022.fc9.ppc
注記: もし F9 をインストールした直後で過去に一度もアップデートしていないのであれ
ば、先に'e2fsprogs'をアップデートしてから残りのパッケージをアップデートしてください。
F9 の標準でインストールされる'e2fsprogs'にはスワップパーティションを認識しないと
いうバグがありますので、スワップが機能しないシステムの状態です。
// rpm key をアップデートします
// F9 がリリースされた後に Fedora は pgp key を更新しました。
# yum update -y fedora-release
# yum update -y e2fsprogs*
# swapon -a
// 最新のカーネルでは iwl4965-firmware がコンフリクトします
// Intel 4965AGN は PS3 では必要のない mini-PCIe card ですので削除します。
# yum remove -y iwl4965-firmware
# yum update -y
(300 以上の rpm パッケージがアップデートされます。コーヒーでも飲んでのんびりし
てください :)
3 カーネル
完全な PS2 WLAN 用のドライバは 2.6.26 が出た後に Linus さんの tree にマージさ
れました。従いまして、kernel.org にある 2.6.27 にはこのドライバが入っています。し
かし、幸運なことに Fedora 9 の最新カーネル(kernel-2.6.26.3-29.fc9)にも、ほとんどこの
ドライバに必要なパッチが含まれていますので、Fedora9 の最新カーネルを使います。
そのほかには、PS3 Linux メンテナーの Geoff さんが正常に動作するカーネル tree を
kernel.org においていますので、そちらをダウンロードしてコンパイルすることも出来ま
す。(#git clone http://www.kernel.org/pub/scm/linux/kernel/git/geoff/ps3-linux.git)
4 wpa_supplicant
PS3 WLAN ドライバは、Linux Wireless Extension (WEXT) インターフェイスを利用
して制御・設定するように設計されており、'wpa_supplicant' ツールで動作することがテス
トされています。wpa_supplicant のバージョン 0.9.4 から PS3 Linux WLAN の対応が
入りました。 Fedora 9 では、0.9.3 が使われていますのでアップデートする必要がありま
す。
4.1 ソースのダウンロード
wpa_supplicant のバージョン 0.9.4 またはそれ以降を入手します。wpa_supplicant プ
ロジェクトのホームページからダウンロードすることが出来ます。
http://w1.fi/wpa_supplicant/
おそらく直接下記を指定することで tar パッケージを取得できます。
http://w1.fi/releases/wpa_supplicant-0.6.4.tar.gz
4.2 コンパイル
パッケージファイルを展開してビルドオプションを設定して 'make' とタイプして、
wpa_supplicant をコンパイルします。ビルドオプションは、ソースディレクトリにありま
す .config ファイルで設定します。コンパイルの詳細につきましては、パッケージ内にあ
ります README を参照してください。
また、F9 の srpm には wpa_supplicant をコンパイルするための .config ファイルが含
まれています。下記のリストは F9 のビルドオプションとほぼ同じですが、MadWiFi だ
けが off にしてあります。MadWiFi をコンパイルするには wpa_supplicant のパッケージ
に含まれていない特別なヘッダーが必要になるためです。
CONFIG_CTRL_IFACE=y
CONFIG_CTRL_IFACE_DBUS=y
CONFIG_DRIVER_HOSTAP=y
//CONFIG_DRIVER_HERMES=y
//CONFIG_DRIVER_MADWIFI=y
CONFIG_DRIVER_ATMEL=y
CONFIG_DRIVER_WEXT=y
CONFIG_DRIVER_NDISWRAPPER=y
CONFIG_DRIVER_PRISM54=y
CONFIG_DRIVER_WIRED=y
//CONFIG_DRIVER_BROADCOM=y
//CONFIG_DRIVER_IPW=y
//CONFIG_DRIVER_BSD=y
//CONFIG_DRIVER_NDIS=y
CONFIG_WIRELESS_EXTENSION=y
CONFIG_IEEE8021X_EAPOL=y
CONFIG_EAP_MD5=y
CONFIG_EAP_MSCHAPV2=y
CONFIG_EAP_TLS=y
CONFIG_EAP_PEAP=y
CONFIG_EAP_TTLS=y
CONFIG_EAP_GTC=y
CONFIG_EAP_OTP=y
CONFIG_EAP_SIM=y
CONFIG_EAP_AKA=y
CONFIG_EAP_PSK=y
CONFIG_EAP_PAX=y
CONFIG_EAP_LEAP=y
//CONFIG_PCSC=y
CONFIG_PKCS12=y
CONFIG_SMARTCARD=y
CONFIG_DEBUG_FILE=y
F9 のインストールの仕方によって、wpa_supplicant をコンパイルするのに開発用 rpm
パッケージを追加でインストールする必要がある場合があります。たとえば gcc や
openssl や X11 や qt などです。
4.3 wpa_supplicant のテスト
コンパイルした後、下記の手順でテストをおこないます。
- wpa_supplicant の設定ファイルを書く
- NetworkManager をとめる
- 実行
サンプルの設定ファイルは後節で説明します。
# vi wpa_supplicant.conf
(自分の AP 用に編集します)
# /etc/rc.d/init.d/NetworkManager stop
# cd wpa_supplicant.0.6.4/wpa_supplicant
# ./wpa_supplicant -dd -Dwext -iwlan0 -c ~/wpa_supplicant.conf
wpa_supplicant がうまく AP に接続できたならば、下記のようなメッセージが表示され
ます。
CTRL-EVENT-CONNECTED - Connection to 00:11:22:33:44:55 completed
...
RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added
それでは、IP アドレスを設定して接続できるかテストします。
# ifconfig wlan0 192.168.1.10
# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 65(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=5.80 ms
...
4.4 wpa_supplicant のインストール
今回コンパイルしたバイナリをインストールする一番簡単な方法は、古い wpa_supplicant
を上書きすることです。F9 の rpm パッケージでは下記の 3 つのファイルが含まれるだけ
ですので、それぞれ今回コンパイルしたバイナリで上書きします。
/usr/sbin/wpa_supplicant
/usr/sbin/wpa_cli
/usr/sbin/wpa_passphrase
元の状態に戻すには、wpa_supplicant の rpm パッケージを再インストールします。
4.5 wpa_supplicant.conf のサンプル
こちらが、wpa_supplicant の設定ファイルのサンプルになります。このサンプルでは、AP
の SSID を "your_ap" に、WPA-PSK のパスフレーズを "yourpasswd" であると仮定し
ています。
- WEP 64bit hexadecimal
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="your_ap"
key_mgmt=NONE
wep_key0=0123456789
}
- WEP 64bit hexadecimal + Hidden SSID
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="your_ap"
scan_ssid=1
key_mgmt=NONE
wep_key0=0123456789
}
- WPA version 1 TKIP
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="your_ap"
key_mgmt=WPA-PSK
proto=WPA
pairwise=TKIP
group=TKIP
psk="yourpasswd"
}
- WPA version 2 AES
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="your_ap"
key_mgmt=WPA-PSK
proto=WPA2
pairwise=CCMP
group=CCMP
psk="yourpasswd"
}
5 そのほか
以下は思いついた注意点などです。適当に必要そうな内容をピックアップして
関係する情報を載せていただければと思います。
WPA を使いたいときには、wireless_tool だけでは使うことができません。これ
は wireless_tools が WPA を使うために必要な設定の機能を持っていないからで
す。
man wpa_supplicant.conf で設定ファイルの説明が得られます。ソースツリー
に入っている wpa_supplicant.conf はもっと詳しくコメントが入っています。
NetworkManager を使うには恐らく、独自パッチを wpa_supplicant に当てるとい
う作業が必要になると思います。複雑になりすぎるので紹介してません(実験
もしてません)。
前のドライバと違って有線と無線 LAN は「同時に」使えます。ただし、MAC アド
レスが共用なので、例えば AP を有線と同じセグメントにつないでいたりすると
おかしなことが起きることがあります。必ず別セグメントにつなぐようにして
ください。
2 つのインターフェイスを同時に有効にする時には、default route の設定を適
切にしてやる必要があるでしょう。
zd1211 や rt2x00 などの USB 無線 LAN アダプタも上記で作った wpa_supplicant で使
えます。F9 の wpa_supplicant の起動スクリプトは無線 LAN のインターフェイス
が 1 つしかないとして作られているので、複数の無線 LAN アダプタを同時に使う
場合には独自にスクリプトを書くなどの工夫が必要でしょう。
無線 LAN がないモデルでも無線 LAN を有効にしたカーネルで問題ありません。カー
ネルコンパイル時に N を選ぶと少しだけメモリが節約できます。
AP がステルス SSID の場合には scan_ssid=1 が設定ファイルに必要です。上記例
で含めてあります。
AP によっては WPA/WPA2 と同時にサポートするモードがある物がありますが、こ
の場合に group=TKIP としてください。このモードで group=CCMP で接続できるよ
うにみえて、実際のデータは転送できないというものがあります。
F8 とかでは、wlan0_rename などというような変なインターフェイス名になって
しまうことがあります。これは MAC アドレスが共通の複数インターフェイスを
扱えないという udev のバグというか欠点で、この問題を回避する修正版が出て
います。F9 の最新版は修正版らしく問題ないようです。
http://bugzilla.novell.com/show_bug.cgi?id=365501
PS3 の無線 LAN は WPA,WPA2 において PSK モードしかサポートしていません。つま
り WPA-EAP などはサポートされません。これはハードウエアの制約です。
アドホックモードやホストモードはサポートされません。
-Masakazu Mokuno