|
Guido Socher (homepage) L'autore: 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. Tradotto in Italiano da: Kikko <kikkoxyz/at/yahoo.it> |
Eseguire applicazioni remote con X11Premessa:
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.
|
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.
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
- 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:
bash:export DISPLAY=hostname:displaynumber.screennumber
tcsh:setenv DISPLAY hostname:displaynumber.screennumber
export DISPLAY=philosophus:0.0
# take your display with you at remote login:
# Put it into your ~/.login file
set whoami=`who -ml`
set remhost=`expr "$whoami" : '.*(\(.*\))'`
if ( "$remhost" != "" ) then
setenv DISPLAY "$remhost":0.0
endif
Lo script opera ricevendo il nome dell'host remoto dal comando "who -ml". Questo comando dovrebbe restituire qualcosa del genere:
>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
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.
Webpages maintained by the LinuxFocus Editor team
© Guido Socher "some rights reserved" see linuxfocus.org/license/ http://www.LinuxFocus.org |
Translation information:
|
2005-01-14, generated by lfparser_pdf version 2.51