vine-users ML アーカイブ



[vine-users:078415] wpa_supplicant のエラーにsleep を挿入して解決

  • From: Seiichirou Babasaki <mindgear@xxxxxxxxxxxx>
  • Subject: [vine-users:078415] wpa_supplicant のエラーにsleep を挿入して解決
  • Date: Sat, 24 May 2008 09:41:45 +0900
馬場崎です。
このところ忙しかったので生産性を上げようとThinkPad-X60-Tabletを有線/無線の
どちらでも使えるようにしようとしておりましたら、起動時だけエラーが出て
無線ネットワークが使えないという状態になりました。

けれども設定時、つまりログイン後に手動で一つずつ行うと問題無く無線ネットワークが
使用可能でした。だから環境依存なケースだろうと判断し、そして件名にありますように
sleepを入れて10秒ほど間をおくとうまくいきましたので投稿します。

------詳細------

※有線ネットワーク
/etc/modprobe.conf に e1000 で認識されています。
alias eth0 e1000
dhcp、起動時 off で、活線は ifplugdに任せています。(または手動)
/etc/sysconfig/network-scripts/ifcfg-eth0
NETMASK=""
MTU=""
BOOTPROTO=dhcp
BROADCAST=""
IPADDR=""
NETWORK=""
ONBOOT=no
DEVICE=eth0

※無線ネットワーク
/etc/modprobe.conf に ipw3945 で認識されています。
alias eth1 ipw3945
追加のパッケージ ipw3945d と wpa_supplicant を入れています。
/etc/rc.d/rc5.d はこの順序です。
 S09ipw3945d@         --->  /etc/rc.d/init.d/ipw3945d
 S09wpa_supplicant@   --->  /etc/rc.d/init.d/wpa_supplicant

起動時の ipw3945d の直後に wpa_supplicant が動き出すのですが、その時
「No such file or directory」と出て wpa_supplicant が起動に失敗する、
その結果、eth1 の活性にも失敗する、というのが今回のケースです。
どうやら、 ipw3945d が起動して情報を伝えられるようになるのに少し時間が
必要で、そのために wpa_supplicant からデバイスが見えていないらしいと
いうことが想像されました。
それで、すごく適当なんですが、手間のかからない解決法として、
/etc/rc.d/init.d/wpa_supplicant のstartの部分に sleepを挿入して
解決しました。(10秒も必要ないかもしれません)
--抜粋--
start() {
	echo -n "Sleep 10: "  <--挿入
	sleep 10s             <--挿入 (10秒の間隔)
	echo -n $"Starting $prog: "
	daemon $prog -c $conf $INTERFACES $DRIVERS -B
	retval=$?
	echo
	[ $retval -eq 0 ] && touch $lockfile
	return $retval
}
……もっとCoolな方法を御存じでしたらぜひ教えてください。

他の設定を以下のようになっています。
/etc/sysconfig/network-scripts/ifcfg-eth1
# Intel Corporation PRO/Wireless 3945ABG Network Connection
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=dhcp
HWADDR=00:00:00:AA:AA:AA  <--自身のMACアドレス
ESSID="hogehoge-networks" <--参加するネットワークへのID
……接続は wpa_supplicant の方に任せているので ESSID くらいです。
(場合によってはESSIDも不要ですね)

/etc/sysconfig/wpa_supplicant
INTERFACES="-ieth1"  <-- eth1 で kudzu が認識しますので eth1 にしています
DRIVERS="-Dwext"     <-- マニュアルやネット文献から

/etc/wpa_supplicant/wpa_supplicant.conf
#相手ネットワークが1種類の設定
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel

network={
	ssid="hogehoge-networks"
	scan_ssid=1
	key_mgmt=WPA-PSK
	proto=WPA
	pairwise=TKIP CCMP 
	group=TKIP CCMP WEP104 WEP40
	#psk="暗号化する前のパスキー"
	psk=暗号化した後のパスキー(長い)
	#client_cert ...Client A(PEM/DER) path.
	#private_key CA SecretKey fole (PEM/DER/PFX) path.
}
……WPA-PSKが利用できるという事を知ったので、無線の機械側の設定と同調させて
WPA-PSK(1)を使っています。

※その他
*確認に使えるコマンド
  wpa_gui と iwconfig と ifconfig
*暗号化
  wpa_passphrase (使い方は man wpa_passphrase か検索で)
*起動や停止
/etc/init.d 以下の  wpa_supplicant と network
(ipw3945d は Intel Corporation PRO/Wireless 3945ABG のケースで必要)
*設定ファイル
 /etc/modprobe.conf
 /etc/sysconfig/network-scripts/ifcfg-***
 /etc/sysconfig/wpa_supplicant
 /etc/wpa_supplicant/wpa_supplicant.conf
*その他
 あくまで経験則ですが、こういう「この通りに設定したい!」というケースだと
Gnomeの設定ツールや KDE の WifiManegerなんかは慎重に使った方が良いようです。
何もトラブルが無ければ幸せになれますが、うまくいかない時は原因が見えにくいです。
「急がば回れ」で一度そうした設定の全てを無しにして、無菌状態からやっていくと
疑わしい箇所が浮かんできます。
まさか初期化スクリプトを遅延させるだけでうまくいくとは思いませんでしたが、
何かの参考になれば幸いです。

-- 
__/__/__/__/__/__/__/__/__/__/__/__/
 ZON or MaruArt. 
>> Babasaki Seiichirou (Jap)
E-Mail  mindgear@xxxxxxxxxxxx
Nokia N800 zon@xxxxxxxxxxxx
__/__/__/__/__/__/__/__/__/__/__/__/