Ubuntu 20.04 で Wake-On-LAN を有効化する。

Linux

Ubuntu 20.04 LTS で Wake-On-LAN を有効化しようとしたのですけれど、BIOS だけでは上手くいかなかったので、OS でも有効化の設定をしてみました。


Ubuntu Linux 20.04 LTS をインストールした PC を Wake-On-LAN を使って他の PC から電源を入れられるようにしようとしたのですけれど、今までのように BIOS で Wake-On-LAN を有効化するだけでは起動してくれませんでした。

調べてみると Ubuntu 側でも Wake-On-LAN を設定する方法があるらしく、OS は関係ないような気がしながらも設定を行ってみたところ、他の PC から起動できるようになりました。必要性はわからないのですけれど、とりあえず上手くいったので、設定したことをメモしておきます。

Wake-On-LAN の有効状態を確認する

Ubuntu 20.04 LTS では、次のようにして、指定したイーサーネットアダプター enp0s25 に対して Wake-On-LAN が有効になっているかを調べることができる様子です。

sudo ethtool enp0s25

こうしたときに表示される Wake-on: の項目で g と表示されていれば、Wake-On-LAN が有効化されている様子です。自分の環境では、ここが d になっていました。

ethtool がインストールされていない場合は sudo apt install ethtool コマンドを実行してインストールできます。

Wake-On-LAN を有効化する

BIOS で Wake-On-LAN を有効化したら、合わせて Ubuntu 20.04 LTS でも、次のようにして Wake-On-LAN を有効化しておく必要がある様子です。ここでは enp0s25 という名前のイーサーネットアダプターに対して Wake-On-LAN を有効化しています。

sudo ethtool -s enp0s25 wol g

これで、先ほどのように有効状態を確認すると Wake-on: g になっていて、Wake-On-LAN が有効になっていることが確認できるのですけれど、このまま Ubuntu を再起動すると、再び無効に戻ってしまう様子でした。

Wake-On-LAN の設定を永続化する

再起動しても設定が有効になるようにするには、何らかの方法を使って設定が持続される必要があります。

調べてみると、ひとつの方法として /etc/sysconfig/network-scripts/ 内の目的のインターフェイスに ETHTOOL_OPTS="wol g" を記載したり、/etc/rc.local ファイルに設定コマンドを記載する方法があるようだったのですけれど、これらのファイルは Ubuntu 20.04 LTS には用意されてなさそうだったので、少し無理やりな感じもしますけれど、次の方法をとってみることにしました。

起動時に Wake-On-LAN を有効化する

Wake-On-LAN 有効化スクリプトを作成

まず、次のようにして /etc/wol ディレクトリーを作成します。

sudo mkdir /etc/wol

そうしたら、そのディレクトリー内に wakeonlan.sh を作成して、次のような Wake-On-LAN 有効化コマンドを記載します。

#!/bin/sh
/sbin/ethtool -s enp6s0 wol g

そして、次のようにして、作成したスクリプトファイルに実行権限を付与します。

sudo chmod u+x /etc/wol/wakeonlan.sh

サービスの定義ファイルを作成

そして、次の内容で /etc/systemd/system/wakeonlan.service を作成します。

[Unit]
Description=Enable Wake-On-LAN
 
[Service]
Type=simple
ExecStart=/etc/wol/wakeonlan.sh
Restart=always
 
[Install]
WantedBy=multi-user.target

サービスを起動する

そうしたら、あとは次のようにしてサービスの登録と起動を行います。

sudo systemctl enable wakeonlan.service
sudo systemctl start wakeonlan.service

これで Ubuntu を再起動しても、常に Wake-On-LAN が有効化されるようになりました。