Indice Guide: differenze tra le versioni

m
Riga 1: Riga 1:
==Introduzione==
==Preparazione: installazione dei programmi==


Il Wake On Lan � una funzione molto utile che permette di accendere il proprio computer a distanza dall'interno della propria rete locale. Molte schede
Per configurare i tasti multimediali da linux servono essenzialmente due programmi: '''<code>xev</code>''' e '''<code>xmodmap</code>'''. Prima di tutto, quindi, dobbiamo installarli: andiamo a visitare il sito * [http://packages.debian.org packages.debian.org] e clicchiamo il link "Ricerca nel contenuto dei pacchetti". Nel campo "Parola chiave" inseriamo ad esempio xev e scegliamo nel menu a tendina "Distribuzione" il nostro ramo Debian. In questo modo appuriamo in quale pacchetto � contenuto il programma xev (e ugualmente il programma xmodmap). Fatto questo possiamo procedere ad installare il pacchetto con aptitude.
di rete, soprattutto gli ultimi chip integrati, supportano questa caratteristica che in alcuni casi si pu� rivelare davvero molto utile. Immaginate ad esempio di avere due pc in due stanze/uffici diverse dello stesso piano o perch� no, proprio in due piani diversi e di essere impegnati sulla prima postazione.. vi ricordate per� che avete bisogno di andare a controllare un documento che sta sull'altro computer e pensate di aprire vnc ma purtroppo la seconda postazione e' ancora spenta quindi non vi potete collegare.. a questo punto solo una cosa vi pu� aiutare: il '''MagicPacket(tm)'''!




==Software necessario==
==Configurazione layout tasti==


Avremmo bisogno di due programmi:
Dopo aver installato questi programmi la prima cosa da fare � scoprire i keycode relativi ai tasti che ci interessano e questo verr� fatto con xev. Apriamo una console e scriviamo <code>xev</code>, a programma lanciato premiamo il tasto che ci interessa configurare e dovremmo avere un output del genere
* ethtool
* etherwake


Per installarli � sufficiente un:
<pre> KeyRelease event, serial 29, synthetic NO, window 0x1c00001,
 
      root 0x75, subw 0x0, time 1436703, (287,442), root:(292,515),
<pre>
      state 0x0, keycode 236 (keysym 0x0, NoSymbol), same_screen YES,
# apt-get install ethtool etherwake
      XLookupString gives 0 bytes:
</pre>
 
 
==Utilizzo di ethtool==
 
All'avvio del computer entrate nel BIOS e attivate il Wake-On-Lan;  solitamente trovate l'impostazione sotto la voce
"Power Management Setup".
 
Una volta avviato Linux lanciate:
<pre>
# ethtool eth0
</pre>
</pre>


{{ Warningbox | in questo e nei futuri esempi, sostituite eth0 con il nome corrispondente alla scheda di rete che state usando! }}
da queste righe otteniamo il keycode (nell'esempio 236) e notiamo anche che non gli � associato nessun nome (<tt> ..., NoSymbol</tt>). Adesso dobbiamo associare un nome al tasto riferito da quel keycode. Quest'operazione deve essere fatta modificando il file <tt>~/.xmodmaprc</tt> che se non esiste va creato.
 
 
A questo punto dovreste vedere una serie di informazioni tra cui qualcosa di simile a questo:
<pre>
        Supports Wake-on: g
        Wake-on: d
</pre>


La voce "Supports Wake-on" specifica i metodi di wake-on supportati dalla vostra scheda di rete; se non la vedete � un brutto segno!
In questo file vanno inserite righe del tipo
La voce "Wake-on" specifica il metodo in uso; d sta per disabled mentre g � quello che andremo ad usare (Wake on MagicPacket(tm)). ''Se per qualche motivo avete gi� la voce "Wake-on" impostata a "g" potete terminare qui la lettura di questa pagina ;)''


<pre>keycode num = nome</pre>


Per impostare il metodo a "g" assicuratevi di avere la lettera "g" tra quelle che seguono la voce "Supports Wake-on" e poi digitate:
dove num � il keycode ottenuto con <code>xev</code> e la stringa nome dovr� essere del tipo FXX dove al posto di XX dobbiamo inserire un numero maggiore di dodici.
<pre>
Adesso lanciando da shell <code>xmodmap ~/.xmodmaprc</code> e rilanciando <code>xev</code> dovremmo ottenere:
# ethtool -s eth0 wol g
</pre>


Se rilanciate
<pre>KeyPress event, serial 26, synthetic NO, window 0x2400001,
<pre>
    root 0x75, subw 0x0, time 267243, (597,651), root:(603,723),
# ethtool eth0
    state 0x0, keycode 236 (keysym 0xffca, F13), same_screen YES,
    XLookupString gives 0 bytes:
</pre>
</pre>


dovreste avere "'''Wake-on: g'''".
Abbiamo abbinato al tasto un nome (nell'esempio F13).  
 
 
A questo punto spegnendo il computer lo potrete accendere da un'altra postazione usando etherwake.
 
==Utilizzo di etherwake==
 
etherwake serve per inviare il MagicPacket(tm) alla scheda di rete del pc che volete accendere, accendendolo.
Ovviamente, dal momento che il pc � spento non vi potete basare sul indirizzo IP; dovrete usare il MAC Address.
 
Per trovare il MAC Address del pc di destinazione lanciate da quest'ultimo il comando:
<pre>
# ifconfig
</pre>


ed individuate la riga:
==Associazione programmi==
<pre>
eth0      Link encap:Ethernet  '''HWaddr 00:50:6D:EA:A2:DC'''
</pre>


Il MAC Address e' la parte che segue la dicitura "HWaddr" ovvero, nel nostro esempio, "00:50:6D:EA:A2:DC" (senza virgolette).
Ora potremmo voler far eseguire un'azione al tasto configurato, questa cosa la si pu� fare in svariati modi: se si ha gnome dal menu ''Desktop -> Preferenze -> Scorciatoie da tastiera'' associando al tasto un'azione predefinita altrimenti con un programma che permette di associare a dei tasti o ad una combinazione di tasti una determinata azione. Di questi ultimi ne esistono vari: <code>xbindkeys</code>, <code>sven</code>, <code>lineak</code> etc. In questo tutorial useremo <code>xbindkeys</code> la cui configurazione � molto semplice.


Anzitutto bisogna installarlo:


Segnatevi il MAC Address e dopo aver impostato il metodo di wake-on a "g" sul pc di destinazione, spegnetelo e recatevi sull'altra postazione.
<pre> # apt-get install xbindkeys </pre>
A questo punto lanciate:


Fatto ci bisogna modificare il file <tt>~/.xbindkeysrc</tt>, che formato da righe del tipo:
<pre>
<pre>
# etherwake <mac address> -D
    "comando o programma da eseguire"
 
    tasto o combinazione di tasti associata
esempio:
# etherwake 00:50:6D:EA:A2:DC -D
</pre>
</pre>
 
per esempio
L'opzione -D serve solo ad avere in ouput qualche informazione in pi� sull'operazione.
Se tutto � andato per il verso giusto, il secondo pc dovrebbe essersi acceso..
 
 
==Ultimi ritocchi==
 
Ora, se il pc � partito, noterete che lanciando nuovamente "ethtool eth0" il metodo di wake-on � tornato a "d".
Per far si che ogni volta che accendete il computer il metodo usato sia "g" ci sono varie strade; di seguito spiegher� quella che ho scelto ovvero
la modifica del file di avvio della rete.
 
Aprite il file '''/etc/init.d/networking''' e modificatelo come segue:
<pre>
<pre>
#!/bin/sh
     "firefox"
#
     Control+F13 // si potevano usare anche Shift o Alt
# manage network interfaces and configure some networking options
 
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
 
if ! [ -x /sbin/ifup ]; then
    exit 0
fi
 
spoofprotect_rp_filter () {
    # This is the best method: turn on Source Address Verification and get
    # spoof protection on all current and future interfaces.
   
    if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then
        for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
            echo 1 > $f
        done
        return 0
    else
        return 1
    fi
}
 
spoofprotect () {
    echo -n "Setting up IP spoofing protection: "
    if spoofprotect_rp_filter; then
        echo "rp_filter."
    else
        echo "FAILED."
    fi
}
 
ip_forward () {
    if [ -e /proc/sys/net/ipv4/ip_forward ]; then
        echo -n "Enabling packet forwarding..."
        echo 1 > /proc/sys/net/ipv4/ip_forward
        echo "done."
    fi
}
 
syncookies () {
    if [ -e /proc/sys/net/ipv4/tcp_syncookies ]; then
        echo -n "Enabling TCP/IP SYN cookies..."
        echo 1 > /proc/sys/net/ipv4/tcp_syncookies
        echo "done."
    fi
}
 
doopt () {
    optname=$1
    default=$2
    opt=`grep "^$optname=" /etc/network/options`
    if [ -z "$opt" ]; then
        opt="$optname=$default"
    fi
    optval=${opt#$optname=}
    if [ "$optval" = "yes" ]; then
        eval $optname
    fi
}
 
case "$1" in
    start)
doopt spoofprotect yes
        doopt syncookies no
        doopt ip_forward no
 
        echo -n "Configuring network interfaces..."
        ifup -a
ethtool -s eth0 wol g
echo "done."
;;
    stop)
        if sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\1 \2/p' /proc/mounts |
          grep -q "^/ nfs$"; then
            echo "NOT deconfiguring network interfaces: / is an NFS mount"
        elif sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\1 \2/p' /proc/mounts | 
          grep -q "^/ smbfs$"; then
            echo "NOT deconfiguring network interfaces: / is an SMB mount"
elif sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\2/p' /proc/mounts |
          grep -qE '^(nfs[1234]?|smbfs|ncp|ncpfs|coda|cifs)$'; then
            echo "NOT deconfiguring network interfaces: network shares still mounted."
        else
            echo -n "Deconfiguring network interfaces..."
            ifdown -a --exclude=lo
    echo "done."
        fi
;;
     force-reload|restart)
doopt spoofprotect yes
        doopt syncookies no
        doopt ip_forward no
        echo -n "Reconfiguring network interfaces..."
        ifdown -a --exclude=lo
        ifup -a
ethtool -s eth0 wol g
echo "done."
;;
     *)
echo "Usage: /etc/init.d/networking {start|stop|restart|force-reload}"
exit 1
;;
esac
 
exit 0
 
</pre>
</pre>
Modificato il file bisogna lanciare da shell <code>xbindkeys -f ~/.xbindkeysrc</code> e tutto dovrebbe funzionare. Ora per dobbiamo fare in modo che il mapping dei tasti multimediali e l'associazione del programma tramite <code>xbindkeys</code> avvenga ogni volta che facciamo il login.


Le uniche due modifiche che ho fatto sono le due aggiunte del comando '''ethtool -s eth0 wol g''' nella sezione di start e restart delle interfacce di rete. Copiate solo quel comando nel vostro file nel punto corrispondente; evitate di fare il copia e incolla dell'intero file.
Se abbiamo Kde dobbiamo creare uno script del tipo
 
{{ Warningbox | gli utenti k/ubuntu hanno una versione leggermente diversa; il comando sopracitato va messo dopo il blocco "if" }}
 
'''Esempio estratto dal file networking di kubuntu:'''
<pre>
<pre>
        if [ "$VERBOSE" != no ]; then
    #!/bin/bash
            ifup -a
    xmodmap ~/.xmodmaprc
        else
    xbindkeys -f ~/.xbindkeysrc
            ifup -a >/dev/null 2>&1
        fi
ethtool -s eth0 wol g
</pre>
</pre>
salvarlo ad esempio come <code>mapping</code> dargli i permessi di esecuzione <code>chmod a+x mapping</code> e copiarlo in <tt>~/.kde/Autostart</tt>.


'''Metodo alternativo'''
Se abbiamo gnome dopo aver creato lo script, dobbiamo creare da root un link allo script in <tt>/usr/bin</tt>:
 
Un metodo alternativo che non richiede la modifica dello script di avvio � quello di inserire l'abilitazione della funzione wake quando l'interfaccia
di rete viene tirata su. Per fare questo si pu� inserire l'istruzione '''ethtool -s eth0 wol g''' direttamente in '''/etc/network/interfaces'''. Ad esempio:
 
<pre>
auto eth0
iface eth0 inet static
        address 192.168.1.2
        netmask 255.255.255.0
        gateway 192.168.1.1
</pre>
diventa
<pre>
<pre>
auto eth0
    # cd /usr/bin
iface eth0 inet static
    # ln -s path_script/mapping mapping
        address 192.168.1.2
        netmask 255.255.255.0
        gateway 192.168.1.1
        up ethtool -s eth0 wol g
</pre>
</pre>
e poi da ''Desktop -> Preferenze -> Sessioni'' nella scheda ''Startup Program'' aggiungere <code>mapping</code>.


Notare l'aggiunta della direttiva '''up''' per l'interfaccia '''eth0'''
'''Nota''': per gli utenti gnome dopo aver modificato <tt>.xmodmaprc</tt>, rifacendo il login potrebbe apparire una schermata del tipo
 
==Conclusioni==


La tecnologia Wake-On-Lan si pu� rendere utile solo nei rari casi in cui si disponga di una LAN con postazioni molto distanti tra loro, tuttavia in tali situazioni si rivela una risorsa davvero preziosa che pu� aiutare tra le altre cose a risparmiare energia, spegnendo i computer non usati "perch� tanto poi ...".
[[Immagine:loadmap.jpg|center]]


se scegliamo di caricare la modmap in questo modo dallo script <code>mapping</code> dobbiamo eliminare
la riga <tt>xmodmap ~/.xmodmaprc</tt>.


---- [[Utente:Virtual DarKness|Virtual DarKness]] 16:58, Giu 23, 2005 (EDT)
----
[[Categoria:Networking]]
[[Utente:Itbhp|itbhp]] 11:07, 21 Apr 2006 (EDT)
[[Categoria:Desktop]][[Categoria:Hardware]]
1 487

contributi