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.
Són necessaris un certs requeriments per tal que WOL funcioni:
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:
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
Entre d'altres als repositoris d'ubuntu es poden trobar les següents aplicacions:
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.
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:
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
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
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
$ pci-config El programa «pci-config» no està instal·lat actualment. Podeu instal·lar-lo si escriviu: sudo apt-get install nictools-pci
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
Vegeu també ACPI.
Recursos:
$ 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
Consulteu:
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.
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):
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):
Recursos:
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:
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:
Consulteu:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/288053
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 :(