etherwake の SIOCGIFHWADDR on eth0 failed: No such device エラー対処
Wake On LAN (WoL) 機能で毎朝自動で起動するマシンを作ろうと思って、常時稼働している別の Linux 端末から起動しようとしたときにエラーが出たので対処したメモです。
WoL を実行する etherwake コマンド
WoL を使うためには etherwake コマンドを利用すればよいです。例えば起動したい端末の MAC アドレスを使って以下のように実行すればよい……はずでした。
$ sudo etherwake xx:xx:xx:xx:xx:xx
SIOCGIFHWADDR on eth0 failed: No such device
ところが実行すると示したようなエラーが出てしまい WoL で起動できませんでした。
SIOCGIFHWADDR on eth0 failed のエラー対応
結局難しいことはなく、単に自分の端末のネットワークデバイスの指定が不適当なだけでした。何も指定しないと伝統的にネットワークデバイス名として使われている eth0 を利用しようとするのですが、今どきは eth0 以外の名前が割り振られていることも多く、その結果 No such device と言われているようです。
まず ip コマンドを使ってネットワークデバイス名を調べます。
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether aa:aa:aa:aa:aa:aa brd ff:ff:ff:ff:ff:ff
3: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether aa:aa:aa:aa:aa:aa brd ff:ff:ff:ff:ff:ff
inet 192.168.00.00/24 brd 192.168.00.255 scope global dynamic enp2s0
valid_lft 132903sec preferred_lft 132903sec
inet6 aaaa::aaaa:aaaa:aaaa:aaaa/64 scope link
valid_lft forever preferred_lft forever
この結果を見ると 3 番目のものに IP アドレスが振られているようなので、つながっているネットワークデバイスの名前は “enp2s0" だとわかります。
これをデバイス名として -i オプションを使って指定して etherwake コマンドを実行します。
$ sudo etherwake xx:xx:xx:xx:xx:xx -i enp2s0
これで WoL が実行できるようになりました。
毎朝実行する
これは crontab を使って設定します。etherwake コマンドは root 権限で実行する必要があるため、root ユーザになってから cron の設定を行います。下記は毎朝 7:59 に実行してみる例です。
59 7 * * * /usr/sbin/etherwake xx:xx:xx:xx:xx:xx -i enp2s0
これで起動できるようになりました。
ちなみに今回起動しようとしているマシンは、起動して X Window が立ち上がると、自動的にブラウザを起動して Abema TV を開くようになっています。これで毎朝アラーム代わりに PC から映像が見られるようになります。
ディスカッション
コメント一覧
まだ、コメントがありません