WOL for Linux ver.1.0 ~~~~~~~~~~~~~~~~~~~~~ 1999/07/31 文責:江後田基広 協力:川合 恒夫 更新:1999/09/25  WOLとは Wake On Lan の略称です。Windows95/98/Nt4.0向けには様々な 情報をInternetから得る事が可能ですが Linux ではまだあまり例を見ません  WOLでは MagicPacket と呼ばれる特殊なパケットをネットワークに対して ブロードキャストします。MagicPacketには特定NICのMACアドレスがくるまれ ており、MACアドレスが合致する対象NICが MagicPacket を掴むと自分自身に 向けられた MagicPacket であると判断してマシンの電源を投入し起動します。  WOL for Linux では現在のところ http://www.linet.gr.jp/~egota/DualSkelton.html でしか稼働実績 がありません。他の環境での WOL の報告/コントリビュートを期待します。 ※ 1999/4から京都産業大学で大規模なLinuxシステムが導入されたという  風の噂を聞いています。ここでもリモートからLinuxクライアントを制御  しているそうで WOL も利用されているそうです。   もしかしたら NT とのデュアルboot だから NT で制御して Linux  は脇役なのだろうか?   結局のところ http://www.ibm.co.jp/pc/desktop/lccm/lccmv2.html  辺りを使用しているようで Linux による WOL ではないようです。 ※ Linux向けの WOL情報 があればお知らせ頂けると幸いです。 1.内容 README : このファイル wakeup : MagicPacket送出PG woltest : テスト用受信PG mpSAMPLE.sh : Wrapperサンプル 3c59x.diff : kernel-2.2.x/driver/net/3c59x.c 差分 2.説明 wakeup : 眠っているPCに向け MagicPacket を送出する。 $ wakeup MAC_addr Broadcast Port_No. [Enter] MAC_addr : クライアントPCに挿入されているNIC(LANカード) のMACアドレスを12桁で入力。(0008A1B2C3D4) Broadcast : MagicPacketを送出するネットワークの ブロードキャストアドレス。(192.168.1.255) Port_No. : WOLのポート番号。("7" 固定値) woltest : MagicPacket受信プログラム、WOLクライアントが無い時の検証用。 $ woltest Port_No. [Enter] Port_No. : WOLのポート番号。("7" 固定値) mpSAMPLE.sh : Wrapperのサンプル・シェル・スクリプト cat 等でシェルスクリプトの中身を確認の上、ご利用下さい。 3c59x.diff : kernel-2.2.x/driver/net/3c59x.c 差分 3Com 3c905B (WOLケーブルが付属しています) を Linux で WOL対応 するには、ドライバのバージョンを v0.99L 5/28/99 以降にする必要が あります。本ファイルは kernel-2.2.12 (或は 2.2.9-5 など) との 差分ファイルになっています。 旨く行かない方は http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html から手繰って ftp://cesdis.gsfc.nasa.gov/pub/linux/drivers/3c59x.c から ver0.99L 5/28/99 以降のドライバ全体を get して下さい。 3.使用方法  最近のATX電源でない、以前迄の主流であったAT電源のPCでは WOL は 利用できません。以下の記述は ATX電源 を備えた比較的新しいPCでの 話しです。 Linuxマシンをシャットダウンして、手動で電源スイッチをOFFにした場合 全ての電源が切れてしまいます...当り前と言わずに訊いて下さい...(^.^;  Windows98/95 でシャットダウンし自動で電源断となったPCの場合は、実は NICは完全に死んでいません。これは停止したマシンの接続先HUBのポートや NICカードのランプで確認できると思います。  同様に NT4.0 でシャットダウンすると、電源断までは行われませんが 「電源を切っても安全です」 が表示された状態で、手動で電源スイッチをOFFにしても Windows98/95 と 同様に NIC は生き残って待機モードで眠っています。  つまりWOL for Linux のクライアントで、shutdown -h で電源断した場合 にも NIC は生き残って待機モード で、寝ていて貰わなければなりません。  しかし、kernel-2.2.10迄の LinuxのNIC(LANカード)のドライバには WOL は考慮されていないため、たとえLinuxマシンが ATX電源に対応して いて WOL対応 のNICとマザーボード上の WOLポート をケーブルで結んで いようと shutdown -h で自動で電源断 となろうとも WOL で起こす事は 出来ません。  http://www.linet.gr.jp/~egota/DualSkelton.html には 3Com製 3c905B という 10/100BASE-TX 対応の NIC が挿入されています。簡単にこのPCの 概要を記述すると E-IDE9.1GB のHDDには、Windows98/NT4.0, Solaris 2.6 for x86, Vine-1.1, TurboLinux-4.0 がインストールされ、AHA-2930U2 に 接続された HDD4.3GB には Plamo-2.0pre2 がインストールされています。  3c905Bの場合、幸いにも Donald Becker@NASAさん が ver0.99L 5/28/99 を ftp://cesdis.gsfc.nasa.gov/pub/linux/drivers/3c59x.c 公開して くれており、これと kernel-2.2.10(或は 2.2.9-5 等) の 3c59x.c ドライバ を差し替えてカーネルを再構築すれば shutdown -h で電源断した後にも 3c905B は待機モードで寝てくれる為、Winodws98/95/NT4.0 と全く同様に WOL で寝ているPCをリモートで起こす事が可能となります。  WOLで寝ているPCを起こす方法は、Windows98/95/NT4.0 と共通に利用可能 ですので、Internet上から様々な情報を得る事ができます。 寝ているPCを WakeUP させるツールも AMD を初めとして個人でもツールを 提供しているサイトもある為、直ちに実用となるかと思います。 ※ http://localhost/~egota/DualSkelton.html#WOL など参照願います。  Windowsが無い方 Linuxのみの環境で WOL を実現したい方は、添付の サンプルで検証する事が可能です。 $ ./wakeup mac_addr ip port 「Enter] MACアドレスを指定してください。 その後ろのipにはブロードキャストアドレス portには "7" を設定してください。 ※ 添付プログラムでは MagicPacketそのものも検証の為Dumpで表示します。  本サンプル(wakeup)を個人や閉じた環境で検証する事で WOL の便利さが  実感頂けると思います。逆に大規模な環境、学校や公共機関、企業など  での実稼働には向いておりません。セキュリティ上も問題となります為  個人環境以外での利用は原則禁止とさせて頂きます。   個人以外で利用したい場合には別途ご相談下さいますようお願いします。  なお,テストする場合はwoltestを実行しておき、wakeupの方では 相手先ipを設定すれば、MagicPacketの受信チェックができます。 $ ./woltest 7 [Enter] 4.WOL for Linux FAQ  [Q1] WOL とは何ですか?  [A1] Wake On Lan の略称です。  [Q2] WOL を利用するとどのような事が出来ますか?  [A2] 例えば次のような利用方法があります。 ・決められた時刻に自動的にPCの電源を投入する ・リモートから離れた場所にある複数PCへの電源投入 ・外部(公衆回線,携帯電話など)からのPCへの電源投入 [Q3] WOLに必要な機器はどのようなものですか?  [A3] PCの電源をリモートでOn/Offしたいのですから クライアントPCの電源は ATX対応である必要があります。又、WOLに対応する LANカード が必要です。 そして、マザーボード側には LANカードとWOLケーブルを接続する為の ソケットが無ければなりません。但しOnBoard NICでソケットの無いメーカ製 PCでも WOL対応 のものが存在しますので、これらでも実現可能かも知れません。 MagicPacketを送出する側(サーバ)はネットワークに接続出来れば特に制限 はありません。  [Q4] 具体的な機器名を知りたいのですが?  [A4] 今のところ個人で購入したものしか提示出来ません。参考程度ですが http://www.linet.gr.jp/~egota/DualSkelton.html ではAPMを有効にする(SMPを切る)事で実現出来ています。 ・マザーボード : EPoX KP6-BS ・NIC(LANカード) : 3Com 3c905B-J-TX (WOLケーブル付属) Linuxのドライバは 3c59x v0.99L 5/28/99 から WOL対応コード が組み込まれています。  [Q5] Windows98/95/NT4.0 等で既に WOL が存在するのは知っています。 が、何故Linuxでも WOL が必要なのですか?  [A5] Linux環境のみでWOL環境を実現したかったからです。 WOL の為だけにマシンを再起動して Windows に切替えたく無いからです。 WOL の為だけに Microsoft の力を必要とするのがシャクだったからです。 ------------------------------------+---------------------------------------- 私は皆さんに誇りを持って申し上げます|ポータブルLinuxの世界┏━ が、このレッスンは決して一言たりとも|EGOTA Motohiro ┣━┏┓┏┓╋┏┓ 私の創造の産物などではありません。 |egota@linet.gr.jp ┗━┗┫┗┛┗┗┻ - Patrick Douglas Crispen - |www.linet.gr.jp/~egota/ ┗┛ ------------------------------------+---------------------------------------- ♪♪♪ 川合 恒夫 伊藤忠テクノサイエンス株式会社 東日本テクニカルソリューション部 テクニカルソリューション第10グループ     email : kawai@ctc-g.co.jp God's in his heaven - All's right with the world. ---------------------------------------------------------------------