Ubuntu マシンを WoL でリモート起動

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
同じタグの記事: Linux
同じタグの記事: Ubuntu
同じタグの記事: WOL
同じカテゴリの記事: Linux