si accettano suggerimenti per il titolo

storie, pensieri e progetti tra chimica, informatica, attualità e cazzeggio puro

Linux, nForce e wake on lan

Abilitare il wake on lan su Linux non è immediato. Il motivo principale è che quando si spegne una macchina con Linux, la macchina viene veramente spenta, tutta. Nel nostro caso, vuol dire che la scheda di rete viene spenta e disattivata e quindi non può rimanere all’ascolto in attesa del cosiddetto “magic packet” necessario per avviare il PC.
Mentre nel 99,9% dei casi questa è una buona cosa, perché viene risparmiata corrente, se bisogna accendere un computer da remoto questo comportamento impedisce la buona riuscita dell’operazione.

Per modificare questo comportamento, è necessario modificare lo script “halt”, che è quello che viene invocato quando si spegne il PC.
Come utente root, quindi, aprire con un editor di testi il file /etc/init.d/halt (questo è il suo percorso in Debian, in altre distribuzioni potrebbe trovarsi da qualche altra parte) e modificarlo.
Se nel vostro script avete una riga fatta in questo modo:

halt -d -f -i $poweroff $hddown

dovrete togliere il parametro -i perché tutto funzioni.
Se invece avete una riga fatta in questo modo:

halt -d -f $netdown $poweroff $hddown

dovrete andare all’inizio del file, cercare la riga dove viene inizializzata la variabile $netdown (questo è il caso di Debian) e cambiarne il valore da “yes” a “no”.

In questo modo abbiamo fatto sì che la nostra scheda di rete venga mantenuta attiva durante lo spegnimento, in modo da poter ricevere il magic packet. Ma non basta: la scheda di rete va esplicitamente impostata per accettare il magic packet (suppongo per questioni di sicurezza).
Per fare questo avremo bisogno del programma ethtool, presente all’interno del pacchetto omonimo. Dopo averlo installato, per abilitare il wake on lan sulla scheda di rete bisognerà dare (come root) il comando:

ethtool -s eth0 wol g

Questo comando abiliterà il wake on lan per il successivo riavvio. Se volete abilitare il wake on lan sempre, e non solo per il riavvio successivo, sarà necessario o creare uno script da far eseguire mentre la macchina è accesa, oppure aggiungere questa riga:

up ethtool -s eth0 wol g

al file /etc/network/interfaces, subito sotto la direttiva iface per la scheda di rete interessata. Ad esempio:

iface eth0 inet dhcp
   up ethtool -s eth0 wol g

E questo è tutto per quanto riguarda l’abilitazione del wake on lan con Linux.

Se però possedete una scheda madre con chipset nForce, la procedura scritta sopra non basta per far accendere la macchina. Il problema deriva dal driver forcedeth del kernel, usato per far funzionare le schede di rete integrate nelle schede madri con chipset nForce. Questo driver, durante lo spegnimento, scrive il mac address della scheda di rete in una specie di buffer nella scheda stessa, solo al contrario.
Se quindi, per esempio, volete usare il wake on lan su una scheda con mac address 0a:1b:2c:3d:4e:5f non dovrete digitare:

wakeonlan 0a:1b:2c:3d:4e:5f

ma piuttosto:

wakeonlan 5f:4e:3d:2c:1b:0a

per far avviare la macchina. Non so perché il driver abbia questo comportamento, e soprattutto non so perché non sia stato cambiato nel corso degli anni, ma così è.

2 commenti per "Linux, nForce e wake on lan"

Grande aiuto!!! Non sapevo questa cosa di linux, adesso finalmente funziona a dovere il wake on Lan!! Grazie

Scrivi un commento

L'indirizzo e-mail non sarà pubblicato. I campi obbligatori sono marcati con *


Codice HTML consentito: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>