ubuntuusers.de

BootonLAN

Status: Gelöst | Ubuntu-Version: Ubuntu 6.06 (Dapper Drake)
Antworten |

Olaf

Avatar von Olaf

Anmeldungsdatum:
19. Dezember 2004

Beiträge: Zähle...

Moin,

ich möchte meinen Linux-PC gern über's lokale Netz einschalten können, leider klappt das aber nur, wenn ich ihn zuvor von Windows aus heruntergefahren habe.
Fahre ich den Rechner aber von Dapper aus herunter, passiert auf ein wol-Paket hin gar nix. Ich vermute daher, dass der Win-Treiber der Karte ebendiese in einem anderen Zustand hinterlässt, obwohl ich immer einen Link zu dem Rechner am Switch habe, egal welches System vorher lief.

sudo lspci -vv gibt mir folgendes zu der Karte aus:

0000:00:0e.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 43)
        Subsystem: D-Link System Inc DFE-530TX rev A
        Flags: bus master, medium devsel, latency 32, IRQ 10
        I/O ports at b800 [size=256]
        Memory at db000000 (32-bit, non-prefetchable) [size=256]
        Expansion ROM at 40000000 [disabled] [size=64K]
        Capabilities: [40] Power Management version 2


Hat jemand einen Tipp für mich, ob, wie und womit ich da etwas drehen könnte?

Gruß Olaf

otzenpunk Team-Icon

Avatar von otzenpunk

Anmeldungsdatum:
17. Oktober 2005

Beiträge: 8691

Wohnort: Hamburg-Altona

Hab dazu was in der Wikipedia gefunden: Wake_On_LAN

Ein häufiges Problem ist, dass die Netzwerkkarte nicht richtig initialisiert wird. Das kann unter Linux mit dem Programm "ethtool" überprüft werden:

ethtool eth0
Supports Wake-on: pumbg
Wake-on: d


Im obigen Beispiel ist als Wake-on-LAN-Modus der Netzwerkkarte "d" (disable) eingestellt. Um das richtigzustellen, kann der Befehl

ethtool -s eth0 wol g


verwendet werden. Dieser Befehl muss unter Linux möglicherweise in den Start-Skripten eingetragen werden, damit er bei jedem Systemstart ausgeführt wird. Allerdings sollte das Netzwerkinterface während des Shutdowns nicht abgeschaltet werden, wie es mit "ifconfig ethX down" möglich ist.

Hoffe, das hilft dir weiter.

Olaf

(Themenstarter)
Avatar von Olaf

Anmeldungsdatum:
19. Dezember 2004

Beiträge: 223

otzenpunk hat geschrieben:

Hoffe, das hilft dir weiter.

Allerdings, vielen Dank!
Und in der Tat wird die Einstellung beim Neustart auf "d" zurückgesetzt.
Ich habe allerdings keine Erfahrung mit der Bearbeitung der Startskripte. Hast Du vielleicht auch noch einen Tipp, in welchem Skript bzw. an welcher Stelle ich das am sinnvollsten eintrage?
Bleibt so eine Änderung nach Updates erhalten, oder muss das jeweils aktualisiert werden?

Gruß Olaf

Olaf

(Themenstarter)
Avatar von Olaf

Anmeldungsdatum:
19. Dezember 2004

Beiträge: 223

Moin,
Hat sich erledigt, habe diverse Infos hier gefunden.
Gruß Olaf

Olaf

(Themenstarter)
Avatar von Olaf

Anmeldungsdatum:
19. Dezember 2004

Beiträge: 223

Zu früh gefreut ☹
Das dort aufgeführte Script "/etc/init.d/Wakeuponlan" bringt vielleicht unter Gentoo, aber nicht unter Dapper den gewünschten Effekt:

#!/sbin/runscript

depend() {
    need net 
}
                                  
                  
start() {
    ebegin "Starting WakeUpOnLan..."
    /usr/sbin/ethtool -s eth0 wol g
    eend $? "Failed to start ethtool"
}
                                       
stop() {
    ebegin "activate Wake Up On Lan"
    /usr/sbin/ethtool -s eth0 wol g
    eend $? "Failed to start ethtool"
}


Wie muss ich das anpassen, damit es unter Dapper funktioniert?

Gruß Olaf

otzenpunk Team-Icon

Avatar von otzenpunk

Anmeldungsdatum:
17. Oktober 2005

Beiträge: 8691

Wohnort: Hamburg-Altona

Olaf hat geschrieben:

Das dort aufgeführte Script "/etc/init.d/Wakeuponlan" bringt vielleicht unter Gentoo, aber nicht unter Dapper den gewünschten Effekt:

Das ist richtig. Das sieht ein bisschen anders aus, als unter Debian- bzw. Ubuntu-Systemen. Was ich meistens mache, wenn ich ein Startskript erstellen muss, ist erstmal ein existierendes Startskript zu kopieren. Dort lösche ich dann alles raus, bis aufs Grundgerüst, und trage meine Befehle ein. Das sieht dann bei Ubuntu etwa so aus:

#!/bin/sh
#
#   /etc/init.d/irgendwas: Was tut dieses Skript?

# evtl. Variablen oder Initialisierungen

case "$1" in
start)
    log_begin_msg "Starting up something..."
# hier kommen die Startkommandos hin   
# /usr/sbin/ethtool -s eth0 wol g
# evtl. vorher noch ifconfig eth0 up, da das if ja schon runtergefahren wurde
    log_end_msg $?
    ;;
stop)
    log_begin_msg "Shutting down something..."
# hier die Kommandos zum runterfahren, brauchen wir jetzt nicht
    log_end_msg $?
    ;;
restart|force-reload)
    log_begin_msg "Restarting something..."
# diesen Abschnitt kannst du auch komplett loeschen, wenn du ihn nicht brauchst 
    log_end_msg $?
    ;;
*)
    log_success_msg "Usage: /etc/init.d/irgendwas {start|stop|restart|force-reload}"
    exit 1
    ;;
esac

exit 0

Skript anpassen und danach noch in ein rc.d-Verzeichnis verlinken, so dass es ziemlich am Ende ausgeführt wird, kurz vor dem Ausschalten des Systems. Das passiert im Runlevel 0, also im Verzeichnis /etc/rc0.d. Dort also einen Link auf das Skript anlegen, der mit S89 beginnt, damit das Skript unmittelbar vor dem Anhalten des Systems ausgeführt wird.

Olaf

(Themenstarter)
Avatar von Olaf

Anmeldungsdatum:
19. Dezember 2004

Beiträge: 223

Moin,
das hat mir sehr weitergeholfen.
Ich habe nun unter dem Namen "wol-enabler" folgendes Skript in /etc/init.d/ abgelegt:

!/bin/sh
#
#   /etc/init.d/wol-enabler: richtet die Netzwerkkarte für wake-on-lan-Bereitschaft ein

case "$1" in
start)
	log_begin_msg "eth0 fuer wake-on-lan einrichten..." 
	/usr/sbin/ethtool -s eth0 wol g
	log_end_msg $?
    ;;
esac

exit 0 


Das Skript habe ich dann nach /etc/rc2.d/S25wol-enabler verlinkt, damit ich nicht nur die Boot-on-Lan, sondern auch ggf. die Wake-on-Lan-Funktion benutzen kann.
Das entspricht wahrscheinlich noch nicht der "reinen Lehre", aber für mein erstes Startskript funktioniert es bestens!

Danke für Deine Hinweise! ☺
Gruß Olaf

otzenpunk Team-Icon

Avatar von otzenpunk

Anmeldungsdatum:
17. Oktober 2005

Beiträge: 8691

Wohnort: Hamburg-Altona

Ne, wenn's funktioniert, ist ja alles super. Ich hatte bloß damit gerechnet, dass das wol-Flag evtl. beim Runterfahren zurückgesetzt wird, - deswegen wollte ich das ganz ans Ende setzen - aber das ist anscheinend nicht der Fall.

Was "die reine Lehre" angeht, ist das Vorhandensein des start-, stop- und usage-Blocks vorgeschrieben. Wenn du also ein Perfektionist bist, ergänzt du noch einen leeren stop-Block und den mit *). 😉

Antworten |