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ürzelBeschreibung
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

Am einfachsten hilft hier ein Eintrag in /etc/rc.local bzw. /etc/rc.d/rc.local:

#! /bin/sh
/usr/sbin/ethtool -s eth0 wol g
exit 0

Falls rc.local wegen Systemd nicht mehr unterstützt wird, kann hierfür ein eigener Service definiert werden.


Unter sysvinit kann man auch ein Init-Script für Wake-On-Lan anlegen:

$ 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


attachments

imageappend Append an Image
>