たねやつの木

Photographs, Keyboards and Programming

Raspberry Piで自宅内のWindows機を起動させる (Wake-on-LAN)

079A9452.jpg

Wake-on-LANとは

電源がオフライン状態或いはスリープ・休止状態のPCに対して特定のパケットを 送信することによって受け取ったPCの電源をオンラインにするという機能。

電源がオフラインの状態でもマザーボード(NICかな?)には通電しており、 実は入力待ち状態になっているそうなのでこのようなことができるそうです。

パケットを送信すると書きましたが、対象のPCのMACアドレスを含んだ パケットをブロードキャストしているので厳密には対象のPCだけに 情報を送信しているわけではないです。

家庭でのLAN環境で例えるならば、(無線LAN)ルーターから有線接続されている 全PCに対して対象のPCのMACアドレスを含んだパケットを送信、対象のPCはもちろん自分の MACアドレスを知っているのでそれを契機に起動。それ以外のPCは不明なMACアドレス を含んだパケットが送られてきたので無視、といった感じでしょうか?(´ω`)

多分無線LANで接続しているPCは無理なのかもしれません。。。




Raspberry Piであれば同一LAN内で常時起動していて(消費電力がほぼゼロ)、SSH接続できるので、 マジックパケットを送りつけるのに最適では無いのでしょうか?

今回は遠隔で起動後にteamviewerでリモートデスクトップ操作を行うために行いました。teamviewerのソフトでも マジックパケットを送信して起動させることができるようですが、うまくいかなかったためこのような方法をとりました。

Windows機の設定

Wake On LANを有効にする(OS)

デバイスマネージャ > ネットワークアダプタを拡げてデバイスを右クリック。 私の場合(MB: Asrock H97 Pro4)はIntel(R) ethernet Connection (2) ...という感じの名前でした。

電源管理のタブを開いてWake on LANという部分の、
- Wake on Magic Packet - 電源オフ状態からの Wake on Magic Packet

の2つにチェックを入れる。これでOS上での設定は完了です

次の項目でMACアドレスも確認しておきます。

MACアドレスを調べる

Windows上で

ネットワークと共有センター > アクティブなネットワークの表示 > 接続の横にあるリンク(?)をクリックします。 有線接続の場合はローカル エリア接続と表示されているはずです。

開いたポップアップで詳細をクリック。物理アドレスがMACアドレスとなります。 (正直、この方法結構操作多くてめんどくさいです。。。(笑))

ルーターで

BUFFALOのルーターであればルーターの設定画面から簡単に確認できます。

デフォルトであればhttp://192.168.11.1にブラウザでアクセスすれば表示されます。

ログインしてデバイスコントロールをクリック。対象のPCをクリックするとMACアドレスが表示されます。

Wake On LANを有効にする(BIOS)

BIOS側でWake-on-LANが無効化されている場合があります。BIOSは起動方法や 設定画面が色々種類があるので一概にコレ!とは説明できませんが、

BIOS設定画面の起動方法は電源投入後、F2かDeleteキー連打で大体のPCは行けるそうです。
(参考:https://pctrouble.net/boot/bios_setup.html)

BIOS設定画面に入ると、Raspberry Piでraspi-configを実行したときのような画面が表示されると思います。 操作方法も大体同じです!

起動後、ネットワーク(Network)あるいは電源(Power (Management))あたりの設定の中に、 Enable wake-on-LAN的な項目があるのでそれを有効化して、保存して終了すれば完了です。

Raspberry Piの設定

etherwakeをインストール

マジックパケットを送信するためにインストールします。 他にもwakeonlanでもいいのかもしれないです。 etherwakeを選んだ理由は「debian wake on lan」で検索して一番上にいたから程度です(笑)

$ apt-cache search wake on lan
between - game about consciousness and isolation
crossroads - open source load balance and fail over utility for TCP based services
emacs-goodies-el - Miscellaneous add-ons for Emacs
etherwake - tool to send magic Wake-on-LAN packets
fusioninventory-for-glpi - FusionInventory Server embedded as a plugin into GLPI
gwakeonlan - wakes up your machines using Wake on LAN
shutdown-at-night - System to shut down clients at night, and wake them in the morning
wakeonlan - Sends 'magic packets' to wake-on-LAN enabled ethernet adapters
$ sudo apt-get update
$ sudo apt-get install etherwake
...
$ which etherwake
/usr/sbin/etherwake
$ etherwake -u でマニュアル表示

マジックパケットを送る

ではRaspberry PiからWindowsを起動してみましょう。

$ sudo etherwake [MACアドレス]

(例)
$ sudo etherwake 00:00:5E:00:53:00

で起動できます。コマンドを実行後環境によるかもしれないですが数ミリ秒後に起動されます(笑) こう、なんか数秒モタモタするのかなと思ったら一瞬すぎて驚きました(゚∀゚)

最後に

コレで消費電力がほぼ0円のRaspberry Piから巨大なフルタワーマシンを起動させることができるようになりました!

出先からwake-on-lanで起動させて、Teamviewerなんかでリモート操作ということができるので、 実家に帰ったときなんかでも自分の家にあるハイパワーなマシンを動かせますね!

もしくはWindows起動時に実行するタスクなどを指定しておけば、任意のタイミングで(寝る前とか)実行させることが出来ますね。




起動ができるのであれば再起動やシャットダウンもできるようにしたいのだがなかなか難しい... teamviewerなんかで直接GUIで電源の操作はできるのだが...(笑)

Raspberry Piと書いていますがもちろんLinux機であれば同じことが出来ます。