LinuxでWake on LANが失敗する秘密


linuxではWake on LAN(WOL)がうまく働かない場合があります。 WOLするには電源OFF状態でもNICに通電されていなければなりません。 ところが、linuxでshutdown -h nowをやるとNICへの通電を止めてしまうので す。linux box は常時通電が多くWOLを使う人が少ないため、 この事実はあまり知られていません。 googleで検索すると、このことで悩んでネットで質問する人が結構いるのです が、たいてい的外れな回答をされてしまっています。そのうち、問題が解決さ れないまま、スレッドが閉じてしまうことがほとんどです。
linuxでの挙動不審の答はNICのドライバーにありました。shutdownするとき、すなわちドライバーモジュールを解放するときに、NICの電源を落とすモードがデフォルトなのです。これを変えるにはNICのドライバーモジュールを読み込むときにオプションでenable_wolを指定します。具体的には/etc/modules.confに
alias eth0 3c59x
options 3c59x enable_wol=1
と書きます。これはNICに3c59x(3c90x)を使っている場合ですが、他のNICの場合は/usr/src/linux/drivers/net/*.c,*.hを見て確認してください。linux上でのWOLに対応したNICは少ないようです。


<追記>shutdownのとき+xとディレイを指定するとWOLできません。 引数nowでshutdownする必要があります。

wikiへ戻る