Server mittels WOL starten
Um einen PC mittels W(ake)O(n)L(an) zu starten, muss die Netzwerkkarte diesen Modus beherrschen und entsprechend konfiguriert sein. Manche BIOSse bieten hierfür eine Konfigurationsmöglichkeit, ebenso kann dies auch auf der Kommandozeile mit ethtool geschehen.
Zunächst benötigt man den Namen des Netzwerkdevices, welches man u. a. wie folgt ermitteln kann:
# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 44:37:e6:87:87:98 brd ff:ff:ff:ff:ff:ff
altname eno1
altname enp0s25
In diesem Beispiel wäre eth0 das Netzwerkdevice, welches im weiteren beispielhaft genutzt wird. Auf eisfair werden auch von udev vergebene Devicenamen nach dem Schema enx<mac> also z. B. enx1257a68bc79a benutzt.
Die aktuellen Einstellungen der Netzwerkkarte werden mittel ethtool ermittelt:
# ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Auto-negotiation: on
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
MDI-X: on (auto)
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes
Die Zeile Wake-on: g zeigt an, dass die Karte auf WakeOnLan über MagickPacket konfiguriert ist, was die übliche Vorgehensweise darstellt. Wäre WOL deaktiviert, würde dies durch Wake-on: d angezeigt.
Folgende Modi für die Wake-on-Option sind möglich:
wol p|u|m|b|a|g|s|f|d...
Sets Wake-on-LAN options. Not all devices support
this. The argument to this option is a string of
characters specifying which options to enable.
p Wake on PHY activity
u Wake on unicast messages
m Wake on multicast messages
b Wake on broadcast messages
a Wake on ARP
g Wake on MagicPacket™
s Enable SecureOn™ password for MagicPacket™
f Wake on filter(s)
d Disable (wake on nothing). This option
clears all previous options.
Die gewünschte Wake-on-Option wird mit ethtool gesetzt, z. B.:
ethtool -s eth0 wol g
Wie ich selbst feststellen musste, gibt es Netzwerkkarten/Mainboards, die die Wake-on-Option nach jedem Boot wieder auf deaktviert zurücksetzen. Hier hilft dann eine Systemd-Unit, die einmalig nach dem Boot aktiv wird und den gewünschten Modus wieder herstellt. Hierzu legt man in /etc/systemd/system eine Datei z. B. mit dem Namen wol.service und folgendem Inhalt ab:
[Unit] Description=Configure Wake-up on LAN After=network.service [Service] Type=oneshot ExecStart=/usr/sbin/ethtool -s eth0 wol g [Install] WantedBy=basic.target
Nun gilt es noch diese Unit dauerhaft zu aktivieren:
# service daemon-reload # service enable wol # service start wol
Hat man mehrere Netzwerkkarten im Server, kann mit einer „Wildcard“-Unit gearbeitet werden. Diese erhalten am Ende des Unit-Namens ein „@“, also würde in unserem Beispiel wol@.service heißen. Im Unitfile wird anstelle der direkten Angabe des Netzwerkdevices der Platzhalter %i angegeben:
[Unit] Description=Configure Wake-up on LAN on %i After=network.service [Service] Type=oneshot ExecStart=/usr/sbin/ethtool -s %i wol g [Install] WantedBy=basic.target
Wenn nun eine solche Systemd-Unit genutzt werden soll, ist hinter dem @ das Netzwerkdevice anzugeben:
# service daemon-reload # service enable wol@eth0 # service start wol@eth0
Soll der Server über verschiedene Netzwerkkarten aufgeweckt werden können, wiederholt man die Unitaktivierung für eine weitere Netzwerkkarte, z. B.:
# service daemon-reload # service enable wol@eth1 # service start wol@eth1
Hinweis: Der Befehl service daemon-reload ist nicht notwendig, wenn vor jedem anderen service-Befehl service enable … ausgeführt wird.