Wake On LANの設定をUbuntu起動時に自動で行うように設定をしています。
この設定がうまくいかなくて少しハマったので対処しました。
環境
- Ubuntu 20.04.2 LTS
12345678910111213cat /etc/os-releaseNAME="Ubuntu"VERSION="20.04.2 LTS (Focal Fossa)"ID=ubuntuID_LIKE=debianPRETTY_NAME="Ubuntu 20.04.2 LTS"VERSION_ID="20.04"HOME_URL="https://www.ubuntu.com/"SUPPORT_URL="https://help.ubuntu.com/"BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"VERSION_CODENAME=focalUBUNTU_CODENAME=focal - 端末:Aspire XC-603ベースの自作PC
起こっている事象とその対処
systemdに登録しているWake On LAN設定のサービス(/etc/systemd/system/wolg.service)が成功しない。
Ubuntu起動後にWake-onのステータスが”d”のままになっている。
1 2 3 |
$ sudo ethtool enp2s0 | grep -i wake Supports Wake-on: pumbg Wake-on: d |
ステータス確認
systemctlでステータスを確認してみます。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ sudo systemctl status wolg.service ● wolg.service - Enable Wake-On-Lan Loaded: loaded (/etc/systemd/system/wolg.service; enabled; vendor preset: enabled) Active: failed (Result: start-limit-hit) since Wed 2021-04-07 22:20:12 JST; 1min 3s ago Process: 845 ExecStart=/home/wolg (code=exited, status=0/SUCCESS) Main PID: 845 (code=exited, status=0/SUCCESS) 4月 07 22:20:12 XXXXX systemd[1]: wolg.service: Scheduled restart job, restart counter is at 5. 4月 07 22:20:12 XXXXX systemd[1]: Stopped Enable Wake-On-Lan. 4月 07 22:20:12 XXXXX systemd[1]: wolg.service: Start request repeated too quickly. 4月 07 22:20:12 XXXXX systemd[1]: wolg.service: Failed with result 'start-limit-hit'. 4月 07 22:20:12 XXXXX systemd[1]: Failed to start Enable Wake-On-Lan. |
なにやらメッセージが出ていました。
wolg.service: Start request repeated too quickly.
リクエスト(Wake On LAN設定のスクリプト)を高速で繰り返そうとしたため停止したみたいです。
Start request repeated too quickly. の対処
systemdに登録した/etc/systemd/system/wolg.service の記述を見直ししてみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# 修正前 $ cat /etc/systemd/system/wolg.service [Unit] Description=Enable Wake-On-Lan [Service] Type=simple ExecStart=/home/wolg Restart=always User=root [Install] WantedBy=multi-user.target |
[Service]のRestart=alwaysが原因のようです。
WOLの設定プログラムは1回成功すればいいので、alwaysをnoに変更しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# 修正後 $ cat /etc/systemd/system/wolg.service [Unit] Description=Enable Wake-On-Lan [Service] Type=simple ExecStart=/home/wolg Restart=no User=root [Install] WantedBy=multi-user.target |
修正後、リロードしてスタートするとうまくいきました。
1 2 |
$ sudo systemctl daemon-reload $ sudo systemctl start wolg.service |
1 2 3 |
sudo ethtool enp2s0 | grep -i wake Supports Wake-on: pumbg Wake-on: g |
Restartの値について、以下のサイトが分かりやすかったです。
私は今回”no”を使用しましたが、他にもいくつかあるみたいです。
再起動してみたらWOLが有効にならなかった
再起動しても大丈夫か確認するため、Wake-onを”d”にしてからrebootしてみたら想定通りになっていませんでした。
ステータスを確認してみましたが、エラーは出ていませんでした。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ sudo systemctl status wolg.service ● wolg.service - Enable Wake-On-Lan Loaded: loaded (/etc/systemd/system/wolg.service; enabled; vendor preset: enabled) Active: inactive (dead) since Wed 2021-04-07 22:26:29 JST; 40s ago Process: 785 ExecStart=/home/wolg (code=exited, status=0/SUCCESS) Main PID: 785 (code=exited, status=0/SUCCESS) 4月 07 22:26:29 XXXXX wolg[785]: # ログ設定 4月 07 22:26:29 XXXXX wolg[785]: echo "/home/LOG/LOG.$(basename $0).$(date +%Y%m%d%H%M%S)" &> /dev/null 4月 07 22:26:29 XXXXX wolg[796]: ++ basename /home/wolg 4月 07 22:26:29 XXXXX wolg[801]: ++ date +%Y%m%d%H%M%S 4月 07 22:26:29 XXXXX wolg[785]: + echo /home/LOG/LOG.wolg.20210407222629 4月 07 22:26:29 XXXXX wolg[785]: exec 2> /home/LOG/LOG.$(basename $0).$(date +%Y%m%d%H%M%S) 4月 07 22:26:29 XXXXX wolg[785]: + exec 4月 07 22:26:29 XXXXX wolg[802]: ++ basename /home/wolg 4月 07 22:26:29 XXXXX wolg[803]: ++ date +%Y%m%d%H%M%S 4月 07 22:26:29 XXXXX systemd[1]: wolg.service: Succeeded. |
対処
dmesgを見ててたまたま気が付いたのですが、イーサネットアダプタのリネームとリンクアップに若干時間がかかっていることが分かりました。
1 2 3 4 5 6 7 8 9 10 |
dmesg | grep r8 [ 0.047192] percpu: Embedded 56 pages/cpu s192512 r8192 d28672 u524288 [ 0.047211] pcpu-alloc: s192512 r8192 d28672 u524288 alloc=1*2097152 [ 2.061903] r8168: loading out-of-tree module taints kernel. [ 2.062323] r8168: module verification failed: signature and/or required key missing - tainting kernel [ 2.063305] r8168 Gigabit Ethernet driver 8.048.00-NAPI loaded [ 2.077854] r8168: This product is covered by one or more of the following patents: US6,570,884, US6,115,776, and US6,327,625. [ 2.079921] r8168 Copyright (C) 2019 Realtek NIC software team <nicfae@realtek.com> [ 2.150406] r8168 0000:02:00.0 enp2s0: renamed from eth0 [ 42.440675] r8168: enp2s0: link up |
もしかするとイーサネットアダプタのリネームより、設定スクリプトのほうが先に起動してるのかな~と思い、起動スクリプトにsleepで20秒の待機時間を設定してみました。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ cat /home/wolg #!/bin/bash -xv # ログ設定 echo "/home/LOG/LOG.$(basename $0).$(date +%Y%m%d%H%M%S)" &> /dev/null exec 2> /home/LOG/LOG.$(basename $0).$(date +%Y%m%d%H%M%S) sleep 20 ←20秒待たせる ethtool -s enp2s0 wol g exit |
この設定を行って再起動したら想定通り、Wake-onが”g”になりました。
でも実際のところサービス起動とイーサネットのリネームの時間をしっかり確認してないので、今度確認してみようと思います。
今日はもう眠いので。。。
コメント