«-- zurück zur DL6MFJ Homepage
Ausnahmsweise etwas Computer-Literatur.
Zum Thema wake up on lan findet man vergleichsweise wenig Infos speziell für openSUSE. Und obwohl man mittels Yast so ziemlich alles zusammen klicken kann, findet sich dort nix für eine wol Einrichtung.
Nachdem nun openSUSE 10.3 'raus ist und hier auf einen Testrechner läuft,
galt es die wake on lan Funktionalität einzurichten.
Schliesslich bieten Remote-Rechner interessante Möglichkeiten.
Bitte nicht vom langen Text abschrecken lassen. Das ganze beschränkt sich im wesentlichen darauf, eine 2-zeilige Skript(=Text)-Datei anzulegen und in einer bestehenden config-Datei eine Zeile anzuhängen.
Voraussetzungen:
- Auf dem einzuschaltenden Rechner ist openSUSE installiert und eine Ethernet Netzwerkkarte eingerichtet.
- Die Netzwerkkarte samt Treiber unterstützt wake on lan.
- Der Rechner unterstützt wake on lan.
Um heraus zufinden, ob die Netzwerkkarte bzw. der Treiber 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 die Zeile
Supports Wake-on: g
Wenn 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 packet" 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. Mittels
ethtool -s eth0 wol g
kann man wake on magic packet einschalten. Den Befehl könnte man natürlich in ein Start-Skript einbauen. Das Dumme ist nur, dass openSUSE beim Herunterfahren alle Einstellungen wieder zunichte macht und die Karte wieder zurücksetzt - sicher ist eben sicher. Daher überreden wir das System am Schluss die NIC doch nochmal zu reaktivieren. Hierzu basteln wir ein kleines Skript, dass nach der Dekativierung der Karte aufgerufen wird und den Reaktivierungs-Befehl enthält. Das Skript sieht im einfachsten Fall so aus:
#!/bin/bash /usr/sbin/ethtool -s eth0 wol g
Sinnvollerweise wird es in /etc/sysconfig/network/scripts gespeichtert. Als Name kann man "reactivate-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 entsprechend "ifcfg-eth0", öffnen das Skript mit einen Editor und fügen eine neue letzte Zeile hinzu:
POST_DOWN_SCRIPT=reactivate-wol-eth0
Wobei "reactivate-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.17.11/24' MTU='' NAME='Intel EtherExpress PRO/100 S Desktop Adapter' NETWORK='' REMOTE_IPADDR='' STARTMODE='auto' USERCONTROL='no' POST_DOWN_SCRIPT=reactivate-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.
ether-wake 11:22:33:AA:BB:CC
schaltet den Rechner mit der MAC-Adresse 11:22:33:AA:BB:CC mittels magic packet 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 11:22:33:AA:BB:CC
kann man das magic packet über eth1 weg schicken - sofern vorhanden. Man beachte, dass die magic packet Methode auf Layer2 statt findet, d.h. nicht per ip routebar ist. Falls man einen Rechner via Internet einschalten möchte, müssten Karte und Treiber das unterstützen und vorallem bräuchte man eine Adresse die auch im ausgeschalteten Zustand erreichbar, sprich statisch ist. Als Alternative kommen wake on ring/on modem/on serial in Frage.
Eigentlich wars das schon.
Noch in paar Anmerkungen, falls es geklappt hat:
Wenn man den Remote-Rechner -so wie ich- ausschließlich als solchen betreibt , braucht man weder Eingabe-Geräte noch Monitor ("halt on all erorrs" im BIOS deaktivieren, wenn das keyboard f hlt). Dann sollte man den Rechner so einstellen, dass er in den runlevel 3 bootet (also ohne grafischen Login). Trotzdem kann man dann bei Bedarf auf dem Remote-Rechner KDE starten und sich die Oberfläche mit kdfb/kdrc herholen und bedienen.
have fun
PS:
Ausschalten geht mit "halt" oder dem shutdown-Befehl nachdem man sich auf dem Remote-Rechner eingeloggt hat.
«-- zurück zur DL6MFJ Homepage