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 が有効化されるようになりました。