Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > f1098342ec4a2b28475e34123ce17201 > files > 254

howto-html-it-9.1-0.5mdk.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
 <TITLE>Framebuffer HOWTO: Utilizzare i framebuffer "multi-headed"</TITLE>
 <LINK HREF="Framebuffer-HOWTO-15.html" REL=next>
 <LINK HREF="Framebuffer-HOWTO-13.html" REL=previous>
 <LINK HREF="Framebuffer-HOWTO.html#toc14" REL=contents>
</HEAD>
<BODY>
<A HREF="Framebuffer-HOWTO-15.html">Avanti</A>
<A HREF="Framebuffer-HOWTO-13.html">Indietro</A>
<A HREF="Framebuffer-HOWTO.html#toc14">Indice</A>
<HR>
<H2><A NAME="s14">14. Utilizzare i framebuffer "multi-headed"</A></H2>

<P>
<P>Questa parte del documento &egrave; stata donata molto gentilmente da Frederick
A. Niles, che conserva tutti i diritti per le informazioni incluse in
questa sezione dell'HOWTO.
<P>
<H2><A NAME="ss14.1">14.1 Introduzione</A>
</H2>

<P>L'obiettivo principale di questo documento &egrave; di introdurti all'avvio
di una configurazione "dual head" [N.d.T.: ossia con due o pi&ugrave; schede 
video] di Linux. Per quanto il processo sia piuttosto semplice, ci son
molte cose che uno pu&ograve; sbagliare lungo il percorso.
<P>L'esempio su cui mi concentrer&ograve; &egrave; l'avvio di un X-server su di un
secondo monitor. L'ho trovata cosa simpatica in quanto si possono
trovare vecchi, larghi monitor da 19" e 21" a frequenza fissa che la
gente da via perch&eacute; non pu&ograve; pi&ugrave; utilizzarli. In questo modo puoi
avviare una piccola multifrequenza e quindi usare X su un bel monitor
grande.
<P>Per favore tieni conto che il supporto per il dual head &egrave; attualmente
in sviluppo, quindi queste informazioni cambiano rapidamente.
Qualsiasi punto di questo documento pu&ograve; essere datato e semplicemente
scorretto nel momento in cui lo stai leggendo.
<P>** ATTENZIONE ** Questo documento &egrave; stato scritto prima di qualsiasi
rilascio dell'XFree86 4.0. Se lo stai leggendo e l'XFree86 4.0 &egrave; gi&agrave;
stato rilasciato molte cose possono essere cambiate. Prova ad ottenere
una nuova versione di questo documento se disponibile.
<P>
<H2><A NAME="ss14.2">14.2 Per contattare l'autore</A>
</H2>

<P>Per questo documento, sar&ograve; molto lieto se sar&ograve; contattato. Senza i
vostri suggerimenti e proposte, questo documento non esisterebbe. Per
questo, inviatemi aggiunte, commenti e critiche a:
Frederick.A.Niles@gsfc.nasa.gov.
Frederick.A.Niles@gsfc.nasa.gov.
<P>
<H2><A NAME="ss14.3">14.3 Contributori</A>
</H2>

<P>Le seguenti persone han contribuito a questo mini-HOWTO.
<P>*  Petr Vandrovec <CODE>vandrove@vc.cvut.cz</CODE>
<P>*  Andreas Ehliar <CODE>ehliar@lysator.liu.se</CODE> (x2x)
<P>*  Marco Bizzarri <CODE>m.bizzarri@icube.it</CODE> (X server multipli)
<P>
<H2><A NAME="ss14.4">14.4 Standard Disclaimer (in lingua originale)</A>
</H2>

<P>No liability for the contents of this document can be accepted.  Use
the concepts, examples and other content at your own risk.  As this
is a new edition of this document, there may be errors and
inaccuracies that could be damaging to your system.  Proceed with
caution, and although this is highly unlikely, I don't take any
responsibility for that.
<P>[** Traduzione italiana **]
<P>Nessuna responsibilit&agrave; per il contenuto di questo documento sar&agrave;
accettata. Utilizza i concetti, esempi ed altri contenuti a tuo
proprio rischio. In quanto questa &egrave; una nuova edizione del documento,
vi possono essere errori ed imperfezioni tali da danneggiare il tuo
sistema. Procedi con cautela e, sebbene questo sia alquanto
inverosimile, non mi prender&ograve; alcuna responsabilit&agrave; se ci&ograve; accadr&agrave;.
<P>
<H2><A NAME="ss14.5">14.5 Copyright Information (in lingua originale)</A>
</H2>

<P>This section of the document is copyrighted (c)1999 Frederick Niles and distributed
under the following terms:
<P>*  Linux HOWTO documents may be reproduced and distributed in whole or
in part, in any medium physical or electronic, as long as this
copyright notice is retained on all copies. Commercial
redistribution is allowed and encouraged; however, the author would
like to be notified of any such distributions.
<P>*  All translations, derivative works, or aggregate works
incorporating any Linux HOWTO documents must be covered under this
copyright notice.  That is, you may not produce a derivative work
from a HOWTO and impose additional restrictions on its
distribution. Exceptions to these rules may be granted under
certain conditions; please contact the Linux HOWTO coordinator at
the address given below.
<P>*  If you have questions, please contact, the Linux HOWTO coordinator,
at linux-howto@sunsite.unc.edu
<P>[** Traduzione italiana **]
<P>Questa sezione del documento &egrave; copyright (c)1999 di Frederick Niles e
distribuita sotto i seguenti termini:
<P>*  I documenti Linux HOWTO possono essere riprodotti e distribuiti in
tutto o in parte, su qualsiasi mezzo fisico od elettronico, finch&eacute;
questa nota di copyright venga mantenuta su tutte le copie.
Ridistribuzioni commerciali sono permesse ed incoraggiata;
comunque, l'autore gradirebbe ricevere notifica di questo tipo di
distribuzioni.
<P>*  Tutte le traduzioni, lavori derivati o includenti qualsiasi
documento Linux HOWTO devono essere tutelate dalla stessa nota di
copyright. Ossia, non puoi produrre un lavoro derivato da un HOWTO
ed imporvi restrizioni addizionali alla sua distribuzioni.
Eccezioni a queste regole possono essere garantiti sotto certe
condizioni; per favore contatta il coordinatore degli HOWTO Linux
all'indirizzo indicato pi&ugrave; avanti.
<P>*  Se hai domande, per favore contatta il coordinatore degli HOWTO
Linux presso linux-howto@sunsite.unc.edu
<P>
<H2><A NAME="ss14.6">14.6 Che hardware &egrave; supportato?</A>
</H2>

<P>La maggior parte delle schede grafiche assume d'essere l'unica in un
sistema e sono permanentemente impostate con l'indirizzamento
dell'adattatore primario per lo schermo. Ci sono poche eccezioni.
<P>*  Schede Matrox: Queste includono le schede video Matrox Millennium,
Matrox Millennium II, Matrox Mystique, Matrox Mystique 220, Matrox 
Productiva G100, Matrox Mystique G200, Matrox Millennium G200 e
Matrox Marvel G200 
<P>*  MDA: Questa include gli adattatori grafici monocromatici Hercules
tra le altre.
Questa &egrave; solo per un supporto testuale sul seconda uscita.
<P>Nota: &egrave; solo il secondo adattatore a dover essere uno dei precedenti.
<P>
<H2><A NAME="ss14.7">14.7 Supporto commerciale</A>
</H2>

<P>Questo mini-HOWTO principalmente riguarda il free software. Comunque,
ci sono X server commerciali con incluso il supporto per il
"multi-head". Tra questi Metro Link's (www.metrolink.com) Metro-X e
Xi Graphics' (www.xig.com) Accelerated-X.
<P>
<H2><A NAME="ss14.8">14.8 Ottenere tutto il necessario.</A>
</H2>

<P>Hai bisogno dei seguenti patch e programmi:
<P>* Il programma "fbset"
prova: 
<PRE>
http://www.cs.kuleuven.ac.be/~geert/bin/
</PRE>

(nota: questo programma &egrave; incluso nella RedHat 6.0)
<P>* "fbaddon", patch del Kernel Linux per dual head Matrox
prova: 
<PRE>
ftp://platan.vc.cvut.cz/pub/linux/matrox-latest/
</PRE>
<P>* Il programma "con2fb"
prova: 
<PRE>
ftp://platan.vc.cvut.cz/pub/linux/matrox-latest/
</PRE>
<P>* Il frame buffer server X11 XF86_FBDev. Lo si trova come
componente standard di XFree86 3.3.1.
<P>
<H2><A NAME="ss14.9">14.9 Iniziamo</A>
</H2>

<P>La prima cosa che dovrai fara sar&agrave; patchare una copia delle sorgenti
di Linux con la patch "fbaddon". Quindi dovrai configurare il kernel
ed attivare il supporto framebuffer. Se hai schede Matrox attiva il
supporto per il driver unificato accelerato Matrox cos&igrave; come il tipo
particolare di scheda in tuo possesso. Non attivare il supporto per
il frame buffer VESA. Questo potrebbe causare un conflitto. Attiva
(ovviamente) il supporto per il multi-head. Crea il kernel e riavvia.
<P>Ora dovrai installare il programma "fbset" e leggere attentamente
tutta la documentazione su come regolare le impostazioni. L'utilizzo
di un file "/etc/fb.modes" &egrave; caldamente consigliato una volta che
avrai deciso le tue impostazioni. Il programma fbset include uno
script in Perl per convertire il tuo file XF86Config nelle
impostazioni fb.modes. Ho incluso il mio script in octave/Bourne
shell per convertire il tuo file XF86Config nelle Appendici A &amp; B.
<P>Ti deve prima diventare agevole l'utilizzo del device frame buffer su
di un monitor, comprendendo ogni problematica che pu&ograve; spuntar fuori
dal tuo impostare che non abbia nulla a che vedere col supporto per
il multi-head. Questo pu&ograve; risparmiare un mucchio di grattamenti di
testa successivamente.
<P>Mi sto per concentrare nella mia spiegazione su come avviare X sul
secondo schermo rendendo molte altre configurazioni semplicemente ed
ovviamente presupposti della procedura stessa.
<P>
<H3>Spostiamo una console...</H3>

<P>Compila il programma "con2fb". Se lo lanci senza alcun argomento
otterrai il seguente messaggio per l'utilizzo:
<P>"usage: con2fb fbdev console".
<P>Quindi, un comando esemplificativo potrebbe essere "con2fb /dev/fb1
/dev/tty6" per spostare la console virtuale numero sei sul secondo
schermo. Usa Ctrl-Alt-F6 per spostarti su tal console e vedere che per
davvero spunta sul secondo schermo.
<P>
<H3>Utilizzare "fbset" per regolare le impostazioni di questo secondomonitor</H3>

<P>"fbset" regola le impostazioni solo sullo schermo in cui lo lanci. Per
questo, dovrai fare attenzione ad usare la flag "-fb" sul secondo
schermo. In particolare, se non altro probabilmente vorrai di
impostare almeno la risoluzione virtuale verticale pari alla tua reale
risoluzione verticale.
<P>esempio "fbset -fb /dev/fb1 -vyres 600"
<P>Questo rallenter&agrave; pesantemente la modalit&agrave; testuale, ma X sarebbe
sgradevole senza di questo.
<P>
<H3>Impostare X per il supporto Frame Buffer.</H3>

<P>Il file framebuffer.txt spiega questo meglio di quanto possa io, ma
qui ci son due punti importanti.
<P>Assicurati d'aver impostato il collegamento per "X" in modo che punti
a "XF86_FBDev".
<P>Quindi dovrai aggiungere una sezione "monitor" al tuo file XF86Config
per il device frame buffer. Qui c'&egrave; un esempio:
<P>
<PRE>
# Il server Frame Buffer

Section "Screen"
    Driver      "fbdev"
    Device      "Millennium"
    Monitor     "NEC MultiSync 5FGp"
    Subsection "Display"
        Depth       8
        Modes       "default"
        ViewPort    0 0
    EndSubsection
    Subsection "Display"
        Depth       16
        Modes       "default"
        ViewPort    0 0
    EndSubsection
    Subsection "Display"
        Depth       24
        Modes       "default"
        ViewPort    0 0
    EndSubsection
    Subsection "Display"
        Depth       32
        Modes       "default"
        ViewPort    0 0
    EndSubsection
EndSection
</PRE>
<P>Utilizza le modalit&agrave; di "default" in quanto non credo che qualsiasi
altra possa funzionare con frame buffer per Matrox.
<P>
<H3>Provare a far partire l'X server sul secondo schermo.</H3>

<P>Imposta la variabile FRAMEBUFFER al secondo frame buffer.
<P>"export FRAMEBUFFER=/dev/fb1"
<P>oppure
<P>"setenv FRAMEBUFFER /dev/fb1"
<P>Dovrai avviare l'X server in modo che si combini con la profondit&agrave; di
colore selezionata e che appaia sullo stesso schermo da cui l'hai
avviato.
<P>esempio "startx -- :0 -bpp 16 vt06"
<P>Questo esempio avvia un X "zero" sulla console virtuale sei con 16 bit
di colore. Utilizzare ":1" all'avvio di un altro server X per l'altro
frame buffer ti permetter&agrave; d'avere due server X avviati.
<P>
<H2><A NAME="ss14.10">14.10 Sommario</A>
</H2>

<P>I passi necessari per avere un X server attivo su un secondo schermo
possono essere riassunti come segue:
<P>* Recuperare la patch del kernel, fbset e con2fb.
<P>* Applicare la patch al kernel, configurare, ricompilare e riavviare.
<P>* Aggiungere la sezione XF86_FBDev al file XF86Config ed impostare il
collegamento per X.
<P>Quindi, ad ogni riavvio:
<P>* Spostare una console.      es. "con2fb /dev/fb1 /dev/tty6"
<P>* Regolare le impostazioni   es. "fbset -fb /dev/fb1 1280x1024"
<P>* Impostare la FRAMEBUFFER   es. "export FRAMEBUFFER=/dev/fb1"
<P>* Lanciare il server X       es. "startx -- -bpp 16 vt06"
<P>Puoi automatizzare tutto questo per ogni riavvio grazie ad un alias
della shell. Dev'essere un alias e non uno script della shell in
quanto deve rilevare il corrente numero della console. Questo &egrave; il mio
alias per la C-shell per avviare X in un secondo monitor a frequenza
fissa:
<P>
<PRE>
alias startxfb = "
setenv FRAMEBUFFER /dev/fb\!*;    # Imposta la var env all'arg del cmd.
con2fb $FRAMEBUFFER /dev/$tty;    # Sposta fb sulla corrente tty.
fbset -fb $FRAMEBUFFER 1280x1024@62;  # Favoriti da /etc/fb.modes
startx -- :\!* -bpp 16 vt0`echo $tty | cut -dy f 2`' # X su questa tty.
"
</PRE>
<P>Nel mio file .cshrc questo &egrave; tutto sulla stessa riga senza commenti,
ma &egrave; pi&ugrave; facile da leggere con gli a capi e con i commenti inseriti.
Devo semplicemente dare il numero del frame buffer come un argomento e
partir&agrave; senza problemi.
<P>Non son sicuro su come far lo stesso alias con la bash. Non so come
determinare la corrente tty o passare l'argomento ad un alias con la
bash. Se qualcuno me lo far&agrave; sapere l'aggiunger&ograve; qui. Comunque, puoi
usare il comando "tty" per ottenere il nome della corrente VT a quindi
semplicemente realizzare due alias separati per ogni server X.
<P>
<H2><A NAME="ss14.11">14.11 Altre Note e Problemi</A>
</H2>

<P>* Sia "fbset" che "startx" DEVONO essere lanciati dallo stesso frame
buffer poich&eacute; questi ne son soggetti. Questo pone seri limiti a come
questi comandi possano essere automatizzati tramite script.
<P>* XFree86 4.0 avr&agrave; un "corretto" supporto per pi&ugrave; di un'uscita video,
ma attualmente il 3.3.1 non ce l'ha. Puoi lanciare due server con
3.3.1 ed usare x2x per passare da uno all'altro, in ogni caso... 
(vedi il prossimo paragrafo)
<P>* Il frame buffer inattivo tratterr&agrave; l'ultima immagine di quand'era
attivo, nessun aggiornamento cio&egrave; avverr&agrave;.
<P>* Il monitor che non &egrave; selezionato non sempre mantiene la sua
condizione quando non &egrave; attivo. (Ma di solito lo fa.)
<P>* Geert Uytterhoeven (il mantenitore del frame buffer) e Linus
Torvalds non sono d'accordo con gli attuali cambiamenti al supporto
per console multi-head detti "frame buffer per VT" (ossia fbaddon)
quindi questi non saranno mai nel principale ramo del kernel.
(Questo &egrave; stato sentito di terza mano e potrebbe essere
clamorosamente falso.)
<P>* Se "non rispetti le regole" ed avvii il server X (lanci "startx") da
uno schermo differente, la macchina potrebbe eventualmente crashare
in malo modo con gli input del mouse e della tastiera tutti
mischiati tra loro.
<P>* La documentazione framebuffer.txt nelle sorgenti del kernel spiega
che puoi usare le impostazioni Modeline nel file XF86Config
direttamente quanto lanci X. L'utilizzare il frame buffer per Matrox
sembra forzare il server X a cestinarle tutte quante. Quindi puoi
solo avere una ("predefinita") impostazione per volta (lo stesso che
hai nella modalit&agrave; testuale).
<P>* Il XF86_FBDev non &egrave; accelerato. Comunque, ci son patch per il
supporto per Matrox accelerato presso 
<PRE>
http://www.in-berlin.de/User/kraxel/xfree86/
</PRE>
<P>
<H3>Riuscire a far funzionare "init level five" (cio&egrave; xdm/gdm)</H3>

<P>Non son ancora riuscito ad immaginarmi un modo per avviare nel 
livello 5 di init con una configurazione a doppio schermo (ed 
effettivamente avere il server su uno o l'altro degli schermi od 
entrambi). Mentre sembra abbastanza semplice aggiungere una riga al
file dei server gdm/xdm, la costrizione di dover avviare il server X
dallo stesso frame buffer impedisce alla soluzione banale di 
funzionare. Se qualcuno trova un modo per favore mi contatti per 
e-mail e l'aggiunger&ograve; qui.
<P>
<H3>Utilizzare il programma x2x.</H3>

<P>Esiste un simpatico programmino chiamato x2x che passa in automatico
da un server X all'altro quando si arriva al bordo dello schermo.
L'ultima casa conosciuta di questo programma &egrave;:
<PRE>
http://ftp.digital.com/pub/DEC/SRC/x2x
</PRE>
. Lo si trova anche
tra i pacchetti opzionali della Debian. Non l'ho ancora provato, ma
alcuni utenti han riferito d'averlo utilizzato con successo.
<P>
<H3>Altri comandi utili</H3>

<P>Esistono alcuni comandi linux che vale la pena ricordare quando si ha
a che fare con una configurazione a pi&ugrave; uscite (specialmente quando si
scrivono script).
<P>* "chvt" permette di passare da una console virtuale ad un'altra
<P>* "openvt" lancia un programma in un nuovo terminale virtuale (VT).
<P>* "tty" riferisce il nome del corrente terminale.
<P>
<H3>Appendice A. Script cvtmode.m, in Octave</H3>

<P>(notare l'impostazione bpp)
<PRE>
#!/usr/bin/octave -q
bpp = 16;
DCF = sscanf(argv(1,:), "%f");
HR  = sscanf(argv(2,:), "%f");
SH1 = sscanf(argv(3,:), "%f");
SH2 = sscanf(argv(4,:), "%f");
HFL = sscanf(argv(5,:), "%f");
VR  = sscanf(argv(6,:), "%f");
SV1 = sscanf(argv(7,:), "%f");
SV2 = sscanf(argv(8,:), "%f"); 
VFL = sscanf(argv(9,:), "%f");
pixclock = 1000000 / DCF;
left_margin = HFL - SH2;
right_margin = SH1 - HR;
hsync_len = SH2 - SH1;

# 3) regolazioni verticali:
upper_margin = VFL - SV2;
lower_margin = SV1 - VR;
vsync_len = SV2 - SV1;

RR = DCF / (HFL * VFL) *1e6;
HSF = DCF / HFL * 1e3;

printf("mode \"%dx%d\"\n",HR,VR);
printf("   # D: %3.2f MHz, H: %3.2f kHz, V: %2.2f Hz\n", DCF, HSF, RR);
printf("   geometry %d %d %d %d %d\n", HR, VR, HR, VR, bpp);
printf("   timings %d %d %d %d %d %d %d\n", ...
                                 pixclock, left_margin, right_margin, ...
                                 upper_margin, lower_margin, ...
                                 hsync_len, vsync_len);
printf("endmode\n");
</PRE>
<P>
<H3>Appendice B. Script "cvtfile", in Bourne Shell</H3>

<P>(Che richiama lo script in octave "cvtmode")
<PRE>
#!/bin/sh

# Script della shell per convertire il file XF86Config in uno fb.modes.
# Utilizza lo script in octave cvtmode.m

if [ -z $1 ]; then
  FILE=/etc/X11/XF86Config
else
  FILE=$1
fi

i=1
LEN=`grep Modeline $FILE | wc -l`
while expr $i \&lt; $LEN > /dev/null ;
do
  CURLINE=`grep Modeline $FILE | cut -d'"' -f 3-20 | head -$i | tail -1 `
  ./cvtmode.m $CURLINE
  echo " "
  i=`expr $i + 1`
done
</PRE>
<P>
<HR>
<A HREF="Framebuffer-HOWTO-15.html">Avanti</A>
<A HREF="Framebuffer-HOWTO-13.html">Indietro</A>
<A HREF="Framebuffer-HOWTO.html#toc14">Indice</A>
</BODY>
</HTML>