公開日: 2012年8月9日 01:34:39
最終更新: 2012年9月22日 13:26:08

Thinkpad で LINUX

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ってことで(; ´▽`)