Quellen: http://www.thomas-krenn.com/de/wiki/Wake_on_LAN_unter_Linux sowie http://www.brueck-computer.de/index2.php?modul=1404&link=1
Um unter Debian einen Rechner via Wake-On-LAN aufzuwecken, genügt ein einfaches Kommando. Dieses muss allerdings erst nachinstalliert werden:
$ sudo apt-get install wakeonlan
$ wakeonlan mac-adresse
Ein Problem kann allerdings sein, dass die WoL-Funktion des Zielrechners deaktiviert ist. Insbesondere die Netwerk Interface-Treiber einiger Disstributionen neigen dazu, diese Funktion automatisch abzuschalten. Dies kann mit ethtool einfach festgestellt werden:
$ sudo apt-get install ethtool
$ sudo ethtool eth0
...
Supports Wake-on: pumbg
Wake-on: g
...
Die Zeile Supports Wake-on gibt Aufschluss über die möglichen WoL-Arten, welche das Interface unterstützt. Die Zeile Wake-on zeigt den gerade aktiven Modus. Dabei sind folgende Werte zulässig:
Kürzel | Beschreibung |
---|---|
d | WoL deaktiviert! |
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(tm) |
s | Enable SecureOn(tm) password for MagicPacket(tm) |
Der am häufigsten unterstützte Modus, den selbst Billigkarten meist verstehen, ist g. Sollte WoL deaktiviert sein, kann es mit folgendem Befehl aktiviert werden. Allerdings ist die Wahrscheinlichkeit hoch, dass die Funktion nach dem nächsten Neustart vom Netzwerktreiber wieder ausgeschaltet wurde.
$ ethtool -s eth0 wol g
Hier hilft ein kleines Init-Script, dass schnell angelegt ist:
$ sudo nano /etc/init.d/enable-wakeonlan
$ sudo update-rc.d enable-wakeonlan defaults
/etc/init.d/enable-wakeonlan |
---|
#! /bin/sh ### BEGIN INIT INFO # Provides: enable-wakeonlan # Required-Start: $local_fs $remote_fs $network $time # Required-Stop: $local_fs $remote_fs $network $time # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Reenables wake-on-lan for eth0 # Description: Reenables wake-on-lan for eth0 because most # network interface drivers disable it automaticaly. ### END INIT INFO # Author: Dennis Schulmeister <dennis (at) developer-showcase.de> # Do NOT "set -e" DEVICE=eth0 # Exit if the package is not installed [ -x /sbin/ethtool ] || exit 0 # Define LSB log_* functions. # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. . /lib/lsb/init-functions # Handle arguments case "$1" in start) log_begin_msg "Enable wake-on-lan for $DEVICE" ethtool -s $DEVICE wol g ;; stop) log_begin_msg "Cannot disable wake-on-lan. Script would have no effect!" ;; *) log_begin_msg "ERROR: Append start or stop" ;; esac log_end_msg $? |
ACHTUNG: Unter Ubuntu liegt die Datei ethtool im Verzeichnis /usr/sbin. Die folgende Zeile muss daher angepasst werden:
# Exit if the package is not installed
[ -x /sbin/ethtool ] || exit 0
Wird also zu, damit das Script funktioniert:
# Exit if the package is not installed
[ -x /usr/sbin/ethtool ] || exit 0