Ubuntu 19.04 Server をLAN経由で起動できるようにする (Wake-on-LAN)

引数として先程のMACアドレスを使って## 経緯
節電のためにファイルサーバを平日の昼間サスペンドさせることにしたのだが、そうすると祝日の平日に手動でサスペンドを解除する必要がある。
コレ自体は仕方ないとして、せめて電源ボタンではなくメインマシンからLAN経由で遠隔で電源を入れられるようにしたい。
調べたところWake-on-LANというそれらしい機能があったので利用する

手順(サーバー側)

UEFIの設定

再起動してUEFI画面に入り、LAN経由での起動を設定する。

マザーボードにもよるとおもうが、自分の場合
Power On By PCI-E/PCI というのをEnabledにした。

余談だが、Power On By RTC(うろ覚え) という項目もあった 。おそらくrtcwakeでサスペンドではなくシャットダウンと起動をする場合にこれを有効にする必要があるのではないかとおもう。

ethtoolのインストール

sudo apt install ethtool

Wake-on-LANで使うLANの確認

$ ls /sys/class/net/
enp3s0  lo  wlp4s0

今回の場合enp3s0が有線LANと思われるので、これを使う。ちなみにwlp4s0が無線LANと思われる

Wake-on-LANの設定

以下のコマンドで有効にする。

$ sudo ethtool -s enp3s0 wol g

設定を確認する。

$ sudo ethtool  enp3s0
Settings for enp3s0:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Supported pause frame use: Symmetric
    Supports auto-negotiation: Yes
    Supported FEC modes: Not reported
    Advertised link modes:  10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Advertised pause frame use: Symmetric
    Advertised auto-negotiation: Yes
    Advertised FEC modes: Not reported
    Speed: 1000Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 1
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: off (auto)
    Supports Wake-on: pumbg
    Wake-on: g
    Current message level: 0x00000007 (7)
                   drv probe link
    Link detected: yes

MACアドレスの確認

Wake-on-LANにはMACアドレスというLANに接続する機器固有のIDを知る必要があるので、確認する

$ ip addr
<中略>
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 04:92:26:00:00:00 brd ff:ff:ff:ff:ff:ff
<中略>

この場合04:92:26:00:00:00がMACアドレスになる
(参照元がMACアドレスをぼかしていたため、ここも一応実際のMACアドレスとは変えてある。)

サーバ側の作業はここまでなので、ここでシャットダウンしておく。

手順(クライアント側)

ここからはWake-on-LANを実行するメインPC側の設定。

Wake-on-LANのインストール

公式のリポジトリにあるので普通に apt install でインストールできる

$ sudo apt install wakeonlan

Wake-on-LANを実行する

先程調べたMACアドレスを引数にしてwakeonlanを実行する。

$ wakeonlan 04:92:26:00:00:00
Sending magic packet to 255.255.255.255:9 with 04:92:26:da:61:3c

無事起動が確認できた。

参照元

UbuntuでWakeOnLanを使って離れた場所にあるPCを起動する方法【裏技あり】
Linux から認識されている、すべてのネットワークインターフェイス名だけを取得する
Ubuntuのinterfacesについて。