IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

WOL. Wake on Lan

De SergiTurWiki
Share/Save/Bookmark
Dreceres ràpides: navegació, cerca

IMPORTANT: No confongueu encendre una màquina des de la targeta de xarxa amb l' arrancada d'un sistema operatiu des de xarxa.

Aquest article tracta com encendre una màquina des de la targeta de xarxa.

Contingut

Requeriments de maquinari

Són necessaris un certs requeriments per tal que WOL funcioni:

  • Placa mare i font d'alimentació ATX o superior (la majoria de PCs moderns porten aquest tipus de fonts). Aplicable a tots els PC moderns (--acacha 17:27, 23 maig 2009 (UTC))
  • En alguns casos, pot ser necessari que la targeta de xarxa és connecti amb la placa mare utilitzant un cable especial per a WOL. Aquest cable sembla ser que no és necessari si el bus PCI és de la versió PCI 2.2 o superior.
  • Cal tenir en compte quin sistema s'utilitza per a la gestió de l'energia:
    • ACPI (): Permet la gestió de la energia des del sistema operatiu. Aquest tipus de sistemes no necessiten suport de la BIOS per suportar WOL
    • APM (Advanced Power Managment): Sistema antic de gestió d'energia. Substituït per ACPI. Només permetia la gestió de l'energia des de la BIOS.

Amb Linux, la comanda ethtool ens permet controlar l'arrancada des de la targeta de xarxa no és necessari però pot ser necessari configurar la BIOS prèviament. També cal tenir en compte la comanda pci-config.

Recursos:

Configuració de la BIOS

Molts ordinadors moderns que suporten ACPI, poden ser configurat ser configurats amb APM. Cada BIOS però, és un mon, i cal consultar la documentació.

Normalment es troba algun paràmetre que permet activar WOL tant en màquines ACPI com en màquines APM.

En màquines ACPI amb un SO "APCI aware" (tots els moderns...), el paràmetre a vegades s'anomena:

Wake on LAN from S5

Aplicacions

Entre d'altres als repositoris d'ubuntu es poden trobar les següents aplicacions:

  1. wakeonlan
  2. etherwake

Que ens permeten enviar un paquet màgic (Magic Packet) que ens permetrà encendre una màquina remota a través de la seva targeta de xarxa.

Es poden trobar com a paquets universe a Ubuntu. Per a instal·lar:

$ sudo apt-get install wakeonlan
$ sudo apt-get install etherwake

El funcionament d'aquestes comandes és molt senzill. Només cal saber l'adreça MAC del PC que es vol engegar de forma remota:

$ wakeonlan 00:11:09:CE:25:8E

NOTA: Cal fer notar que el fet d'utilitzar la MAC ens obliga a executar aquestes comandes des de una màquina de la mateixa xarxa (la màquina que executa la comanda i la màquina que s'encén remotament han d'estar a la mateixa xarxa.)

Per què això funcioni però, es necessari configurar correctament la màquina remota. Això es pot fer moltes maneres. Al següent apartat veure'm com fer-ho amb la comanda ethtool.

ethtool

A la màquina que volem encendre remotament hem de seguir una sèrie de passes per configurar-la de tal manera que accepti WOL. El primer de tot és consultar el suport de Wake ON LAN de la nostra targeta de xarxa. Si executem:

$ 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: 32
       Transceiver: internal
       Auto-negotiation: on
       Supports Wake-on: pumbg
       Wake-on: d
       Current message level: 0x00000007 (7)
       Link detected: yes

Si consultem el manual:

$ man ethtool

Podem veure els significats de les lletres de la secció Wake-on:

 wol p|u|m|b|a|g|s|d...
             Set Wake-on-LAN options.  Not all devices support this.  The argument to this option is a string of characters specifying which options  to
             enable.
             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)
             d  Disable (wake on nothing).  This option clears all previous options.

La targeta de l'exemple accepta les opcions:

  • p: Encendre la targeta al trobar qualsevol activitat a nivell físic (phy: physical).
  • u: Encendre la targeta al rebre paquets unicast
  • m: Encendre la targeta al rebre paquets multicast
  • b: Encendre la targeta al rebre paquets broadcast
  • g: Encendre la targeta al rebre paquets màgics

La opció que ens interessa en aquest exemple és l'opció g. El paquets màgics són el que envien les comandes wakeonlan i etherwake.

Per activar el Wake On Lan només ens cal executar:

$ sudo ethtool -s eth0 wol g

Això només ens servirà per a la propera vegada que apaguem l'ordinador. Si volem suportar WOL de forma permanent només cal que fem

$ sudo -i
# echo "ethtool -s eth0 wol g" >> /etc/conf.d/local.start

Que ens afegirà la comanda:

ethtool -s eth0 wol g

Al fitxer /etc/conf.d/local.start. Aquest fitxer s'executa cada cop que iniciem el sistema.

Manual:

$ ethtool -s eth0 wol g

Enable wake on lan després d'apagar la targeta de xarxa

Creeu un fitxer a:

/etc/network/if-post-down.d 

El podeu anomenar wol-enable:

$ sudo joe /etc/network/if-post-down.d/wol-enable

Amb el següent:

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

Feu-lo executable amb:

$ sudo chmod +x /etc/network/if-post-down.d/wol-enable

També el podeu afegir al after up:

$ sudo cp /etc/network/if-post-down.d/wol-enable /etc/network/if-up.d

Exemples de comandes

Activar wakeonlan a la targeta eth0:

$ sudo ethtool -s eth0 wol g 

Mostrar la informació del driver de la targeta

$ sudo ethtool -i eth0
driver: skge
version: 1.13
firmware-version: N/A
bus-info: 0000:02:08.0

Buscar PCI bus/device/function:

$ sudo ethtool -i eth0 | grep bus-info 
Returns "bus-info: 0000:00:04.0 (bus 0, device 4, function 0)" in my case.

pci-config is used to set power state to D3, but first the ID must be identified based on the bus-info. List IDs for bus 0:

$ pci-config -B0 -a

Returns "Device #12 at bus 0 device/function 4/0, 006610de".

Shutdown eth0 and reverse MAC address to avoid problems after resume:

$ ifconfig eth0 down hw ether 08:f6:11:6e:0c:00 # hw MAC is 00:0c:6e:11:f6:08

Set power state of device #12 to D3::

$ pci-config -B0 -S -#12

Per encendre la màquina:

$ etherwake 08:f6:11:6e:0c:00

Comanda pci-config

$ pci-config
El programa «pci-config» no està instal·lat actualment.  Podeu instal·lar-lo si escriviu:
sudo apt-get install nictools-pci

Fitxer /etc/ethers

Es pot utilitzar aquest fitxer per no haver d'utilitzar la mac cada cop que es fa un wakeonlan:

$ cat /etc/ethers
08:00:20:00:61:CA nommaquina

Wake on LAN i ACPI (Advanced Configuration and Power Interface)

Vegeu també ACPI.

Recursos:

/proc/acpi/wakeup

$ cat /proc/acpi/wakeup
Device	S-state	  Status   Sysfs node
HUB0	  S5	 disabled  pci:0000:00:0e.0
HUB1	  S4	 disabled  
USB0	  S3	 disabled  pci:0000:00:02.0 
USB1	  S3	 disabled  pci:0000:00:02.1
USB2	  S3	 disabled  pci:0000:00:02.2
F139	  S3	 disabled  
MMAC	  S5	 disabled  
MMCI	  S5	 disabled

Maquinari

Targetes de xarxa Intel

Consulteu:

Wake ON LAN a través d'encaminadors

Les solucions mostrades ens aquest article, només funcionen des de xarxa local, ja que els paquets s'envien en broadcast i els paquets de broadcast no van més enllà del segment de xarxa. A més, les MAC només estan disponibles a nivell 2 OSI de xarxa (LAN) i no s'encamina a nivell 3 (IP). Vegeu ARP.

De totes maneres, es poden configurar els encaminadors per a reenviar els paquets wakeonlan rebuts.

Zyxel Prestige 660HW-61

Entreu al router amb telnet:

Router> ip arp add 192.168.1.22 ether 00:11:D8:C4:59:5E

On la IP i la MAc són les del dispositiu que volem encendre amb Wake ON LAN.

Consulteu que tot és correcte:

Router> ip arp status
 received 4111 badtype 0 bogus addr 0 reqst in 3925 replies 28 reqst out 81
 cache hit 11968503 (98%), cache miss 237220 (1%)
 IP-addr         Type           Time  Addr              stat iface
 192.168.1.22    10 Mb Ethernet 0     00:11:d8:c4:59:5e 43   NULL
 192.168.1.24    10 Mb Ethernet 300   00:32:64:a1:ea:28 41   enif0
 192.168.1.255   10 Mb Ethernet 0     ff:ff:ff:ff:ff:ff 43   NULL

Ara cal obrir un port al router. En el cas de l'exemple el port escollit és el 6789

Consulteu la imatge (recurs extern):

http://www.vicente-navarro.com/blog/wp/img/2007/06/nat_wol_unicast.png

I enceneu la màquina amb:

$ sudo wakeonlan -i pruebawol.dyndns.org -p 6789 00:11:D8:C4:59:5E
Sending magic packet to pruebawol.dyndns.org:6789 with 00:11:D8:C4:59:5E

També funciona la IP de broadcast i ens estalviem afegir manualment la entrada a la taula ARP. Consulteu la imatge (recurs extern):

http://www.vicente-navarro.com/blog/wp/img/2007/06/nat_wol_broadcast.png

Recursos:

Resolució de problemes

Sistemes operatius que no suportin wake on lan i targetes Intel

Encara es pot utilitzar el métode "Magic Packet" en el cas d'utilitzar sistemes Intel. Es pot entrar a Intel® Boot Agent configuration utility amb la combinació de tecles:

CTRL-S

Durant l'arrancada del sistema

El programa de configuració té un paràmetre:

Legacy OS Wakeup Support

Si l'activeu, el agent d'arrancada prepararà la targeta de xarxa per tal de respondre als "Magic Packet".

NOTA: algunes versions antigues no tenen aquest paràmetre però es pot actualitzar el firmware des de la web d'Intel

Recursos:

Encendre una màquina amb WOL després d'haver hibernat

Per fer un resume (tornat a activar), proveu:

Activar wakeonlan a la targeta eth0:

$ sudo ethtool -s eth0 wol g 

Mostrar la informació del driver de la targeta

$ sudo ethtool -i eth0
driver: skge
version: 1.13
firmware-version: N/A
bus-info: 0000:02:08.0

Buscar PCI bus/device/function:

$ sudo ethtool -i eth0 | grep bus-info # Find PCI bus/device/function

Apunteu la informació, per exemple:

bus-info: 0000:00:04.0 

Què vol dir, bus 0, dispositiu 4, i funció 0.

Amb la comanda pci-config podem canviar el "power state".

Primer executeu:

$ pci-config -B0 -a
...
Device #12 at bus 0 device/function 4/0, 006610de

Que mostra tots els IDs del bus 0.

Ara s'apaga la targeta de xarxa i s'indica la MAC:

$ sudo ifconfig eth0 down hw ether 08:f6:11:6e:0c:00 # hw MAC is 00:0c:6e:11:f6:08

I s'estableix el "power state" a D3:

$ pci-config -B0 -S -#12

Per encendre la targeta de xarxa:

$ etherwake 08:f6:11:6e:0c:00

Recursos:

forcedeth problems

Consulteu:

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/288053

La targeta de xarxa queda completament apagada al apagar Ubuntu (no permet WakeONLAN ni PXE en alguns models)

I have tried 2.4.22, 2.4.23 and 2.6.0-test11 with nvidia and forcedeth drivers. The LEDs do stay on. Through your link to the howto I found pci-config.c on http://www.scyld.com/diag/index.html which can set the power state of devices.

I have added a script in /etc/rc0.d to put the nic to D3, and that enables WOL functionality. Unfortunately, this causes the box to hang sometimes, so it's not full-proof, but it seems to work -most- of the time.

It seems the kernel ACPI maintainer has a mobo with nforce2 chipset, so he will be able to do some testing when he gets around to it. Hopefully he can dig up enough information about this issue so that the forcedeth crew can incorporate it into their driver.

In the mean time I am going to look for a failsafe solution, i.e. a network card that will support wake-on-lan. However, this might prove very difficult because I don't think my mobo has pins to attach a WOL cable to :(

Vegeu també

Enllaços externs

  1. Wake On Lan HOWTO
  2. http://www.djack.com.pl/Suse9hlp/ch17s07.html
  3. http://gentoo-wiki.com/Wake_on_lan
  4. http://www.vicente-navarro.com/blog/index.php/2007/06/03/wake-on-lan/
OpenFPnet
IES Nicolau Copèrnic