Eseguire applicazioni remote con X11

ArticleCategory: [Choose a category, do not translate this]

UNIX Basics

AuthorImage:[Here we need a little image from you]

[Photo of the Author]

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in en Guido Socher
en to it Kikko

AboutTheAuthor:[A small biography about the author]

Guido ama linux non solo perchè gli interessa sapere come funziona il sistema operativo ma anche perchè c'è altra gente, come lui, interessata agli stessi progetti.

Abstract:[Here you write a little summary]

Molti utenti Linux alle prime armi pensano che il desktop grafico sotto Linux non sia altro che un altro sistema tipo "Windows" in cui far partire delle applicazioni che partiranno in finestre separate. Qualcuno vi avrà detto che si possono avere molti desktop ma dicendo così sembra che l'unica differenza con "Windows" stia solo in questo. Il sistema X Window di Linux (X11) è molto più di questo! é un sistema di tipo network window. Andiamo a scoprire quali nuove e potentissime potenzialità offre.

ArticleIllustration:[This is the title picture for your article]

[Illustration]

ArticleBody:[The article body]

Il concetto di display

Ogni applicazione grafica di X Window legge, allo startup, la variabile d'ambiente DISPLAY per stabilire a quale monitor di quale computer inviare i suoi "grafici". Questo, insieme alle caratteristiche di network dell' X Window rende possibile eseguire applicazioni grafiche da remoto.In altre parole, si può utilizzare la capacità di calcolo della CPU di una macchina mentre invece si utilizza una determinata applicazione in un'altra macchina. La GUI (graphical user interface) apparirà nella macchina nella quale si sta attualmente lavorando. Non ci si accorgerà affatto di lavorare su 2 computer contemporaneamente.
La velocità di connessione è sicuramente importante ma una normale connessione LAN da 10Mbit/s è più che sufficiente.
[run in an application remote]



Ma... a che serve questo sistema?
Ci son molte applicazioni di tipo "network graphics". Alcune società produttrici software usano questo sistema basato sull'X Window per lavorare da remoto su applicazioni che potrebbero trovarsi a migliaia di kilometri di distanza, e voi potreste usare la stessa applicazione per lavorare stando comodamente a casa vostra.
Supponiamo che abbiate 2 computers, di cui uno sia una macchina relativamente potente da, diciamo, 1GHz e l'altro sia un vecchio Pentium a 133 MHz. Potreste sfruttare, in questo caso, la potenza e la velocità della macchina più moderna benchè non l'abbiate davanti a voi. Potrebbe darsi che davanti alla macchina più potente stia seduta vostra sorella, (NDT. la quale sta per esempio chattando!!). Non importa, voi potrete ugualmente sfruttare la velocità di calcolo della macchina utilizzata da vostra sorella.
[display] Ma in che modo è possibile questo?
Tutte le applicazioni per X Window, che potrebbero essere gimp, xterm, konqueror, netscape,... son realmente dei network clients adatti a connettersi ad un server: il server X (NDT: il numero 11 in X11 riguarda la versione di X, che attualmente è...indovinate.. la 11). Il compito del server-X è di dialogare con l'hardware grafico, trasportare le immagini sul vostro schermo e percepire l'input della vostra tastiera e del vostro mouse. I clients (NDT: del server-X) (che son i vostri programmi tipo gimp, netscape etc.) inviano al server le istruzioni su come visualizzare riquadri e pulsanti. In cambio, i clients ricevono i risultati dell'input inviato da tastiera e mouse. Ovviamente è richiesta una qualche forma di autenticazione, altrimenti tutti potrebbero pasticciare nei monitor altrui. Per controllare l'accesso al server-X esistono due programmi:
- xhost: usando questo programma potete permettere a ogni utente su una determinata macchina di inviare dei grafici al vostro schermo. Esempio: vi trovate di fronte alla macchina chiamata philosophus. Per permettere l'accesso di ogni programma dell'host chiamato movietux allo schermo di philosophus si deve digitare il seguente comando:

xhost +movietux


Questo dev'essere scritto nella shell di philosophus
 

- xauth: Si tratta di un tipo di autenticazione molto sofisticata basata sui cookie (NDT: chiavi d'accesso). Qui si possono veramente definire degli accessi a determinate persone. E' molto più sicuro di xhost. Il processo di autenticazione usa un cookie contenuto nel file .Xauthority della home directory dell'utente. Se la macchina remota possiede una chiave (cookie) valida, allora gli sarà garantito l'accesso.Per copiare la chiave dalla macchina davanti alla quale vi trovate (philosophus) sull'host dal quale vorrete far partire un determinato programma (movietux) potete usare uno dei seguenti metodi:.

xauth extract - philosophus:0.0 | ssh movietux /usr/X11R6/bin/xauth merge
oppure
scp ~/.Xauthority movietux:


La procedura che si avrà alla inizializzazione di un programma (client) è la seguente:
  1. Il client ricerca la variabile d'ambiente DISPLAY per trovare il server, altrimenti prova a connettersi sul server di quest'host.
  2. Il server controlla se il client è abilitato alla trasmissione di "immagini". Se il client è autorizzato, allora il server mostra l'immagine a schermo.
La variabile d'ambiente DISPLAY ha la seguente sintassi:

bash:export DISPLAY=hostname:displaynumber.screennumber
tcsh:setenv DISPLAY hostname:displaynumber.screennumber


Non parlerò qui di displaynumber e di screennumber. Normalmente è 0:0. Un esempio per bash potrebbe essere:

export DISPLAY=philosophus:0.0

Far partire un'applicazione remota

Dopo tutta questa teoria passiamo a un esempio pratico. Provatelo. Siamo ancora seduti al computer chiamato philosophus e vogliamo avviare qualcosa da remoto da movietux.
  1. Dì al tuo X-server che i client provenienti da movietux devono essere abilitati a inviare immagini sul tuo schermo:
    xhost +movietux
  2. connettiti all'host remoto movietux:
    slogin -l username movietux
  3. adesso sei loggato a movietux e ogni comando che eseguirai sarà elaborato su movietux
  4. export DISPLAY=philosophus:0.0
  5. fai partire il programma client ad esempio:
    netscape &
Se movietux è una macchina potente ricorda che l'interpretazione delle pagine html in Netscape è molto più rapida di quando vengono interpretate da locale dalla vostra macchina (NDT: philosophus). Allo stesso tempo non vi accorgerete che in realtà, dal punto di vista dell'utilizzo, Netscape non è stato avviato da locale poichè lo "manipolerete" al solito modo con il vostro solito mouse e con la vostra solita tastiera.
Forte! No?

Taking the display with you

Benchè sia semplice avviare un'applicazione da remoto, vi son un altro paio di cosette che devono essere definite per settare la variabile DISPLAY. E' possibile automatizzare il tutto:

>who -ml
movietux!guido pts/3 Oct 26 21:55 (philosophus.tux.org)
 

Se stai usando la bash hai bisogno del seguente script:

# take your display with you at remote login:
# Put it into your ~/.bash_profile
whoami=`who -ml`
remhost=`expr "$whoami" : '.*(\(.*\))'`
if [ -n "$remhost" ]; then
DISPLAY="$remhost":0.0
export DISPLAY
fi

OpenGL

Se le capacità di networking del Sistema X Window son molto buone, invece i grafici son un tantino più lenti poichè i dati vengono inviati tramite un protocollo di rete. In condizioni normali non si dovrebbe notare la differenza.

Grafici complessi e applicazioni che necessitano di velocità di esecuzione come per esempio i giochi con alte risoluzioni son solitamente basati su OpenGL (Open Graphics Library) e GLX (OpenGL Extension to the X Window System). Queste librerie forniscono un interfaccia di programmazione indipendente che permette l'accesso diretto all'hardware di accelerazione 3D delle schede video. Ovvero: l'applicazione invia la descrizione di un oggetto in forma di punti. linee e poligoni alla scheda video e tutta l'operazione di rendering viene infine compiuta dallo stesso hardware grafico. In questo modo vengono elaborati velocemente grafici complessi.

Attualmente molti driver di schede video(X servers) non supportano hardware-accelerati GLX/OpenGL per applicazioni remote. L'accelerazione è supportata solamente per applicazioni da locale. Il risultato è che le applicazioni OpenGL lanciate da remoto potranno a malapena partire e nel caso in cui partissero sarebbero veramente lente. Costituiscono una eccezione i driver proprietari di NVidia. Essi hanno un'interfaccia di rendering diretto che supporta il rendering indiretto per le applicazioni remote.

Conclusioni

L'utilizzo della potenza di calcolo della vostra rete è molto facile con X11. Potrete lavorare con applicazioni remote come se venissero eseguite da locale. L'unica differenza sta nel fatto che potreste vedere i files contenuti nella home directory della macchina remota. In ogni caso, con NFS e NIS installati, potrete nascondere anche questa piccola differenza ed utilizzare interamente la potenza di calcolo della CPU della macchina più veloce senza pensarci.

Links

X11 system, x.org
xfree86.org l' X11 system usato in Linux

Nota del Traduttore

Le parti tra parentesi precedute da NDT (Nota Del Traduttore) son delle precisazioni introdotte dal Traduttore, e gli eventuali errori tecnici non son imputabili all'Autore originario dell'articolo in questione, ovvero Guido Socher.