2015年4月29日水曜日

jessie: wakeonlan

jessie - systemd and wakeonlan

wheezy では /etc/network/interfaces  に ethernet-wol g とか書いておけばよかったのだが、jessie ではどうもこれがうまく効いてない。

sysvinit から systemd-networkd へ変更したのもあって、wakeonlan の設定も systemd から呼び出すことにした。

 (他に udev の方で設定することも出来るらしいが udev 設定するのは見通しわるくなるしあまり気乗りしない)

具体的には /etc/systemd/system/wol@.service というファイルを用意する


@on-jessie:~$ sudo vi /etc/systemd/system/wol@.service

/etc/systemd/system/wol@.service

[Unit]
Description=Wake-on-LAN for %i
Requires=network.target
After=network.target

[Service]
ExecStart=/sbin/ethtool -s %i wol g
Type=oneshot

[Install]
WantedBy=multi-user.target



wheezy から jessie へ dist-upgrade した環境の場合、テストするには

@on-jessie:~$ sudo systemctl restart networking.service

して
@on-jessie:~$ sudo ethtool eth0
してみる。



/sbin/ethtool コマンドがないならインストールする。
@on-jessie:~$ sudo apt-get install ethtool
使ってるネットワークインターフェイスがどのタイプのWakeOnLanをサポートしているのかは、ethtool コマンドで調べられる。

wakeonlan のタイプには p(phy),u(unicast),m(multicast),b(broadcast),a(arp),g(MagickPacket™),s(SecureOn&tm; MagickPacket™),d がある。

@on-jessie:~$ man ethtool

@on-jessie:~$ sudo ethtool eth0
    [...]
    Supports Wake-on: umbg
    Wake-on: g

wakaonlan パッケージや etherwake を使うと g とか s で LAN 内の特定のマシンを起動できるので便利。

また /etc/ethers に MAC とマシン名の対応、コメントを書いておくとMACではなくマシン名で呼び出せるので便利。

 追記 2015-08-24


jessie を dist-upgrade ではなく、クリーンインストールした環境では上記では不十分で、以下が必要。

テストするには、(eth0 は該当インターフェイス名、wol@.service ファイルの %i に置き換えられる)

sudo systemctl start wol@eth0.service

うまく行ったなら、

sudo systemctl enable wol@eth0.service

cf. ethers(5), https://wiki.archlinux.org/index.php/Wake-on-LAN





0 件のコメント:

コメントを投稿