Thinkpad でLINUX
Thinkpad T60 にCentOSを入れてみたが、無線LANの設定につまづいたため、メモ書き。
トラックポイントの認識
PC-UNIX を thinkpad に インストールしたときに、トラックポイントがマウスとしては使用できるのにホイールが利かない、ということがあります。X-Window の設定で、マウスのボタン認識ができていないためだと思いますが、xorg.conf に 以下の設定を追加すると正常に動くようです。
$ vi /etc/X11/xorg.conf
Section "InputDevice" Identifier "Configured Mouse" Driver "mouse" Option "CorePointer" Option "Device" "/dev/input/mice" Option "Protocol" "ImPS/2" Option "ZAxisMapping" "4 5" Option "Emulate3Buttons" "true" Option "EmulateWheel" "true" Option "EmulateWheelButton" "2" Option "SHMConfig" "true" EndSection
編集後、Ctrl+Alt+BackSpace キーで X-Window を再起動すると設定が反映されます。
Wireless LAN 設定
Fedoraでは素直にドライバを組み込んで無線LANを認識してくれるのですが、CentOS や Debian ベースの「保守的」(?)なディストリでは、ドライバの読み込み等、設定を行わないと認識してもらえません。
デバイスの確認
デバイスが読み込まれているかどうか、lspci コマンドで確認します。
$ lspci | grep -i wireless 03:00.0 Network controller: "Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)
私の Thinkpad X60 では iwp3945 が組み込まれているようですが、認識はされていても「ネットワーク設定」画面には表示されないところを見ると、どうやらドライバが組み込まれていないようです。
ipw3945 ドライバのインストール
ここから ipw3945 のドライバ、ファームウェア、デーモンをダウンロードしてインストールします。
※ カーネルとバージョンと合わせる必要があります。「uname -r」で確認しておきます。
$ uname -r 2.6.18-53.1.19.el5 $
今回はCentOS 5.1 を使用していますので、http://dl.atrpms.net/el5-i386/atrpms/stable/ から以下のファイルをダウンロードしました。
- ipw3945-ucode-1.14.2-4.at.noarch.rpm
- ipw3945-kmdl-2.6.18-53.1.19.el5-1.2.0-18.4.el5.i686.rpm
- ieee80211-kmdl-2.6.18-53.1.19.el5-1.2.18-22.el5.i686.rpm
- ipw3945-firmware-1.14.2-1.nodist.rf.noarch.rpm
- ipw3945d-1.7.22-4.i386.rpm
また、無線の暗号化には WPA-PSK を使用しますので、最新の wpa_supplicant をインストールしておきます。
$ yum -y update wpa_supplicant ## 面倒なのでまとめてインストール $ rpm -Uvh ieee80211-kmdl-2.6.18-53.1.14.el5-1.2.18-22.el5.i686.rpm $ rpm -Uvh ipw3945*
インストールが完了したらマシンを再起動します。「システム」→「管理」からネットワーク設定の画面を開いて、NICの追加にwireless デバイスが表示されればOK 。
ifcfg-wlan0 の作成
上記「ネットワーク設定」の画面で設定してもかまいません(eth1 で作られます。) CUI の場合は /etc/sysconfig/network-scripts/ に ifcfg-wlan0 を作成します。
$ touch /etc/sysconfig/network-scripts/ifcfg-wlan0 $ vi /etc/sysconfig/network-scripts/ifcfg-wlan0
# ifcfg-wlan0 TYPE=Wireless DEVICE=wlan0 ...1 HWADDR=xx:xx:xx:xx:xx:xx BOOTPROTO=dhcp ...2 ONBOOT=no ...3 PEERDNS=yes ...4 ESSID='SSID' ...5 CHANNEL=1 ...6 MODE=Auto RATE=Auto
1 … デバイス名
2 … DHCPでIPアドレスを動的に取得
3 … wpa_supplicant から起動しますので、「no」にしておきます。
4 … DNS情報はサーバから取得します。
5 … 無線LANのAPに設定したSSIDを指定します。
6 … 無線LANのAPに設定したチャンネルを指定します。
/etc/sysconfig/wpa_supplicant の編集
/etc/sysconfig/wpa_supplicant を開いて以下のとおり編集します。
# wlan0 and wifi0 # INTERFACES="-iwlan0 -iwifi0" INTERFACES="-iwlan0" # ndiswrapper and prism # DRIVERS="-Dndiswrapper -Dprism" DRIVERS="-Dwext"
/etc/wpa_supplicant/wpa_supplicant.conf の編集
無線APへの接続設定については wpa_supplicant.conf を編集します。APへ接続するためのパスフレーズがそのまま設定ファイルに書かれているのは気持ち悪いので、wpa_phraseコマンドを使ってハッシュ値に置き換えます。
$ wpa_passphrase SSID 'pass code' network={ ssid="SSID" #psk="pass code" psk=e3311c76b4bdf58c99bbb5031c2a57f7c38acaa66eb6bc5073a1496fd8d4c96d }
得られたハッシュ値を/etc/wpa_supplicant/wpa_supplicant.conf へ入力します。
ctrl_interface=/var/run/wpa_supplicant #ctrl_interface_group=wheel ctrl_interface_group=root network={ ssid="SSID" ...1 scan_ssid=1 ...2 key_mgmt=WPA-PSK ...3 pairwise=CCMP TKIP group=CCMP TKIP psk=e3311c76b4bdf58c99bbb5031c2a57f7c38acaa66eb6bc5073a1496fd8d4c96d }
1…無線LANのAPに設定したSSID
2…AP側が 「SSIDを通知しない」(ステルスモード)になっているときは必要かも。
3…wpa-psk で通信を暗号化(APの設定と合わせる)
wpa_supplicant の起動
設定ファイルの編集が終わったら、wpa_supplicant をdebugフラグ付で起動してみます。
$ wpa_supplicant -d -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
※ 有線ネットワークが起動していると(というか、他に dhclient が起動していると)、接続はできてもIPアドレスが取得できない、というトラブルに見舞われることがあります。うちの環境では、無線接続確立後にdhclient をリブートしたところ、IPアドレスが取得できました。
ブート時に wpa_supplicant を起動する
いちいちコマンドを打って無線LANに接続するのも面倒なので、chkconfig コマンドでブート時に wpa_supplicant を起動するよう設定します。
$ chkconfig wpa_supplicant on
…ところが、これまた困ったことに、マシンを再起動してみると ipw3945のドライバモジュールより先に wpa_supplicant が起動してしまいます。 仕方がないので以下のとおり rc ファイルをリネームして対処しました。
$ rename S12 S90 /etc/rc.d/rc*.d/S12wpa_supplicant $ find /etc/rc.d/ -name *wpa* -print /etc/rc.d/rc1.d/K88wpa_supplicant /etc/rc.d/init.d/wpa_supplicant /etc/rc.d/rc2.d/S90wpa_supplicant /etc/rc.d/rc0.d/K88wpa_supplicant /etc/rc.d/rc6.d/K88wpa_supplicant /etc/rc.d/rc4.d/S90wpa_supplicant /etc/rc.d/rc3.d/S90wpa_supplicant /etc/rc.d/rc5.d/S90wpa_supplicant
dhclient については、/etc/rc.local に記述しました。
# /etc/rc.loal /usr/bin/dhclient wlan0 > /dev/null 2>&1
まぁ、動けばOKってことで(; ´▽`)