Ubuntu マシンを WoL でリモート起動する方法は、それほど難しくないのですが、ASRock のマザーボードを使っていて少しはまったのでメモ。
ASRock の UEFI セットアップユーティリティ画面は起動時のログマーク表示時に F2 を入力することで表示できます。Advanced – ACPI Configuration – PCIE Devices Power On といったメニューがあるので、これを Enabled にします。他に Boot – Boot From Onboard LAN という項目もあって、そちらを Enabled にしただけでは駄目でした(ここではまった)。今は両方共 Enabled にしていますが、ACPI Configuration の方だけで良さそうな気がしています(他の人がこちらだけ設定して有効になったというブログ記事を見たので)。
あとは、ethtool で設定。
sudo apt -y install ethtool
ネットワークカードの情報や MAC アドレスの情報は ip コマンドで確認
ip addr
ネットワークカードのデバイス名が enp0s31f6 だとしたら、次のようにして Wake-on の設定を確認。g となっていれば OK。
$ sudo ethtool enp0s31f6 | grep Wake-on Supports Wake-on: pumbg Wake-on: g
Wake-on が d になっていると Wake-on-LAN が有効になっていないので、次のようにして設定。再起動で設定が消えてしまう場合は、systemd のサービスを用意するなり rc.local で起動時にこのコマンドを実行するなどして対応。
sudo ethtool -s enp0s31f6 wol g
起動には wakeonlan か etherwake を使います。インストールは下記。どちらかがあればいいです。
sudo apt -y install wakeonlan sudo apt -y install etherwake
00:11:22:33:44:55 は実際に起動したいマシンのネットワークカードの MAC アドレスを指定。
/usr/bin/wakeonlan 00:11:22:33:44:55
etherwake を使うときはネットワークカードの指定が必要なので次のようなスクリプト wakeup-ubuntu.sh を用意しています。
#!/bin/sh nic=`ip link | awk '{print $2}'|grep ^en|sed 's/://'` sudo /usr/sbin/etherwake -i ${nic} 00:11:22:33:44:55
実行は次のようにします。
sudo sh wakeup-ubuntu.sh