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
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:
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:
- wakeonlan
- 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 :(