これは私の箱です:
Linux mediacenter 5.15.122-1-MANJARO #1 SMP PREEMPT Tue Jul 25 07:09:46 UTC 2023 x86_64 GNU/Linux
私は従おうとしている https://wiki.archlinux.org/title/ウェイクオンLAN
しかし、私は変化を永続させることに失敗しています。
リンク ソリューション、systemd、udev ルール ソリューションを試しました。再起動するたびに、次のようになります。
sudo ethtool enp1s0 | grep Wake-on
Supports Wake-on: pumbg
Wake-on: d
つまり無効になっているようです。
eth0
特に systemd のことは私を困惑させます。どうやら、ネットワーク インターフェイスの名前がからに変更される前に、systemd スクリプトが実行されているようですenp1s0
。
ago 31 00:27:33 mediacenter systemd[1]: Starting Wake-on-LAN for enp1s0...
ago 31 00:27:33 mediacenter ethtool[373]: netlink error: no device matches name (offset 24)
再起動時に ethtool コマンドを適用できませんでした。再起動後に手動で設定すると、機能します。
$ sudo systemctl start wol@enp1s0
$ sudo ethtool enp1s0 | grep Wake-on
Supports Wake-on: pumbg
Wake-on: umbg
アイデアは?
答え1
systemd スクリプトは、ネットワーク インターフェイスの名前が eth0 から enp1s0 に変更される前に実行されるようです。
その場合は、systemdユニットを作成します依存するという名前のネットワーク インターフェイス上で、と をenp1s0
追加することでこれを実行します。ただし、少々紛らわしいことに、systemd はこれに架空の /sys/subsystem パスを使用します (このパスは存在する予定でしたが、結局存在しませんでした)。Wants=
After=
[ユニット] 希望=sys-subsystem-net-devices-%i.device 後=sys-subsystem-net-devices-%i.device
また、ユニットをmulti-user.targetに配置することは一般的には問題ありませんが、できたデバイス自体にそれを引き込むようにします。
# オプション [インストール] WantedBy=sys-subsystem-net-devices-%i.device
さらに良い方法はethtoolを呼び出すことですudevルールから、udev ルールはデバイスが表示されたときに処理され、それより前には処理されないためです (当然のことですが)。他の状況では (ただし、あなたの状況ではそうではありません)、他のさまざまなソフトウェア (systemd を含む) にはデバイスが「準備完了」になったことだけが通知されるという利点もあります。後ルール処理が終了しました。
ルールは /etc/udev/rules.d/20-wol.rules にあります。
アクション=="add", サブシステム=="net", カーネル=="eth*", 実行+="/sbin/ethtool -s %k wol g"
最後に systemd ユニットを実行するように設定するのが効果的だと思います。
systemd には意図的に「最後」がありません。それに近いものもありますが、それは必要なものではありません。