Eine ganz normale Webseite. Web 2.0(815)

26. November 2007

Wake On Lan (WoL) unter openSUSE(linux) 10.x einrichten

Filed under: Administration,Allgemein,Netzwerktechnik — Schlagwörter: , , , , , , , , , — Drollo @ 22:50

Nachdem ich mich heute erst einmal knapp 2 Stunden über mein Board geärgert habe, lag es wohl doch mal wieder an Linux ^^

Aber immerhin fand ich Dank Google schnell den wahren Grund:

Quelle: http://bundesfalle.de/content/view/34/1/

Voraussetzungen:

  • – Auf dem einzuschaltenden Rechner ist openSUSE installiert und eine Ethernet Netzwerkkarte eingerichtet.
  • – Netzwerkkarte und Treiber unterstützten wake on lan.
  • – Der Rechner unterstützt wake on lan.

Um heraus zufinden, ob die Netzwerkkarte wol unterstützt, gibt man als root (oder mit sudo)

ethtool eth0

ein. 

Wobei eth0 die Karte bezeichnet, die den Rechner einschalten soll. Bei mehreren NICs könnte es z.B. auch eth1 sein. Man erhält eine Ausgabe ähnlich dieser:

rechnername:~ # ethtool eth0
Settings for eth0:
        Supported ports: [ TP MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
        Advertised auto-negotiation: Yes
        Speed: 100Mb/s
        Duplex: Full
        Port: MII
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: g
        Wake-on: g
        Current message level: 0x00000007 (7)
        Link detected: yes
Entscheidend ist

Supports Wake-on: gWenn diese Zeile fehlt oder nach dem “ Supports Wake-on:“ kein Buchstabe kommt, kann die Karte und/oder der Treiber kein wol. Das g besagt, dass es ein „magic-paket“ als Weckruf entgegen nimmt. Es gibt auch noch andere Methoden z.B. auf physikalische Aktivität hin aufwachen, dann würden im obigen Beispiel nach dem „g“ weitere Buchstaben folgen.

Die Zeile danach (ohne das „Supports“) zeigt die momentane Einstellung der Karte an.

Den Status kann man mittels

ethtool -s eth0 wol gsetzen. Den Befehl kann man natürlich in ein Start-Skript bauen. Das Dumme ist nur, dass openSUSE beim Herunterfahren alle Einstellungen wieder zunichte macht und die Karte wieder zurücksetzt – sicher ist eben sicher. Daher müssen wir das System überreden die NIC am Schluss doch wieder zu aktivieren.  Hierzu basteln wir ein kleines Skript, dass den Befehl enthält und nach der Dekativierung der Karte dochnoch aufgerufen wird.

Das Skript sieht im einfachsten Fall so aus:

#!/bin/bash
/usr/sbin/ethtool -s eth0 wol g

Es muss in /etc/sysconfig/network/scripts gespeichtert werden. Als Name könnte man „keep-wol-eth0“ verwenden.

Im Verzeichnis  /etc/sysconfig/network/ findet sich für jede Netzwerkkarte ein config-Skript „ifcfg-ethX“.

Für das Beispiel nehmen wir „ifcfg-eth0“, öffnen das Skript mit einem Editor und fügen eine neue letzte Zeile hinzu:

POST_DOWN_SCRIPT=keep-wol-eth0Wobei „keep-wol-eth0“ das zuvor angelegte Skript bezeichnet (das Unterverzeichnis /scripts braucht nicht weiter angegeben zu werden).

Die Beispiel ifcfg-eth0 sieht so aus:

BOOTPROTO=’static‘
BROADCAST=“
ETHTOOL_OPTIONS=“
IPADDR=’192.168.4.2/24′
MTU=“
NAME=’Intel EtherExpress PRO/100 S Desktop Adapter‘
NETWORK=“
REMOTE_IPADDR=“
STARTMODE=’auto‘
USERCONTROL=’no‘
POST_DOWN_SCRIPT=keep-wol-eth0

An dieser Stelle empfiehlt es sich die MAC-Adresse des einzuschaltenden Rechners (ggf. ifconfig bemühen) zu notieren.

Im Rechner-BIOS muss wake on lan aktiviert sein, ggf. in der Bootreihenfolge nach oben geschoben werden. Zwischen Netzwerkkarte und Mainbord muss i.d.R. ein wol-Kabel gesteckt sein (kurzes 3pol. Kabel mit kleinen Stecker). Hierzu die Dokumentation des Mainboards und der Karte zu Hilfe ziehen.

Soweit zur Konfiguration des einzuschaltenden Rechners.

Um den Rechner nun per Netzwerk einzuschalten, verwendet man  „ether-wake“ auf einen anderen Rechner – vorausgesetzt wir bleiben in der Linux-Welt.

ether-wake 00:11:22:33:AA:BB

schaltet den Rechner mit der MAC-Adresse  00:11:22:33:AA:BB mittels magic-paket ein. Sollte ether-wake fehlen, mittels Yast das Paket „netdiag“ nachinstallieren. Standardmässig geht der Befehl über das eth0 Interface raus.

Mit 

ether-wake -i eth1 00:11:22:33:AA:BB

kann man das magic-paket über eth1 weg schicken.

Impressum
Tobias Drollinger · Bohnenstraße 7 · 90765 Fürth · E-Mail: drollo[at]drollo[dot]de

Powered by WordPress