2007/06/29(金)サーバ入れ替え その2

2007/06/29 12:20 PC(Linux)
[2]Wake-on-LAN(以下WOL)ができるようにする

あまり本質的でない話なのだが、ノートPCをサーバにしたときにちょっと悩むのが電源ボタンへのアクセスである。
省電力やホコリ対策で液晶は閉じて使うのが通常であるが、閉じた状態では現役のほとんどのノートPCでは電源ボタンにさわれない。当然ノートPCを開けばすむ話である。が、開かずに運用できるならば設置体積を節約できるという利点がある。メンテナンスなどでシャットダウンしなければいけない機会はあり、WOLができれば若干便利になる。以前挫折したWOLであるが、今回は比較的やりやすいノートPCということで再チャレンジしてみることにした。

結論から言うとできるようになった。どうやらWOLの仕組みに重大な勘違いがあったようだ。順に話を進めよう。

まず、以前の挫折時の話を整理しよう。

・マザーボード、NIC、PCIコネクタの位置等に相性がある

・スタンバイ(S3)からの復帰は成功確率が高いが、休止(S4)や停止状態(S5)からだと難しい

・WOLが成功する組み合わせで、停止->起動ができるときもあったが再現性がない
ということだった。

ここで注目すべきは再現性がないという点。「再現性がない」は、同じ状態と自分が思いこんでいたものが実は異なるものだったりすると話が変わる。これに気づいたのはnx6110で実験しているときに「Windows XPで終了させたとき」と「電源ボタン長押しで終了させたとき」の挙動が違うことを発見したからだった。つまりどうやら電源オフの状態というのは一意ではなく、「単に電源が切れている状態」というのとは違う、「OSがWOLに備えてNIC側になにかを設定した状態」というのがあるらしい。

わかってしまえば情報は見つかるようになるものである。たとえば、「Wake-on-lan 電源ボタン」とかでググるとヒントが色々見つかる。

http://www-06.ibm.com/jp/domino04/pc/support/Sylphd07.nsf/jtechinfo/SYJ0-03CEEF6

http://www.fmworld.net/biz/celsius/manual/03kamiki/8861330/h_bios12.html
つまり、電源ボタン長押しやケーブル引っこ抜きなどによって電源を切った場合ではWOLは働かない。電源ボタン長押しで停止->WOLを試していた以前の実験では元から成功するわけがなかったのだ。ちなみにこのことから、停電時に遠隔地から電源オンするというWOLの無茶な使い方はUDPブロードキャストという点をさっ引いても、さらに厳しそうだということもわかった。ことこの用途に関しては、そういった機能を備えた無停電電源や秋月のIP POWER(ただし当然ルーターはコンセント接続=電源オンじゃないとだめ)とかそっちを使うしかない。

さて、Windows XPは終了時に自動でこのWOL待機を設定しているようである。きちんとWindows上で終了手続きを踏めばS5からのWOLが成功するようになった。一方、Linuxのカーネル2.6では今のところそのようにはなっていない。終了時にソフトで待機設定をたたいてやる必要がある。探してみると、ethtoolというソフトでWOL関係の設定をいじれるようだ。

早速インストール。

# aptitude install ethtool
Fedora Core掲示板

http://bbs.fedora.jp/read.php?FID=8&TID=4112
を参考に、init.dにset_wolというスクリプトを作って、こう書いてやる。



#! /bin/sh
/usr/sbin/ethtool -s eth1 wol g



で、debian流のスクリプト組み込み。再起動時(run level 6)に設定する必要はないはずなので、終了状態(run level 0)だけでいいはず。

# chmod +x set_wol

# update-rc.d set_wol stop 89 0 .
haltさせて実験させてみたところ、問題なくWOLができるようになった。あー難しかった。

なお、Windows上からWOLさせるなら、

http://www.vector.co.jp/soft/win95/util/se241927.html

がいいようだ。
Linuxからでは、

http://packages.debian.org/stable/net/wakeonlan

とかでいい。

OK キャンセル 確認 その他