mieki256's diary



2016/01/22(金) [n年前の日記]

#1 [ubuntu] Ubuntu15.10のWOL設定でハマった

Ubuntu15.10をインストールしたATX機に対して、せっかくだからWOLを ―― Wake On LAN を有効にしてみようかと。

_Wake On LAN は、LAN経由でマジックパケットを送るとPCの電源を入れてくれる機能。離れた場所にPCを置いてある場合、PCのところまで足を運んで電源ボタンを押さなくて済むから便利。

M/Bは、 _GIGABYTE GA-EP45-UD3R 。Intel P45 + Intel ICH10R を使用。

結論だけ先に書いておくと、sudo ethtool eth0 (sudo ethtool enp4s0) の出力結果の Wake-on: d をどうにか Wake-on: g にしなくてもWOLが有効になってる場合もあるっぽい。何が何でも g にしてやらねば的に苦労しなくてもどうにかなるようで。このM/B特有の状態なのか、Ubuntu 15.10 ではそういうこともあるのか、よくわからんけど。

作業手順。 :

M/BのBIOSで、WOLを使えるようにしておく。GIGABYTE GA-EP45-UD3R の場合は、以下が参考になった。たぶん PME Event Wake Up が Enable ならOKなのかなと…。どうなんだろう。

_価格.com - 『WakeUp LAN(Powe On by LAN)できますか?』 GIGABYTE GA-EP45-UD3R Rev.1.0 のクチコミ掲示板

Ubuntu を起動。NIC ( = Network Interface Controller、ネットワークカードと思っておけばいい)の一覧を表示して何が積んであるか確認。
ifconfig
一般的には、ここで eth0 と lo の2つが表示されるものと思っていたのだけど。自分の環境では、何故か eth0 ではなく enp4s0 と表示されて。何だコレ。

ググってみたところ、最近の Linux は起動してる最中に、udev なるものが eth0 の名前を変えてしまうみたいで。

_ほげめも: Debian vs Ubuntu: ネットワークインタフェースの名前

もし、勝手に名前を変えられると色々面倒、ということなら、Linux起動時の指定で名前変更しないようにもできるらしい。sudo vi /etc/default/grub で GRUB_CMDLINE_LINUX_DEFAULT= に
biosdevname=0 net.ifnames=0
を追加してから保存して、sudo update-grub2 で grub の設定を反映。再起動。自分の場合、最終的にはそのようにしてしまった。

ethtool なるものがあれば、NIC の WOL状態の確認、WOLの設定ができるらしい。
sudo apt-get install ethtool

NICの設定状態を見る。
sudo ethtool eth0
(自分の環境では sudo ethtool enp4s0)
出力結果の中で、 WOLに関係がありそうな行は以下の2行。
        Supports Wake-on: pumbg
        Wake-on: d
Supports Wake-on に、その NIC で利用可能なWOL関係の機能が列挙されているらしい。
上記の値はどのアクティビティが動作するかを定義しています:
d (無効),
p (PHY アクティビティ),
u (ユニキャストアクティビティ),
m (マルチキャストアクティビティ),
b (ブロードキャストアクティビティ),
a (ARP アクティビティ),
g (マジックパケットアクティビティ)。WOL を使うには g が必要です。

Wake-on-LAN - ArchWiki より


そして、Wake-on が d ということは、WOLが無効になってるということで。

ethtool で WOL を有効にする。
sudo ethtool -s eth0 wol g
(sudo ethtool -s enp4s0 wol g)
これをしてから sudo ethtool eth0 で確認すると、Wake-on: g になってくれた。

で、OSを再起動するたびに、この設定は元に戻っちゃうから、OS起動時にこの設定をやり直す何かが必要だよ、ということになっていて。どんな方法があるかは以下を参考に…。

_debian で wake-on-lan (WOL) を有効にする方法 - ぴょぴょぴょ? - Linuxとかプログラミングの覚え書き -
_wakeonlan - WOL stops working after booting Ubuntu - Ask Ubuntu
_Wake On LAN via Ubuntu Linux | Blog
_Ubuntu 15.04のサーバをWake on LANできるようにした - YAMAGUCHI::weblog
_Wake-on-LAN - ArchWiki

列挙すると…。
  • /etc/network/if-up.d/wake-on-lan を書く方法。
  • /etc/init.d/wakeonlanconfig を書く方法。network-manager をアンインストールして、自分で全て設定してやる必要有。
  • /etc/udev/rules.d/50-wol.rules を書く方法。udevの名前変更を捉えてWOL設定をする。
  • /etc/network/interfaces で指定する方法。

しかし、色々試してみたけれど、OS再起動すると Wake-on: d に戻ってしまう…。

結局、Wake-on: g になってくれたのは、 _wakeonlan - WOL stops working after booting Ubuntu - Ask Ubuntu で紹介されてる方法、かつ、スクリプトの中身をそのまま使った場合だけで。 *1

ところが、この状態だと、シャットダウン(sudo shutdown -h now)した後、マジックパケットを送ってもPCが起動してくれない…。

また、/var/log/messages を出力するように設定、かつ、各スクリプトに logger でメッセージを残すように修正して確認したところ、if-up.d を使ったソレは処理が2回呼ばれてるようで、そこもなんだか気になる…。

結局、WOLが使えるようになったのは、/etc/init.d/ に wakeonlanconfig というスクリプトを書く方法。 *2
sudo vi /etc/init.d/wakeonlanconfig
sudo chmod a+x /etc/init.d/wakeonlanconfig
sudo update-rc.d -f wakeonlanconfig defaults

この方法だと、OS再起動後に sudo ethtool eth0 をしても、Wake-on: d と表示されてしまう。なのに、sudo shutdown -h now をしても、マジックパケットを送ればPCの電源が入ってくれる。なんでや。

これは勝手な想像だけど、Wake-on: d と表示されていても、実はWOLが有効になってる場合もあったりするのではないかと。

あるいは、ひょっとすると、シャットダウンするタイミングで、何かがWOLを有効にしていたりして…? 何がどうなっているのやら。

Ubuntuの場合、NetworkManagerとやらがアレコレしているらしいのもアレで。ググった感じでは、このあたりの設定をするなら network-manager をアンインストールして作業するのが鉄則、のような雰囲気も。/etc/network/ 以下にアレコレ書いても、NetworkManager が全部台無しにしちゃうらしくて。

まあ、とにかくさっぱり分からんです。なんでコレで動いて、アレでは動かんのだろう…。

それにしても、コレもまた、ATX機は足元に置いてあるんだから足で電源ボタン押せばいいだろ、てなところもあって。自分、何やってんだか。

*1: _debian で wake-on-lan (WOL) を有効にする方法 - ぴょぴょぴょ? - Linuxとかプログラミングの覚え書き - で紹介されてるスクリプトの中身だと上手くいかないという…。$ETHTOOL や $IFACE を「"」で囲んでるぐらいしか違いは無いはずなのに…。
*2: ちと気をつけないといけないっぽいのが、このスクリプトが呼ばれた後で、udevがeth0をリネームしてるっぽいことで。ということは、enp4s0 ではなく、eth0 を指定しておかないといけないのだろうか…。このあたりが面倒臭くなってきたので、udev がリネームしないような設定をしちゃったのですが。

以上です。

過去ログ表示

Prev - 2016/01 - Next
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project