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
© Copyright 2024 Paperzz