Der Versuch, Wake-on-LAN unter Linux dauerhaft einzurichten, schlägt fehl

Der Versuch, Wake-on-LAN unter Linux dauerhaft einzurichten, schlägt fehl

Das ist meine Box: Linux mediacenter 5.15.122-1-MANJARO #1 SMP PREEMPT Tue Jul 25 07:09:46 UTC 2023 x86_64 GNU/Linux

Ich versuche zu folgen https://wiki.archlinux.org/title/Wake-on-LAN

Aber es gelingt mir nicht, die Änderungen dauerhaft zu machen.

Ich habe die Link-Lösung, die systemd-Lösung und die udev-Regellösung ausprobiert. Bei jedem Neustart sieht es so aus:

sudo ethtool enp1s0 | grep Wake-on
    Supports Wake-on: pumbg
    Wake-on: d

Das scheint zu bedeuten, dass es deaktiviert ist.

Besonders die Sache mit systemd verwirrt mich. Es scheint, dass das systemd-Skript ausgeführt wird, bevor die Netzwerkschnittstelle von eth0in umbenannt wurde 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)

Ich habe es nicht geschafft, den ethtool-Befehl beim Neustart anzuwenden. Wenn ich ihn nach dem Neustart manuell einstelle, funktioniert es:

$ sudo systemctl start wol@enp1s0
$ sudo ethtool enp1s0 | grep Wake-on
    Supports Wake-on: pumbg
    Wake-on: umbg

Ideen?

Antwort1

Es scheint, dass das systemd-Skript ausgeführt wird, bevor die Netzwerkschnittstelle von eth0 in enp1s0 umbenannt wurde.

In diesem Fall machen Sie die systemd-Einheitabhängenauf einer Netzwerkschnittstelle mit dem Namen enp1s0. Dies geschieht durch Hinzufügen von Wants=und After=für den entsprechenden /sys-Gerätepfad – etwas verwirrenderweise verwendet systemd hierfür den erfundenen Pfad /sys/subsystem (der zwar geplant war, aber nie existierte).

[Einheit]
Will=sys-subsystem-net-devices-%i.device
Nachher=sys-subsystem-net-devices-%i.device

Auch wenn es im Allgemeinen in Ordnung ist, die Einheit in multi-user.target zu haben,könnteLassen Sie das Gerät es selbst einziehen:

# Optional
[Installieren]
Gesucht von = sys-subsystem-net-devices-%i.device

Eine noch bessere Methode wäre der Aufruf von ethtoolvon einer udev-Regel,da udev-Regeln verarbeitet werden, wenn das Gerät angezeigt wird und nicht früher (offensichtlich). In anderen Situationen (aber nicht in Ihrer) haben sie auch den Vorteil, dass verschiedene andere Software (einschließlich systemd) nur benachrichtigt wird, wenn das Gerät „bereit“ istnachDie Regelverarbeitung ist abgeschlossen.

# /etc/udev/rules.d/20-wol.rules

AKTION=="Hinzufügen", SUBSYSTEM=="net", KERNEL=="eth*", RUN+="/sbin/ethtool -s %k wol g"

Ich denke, es wird funktionieren, die systemd-Einheit so einzustellen, dass sie am Ende ausgeführt wird.

In systemd gibt es ganz bewusst kein „am Ende“. Es gibt Dinge, die dem nahe kommen, aber das ist nicht das, was Sie wollen.

verwandte Informationen