[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [volume] [parte]


Capitolo 216.   X: struttura e configurazione essenziale

X è un sistema grafico per gli ambienti Unix, o più precisamente per gli ambienti aderenti agli standard C ANSI o POSIX.

X Window System è stato sviluppato originariamente nei laboratori del MIT (Massachusetts institute of technology) e in seguito tutti i diritti sono stati assegnati a un altro ente.

I termini X, X Window e X Window System sono da intendersi come sinonimi dello stesso sistema grafico, mentre il nome «X Windows» non è corretto.

X Window System è un marchio registrato. Lo sviluppo di X come software libero avviene attraverso la fondazione X.Org (<http://www.x.org>).

216.1   Struttura

Nel sistema X si utilizzano alcuni termini importanti che rappresentano altrettante parti di questo.

216.1.1   Hardware

Dal punto di vista di X, l'hardware è ciò che consente di interagire in questo sistema grafico (nel senso che il resto non è di sua competenza). Si tratta della tastiera, dello schermo grafico e del dispositivo di puntamento. In pratica il ruolo di X è quello di controllare tutto questo.

Figura 216.1. X è un sistema attraverso il quale, teoricamente, è possibile avere macchine che fanno girare più di un servente grafico, ognuno in grado di controllare una stazione grafica (display) che a sua volta utilizza uno o più schermi grafici.

stazioni grafiche multiple

All'interno di un elaboratore possono funzionare teoricamente più serventi grafici per controllare altrettante stazioni grafiche di lavoro. Inoltre, sempre teoricamente, una stazione grafica può utilizzare più di uno schermo grafico contemporaneamente.

Nel gergo di X la stazione grafica è il display, che viene identificato da un numero a partire da zero, nella forma :n. Se una stazione grafica è dotata di più di uno schermo, quando si deve fare riferimento a uno di questi occorre aggiungere all'indicazione del numero della stazione grafica quello dello schermo. Anche in questo caso, il primo corrisponde a zero. La forma diventa quindi :n.m, dove n è la stazione grafica e m è lo schermo. La figura 216.1 dovrebbe chiarire il meccanismo. Il valore predefinito di stazione grafica e schermo è zero, per cui, quando non si specificano queste informazioni, si intende implicitamente lo schermo :0.0.

I dispositivi di puntamento, solitamente il mouse, possono avere un numero variabile di tasti; teoricamente si va da un minimo di uno a un massimo di cinque. Nell'ambiente X, questi tasti si distinguono attraverso un numero: 1, 2, 3, 4 e 5. Il tasto sinistro è il primo e da lì si continua la numerazione. Quando si utilizza un mouse a tre tasti, il tasto numero due è quello centrale.

Il vero problema è che X utilizza normalmente tre tasti: nei mouse a due tasti, il tasto destro svolge la funzione del tasto numero tre e solitamente il tasto centrale (cioè il numero due) si ottiene con l'uso contemporaneo dei due tasti esistenti.

Figura 216.2. La numerazione dei tasti dei mouse che ne hanno solo due è particolare.

numerazione dei tasti del mouse

Questo problema viene ripreso nella descrizione della configurazione di X e lì dovrebbe risultare più chiaro.

216.1.2   Cliente-servente

Il programma che si occupa di gestire la stazione grafica è il servente grafico. È un servente perché offre solo dei servizi e non interagisce direttamente con l'utente. Sono i programmi clienti a interagire con l'utente. Questi richiedono al servente di poter utilizzare uno schermo determinato e, attraverso la stazione grafica corrispondente, sono in grado di ricevere l'input della tastiera e del dispositivo di puntamento.

Tra i programmi clienti, quello che riveste un ruolo fondamentale è il gestore di finestre, attraverso il quale si rendono disponibili quei meccanismi con cui si può passare facilmente da un programma all'altro e le finestre possono essere ridimensionate o ridotte a icona.

X è trasparente nei confronti della rete. Un programma cliente può utilizzare i servizi di un servente remoto, interagendo con la stazione grafica di quel servente. Questo tipo di utilizzo richiede comunque una forma di autorizzazione o autenticazione, per motivi di sicurezza.

Quando si vuole identificare uno schermo particolare di un certo elaboratore nella rete, si antepone alle coordinate (già viste nella sezione precedente) il nome o l'indirizzo di quell'elaboratore: nodo:n.m. La figura 216.3 mostra un esempio di questo tipo di utilizzo.

Figura 216.3. Il servente grafico può concedere l'utilizzo della stazione grafica anche a programmi in esecuzione su elaboratori remoti.

collegamento dalla rete

Un programma cliente può connettersi con un servente X, sia locale, sia remoto. Per una connessione remota occorre stabilire un collegamento. Il servente X resta normalmente in ascolto sulla porta 6 000 + n, dove n rappresenta il numero della stazione grafica, ovvero del servente X.

Nel caso di una stazione grafica con indirizzo :1, la porta su cui dovrebbe trovarsi in ascolto il servente relativo è la numero 6 001.

Il concetto di cliente-servente per ciò che riguarda la rete viene ripreso nei capitoli dedicati proprio alle connessioni in rete (volume VIII).

Infine, è bene tenere in considerazione il fatto che le librerie specifiche per X (Xlib), sono indispensabili sia per i serventi, sia per i clienti.

216.2   X.Org e XFree86

La versione libera di X è costituita da X.Org(1) e in precedenza da XFree86.(2) In generale si tratta di un servente X per i sistemi operativi Unix, eventualmente in più versioni alternative, specifiche per un gruppo particolare di adattatori grafici.

La struttura prevista per il file system di un sistema GNU e di altri sistemi Unix (capitolo 169) colloca tutti i file statici di X (binari, documentazione, librerie, ecc.) al di sotto di /usr/X11R6/. Tuttavia, per ragioni di compatibilità, di norma vengono aggiunti alcuni collegamenti simbolici:

X utilizza un file di configurazione, che può essere collocato in varie posizioni, ma generalmente si trova nella directory /etc/X11/. Il file di configurazione può avere nomi diversi; tra le tante possibilità, meritano attenzione xorg.conf, XF86Config-4 e XF86Config:

xorg.conf File di configurazione previsto per X.Org.
XF86Config-4 File di configurazione previsto per XFree86 versione 4.*.
XF86Config File di configurazione normale per XFree86.

216.2.1   Configurazione tradizionale

Per poter utilizzare X occorre predisporre il file di configurazione appropriato (/etc/X11/XF86Config, /etc/X11/XF86Config-4 o /etc/X11/xorg.conf), di solito attraverso un programma che guida in questa fase.

Il programma più semplice è xf86config, oppure xorgconfig (a seconda che si tratti di XFree86 o di X.Org rispettivamente). Questo programma fa una serie di domande e non è possibile tornare indietro quando si scopre di avere sbagliato qualcosa: si può solo ricominciare. Di seguito si descrive l'operazione di configurazione attraverso xorgconfig.

Nel caso di XFree86 in una delle versioni 3.*, i serventi X sono molti, ognuno specializzato per un gruppo ristretto di adattatori grafici. Generalmente, i programmi di configurazione non avvisano l'utente della presenza o meno del servente necessario per le scelte che vengono fatte, così la persona inesperta si trova spesso nella situazione di non poter capire il motivo del mancato funzionamento di X. Quindi, se manca il servente X, occorre installarlo manualmente, attraverso gli strumenti offerti dalla propria distribuzione GNU.

Prima di avviare il programma di configurazione occorre avere ben chiare in mente le caratteristiche dell'hardware video-tastiera-mouse. Per quanto riguarda il monitor si deve conoscere il valore minimo e massimo delle frequenze di scansione orizzontale e verticale. La frequenza orizzontale è espressa in kilohertz (simbolo: «kHz») mentre quella verticale in hertz (simbolo: «Hz»). L'adattatore grafico è l'elemento più delicato e di questo, oltre che il nome dell'integrato che si occupa della grafica, occorre conoscere la quantità di memoria. Negli esempi seguenti si fa riferimento a un monitor in grado di utilizzare frequenze orizzontali da 31 kHz a 60 kHz e frequenze verticali da 50 Hz a 90 Hz, un adattatore grafico con integrato S3 ViRGE, una tastiera italiana standard e un mouse PS/2 compatibile Microsoft (a due tasti).

In particolare, con i sistemi GNU/Linux, quando si dispone di un adattatore grafico di tipo PCI, si possono leggere le informazioni relative nel file virtuale /proc/pci:

less /proc/pci[Invio]

Si potrebbe leggere qualcosa come ciò che segue:

  ...
  Bus  0, device  19, function  0:
    VGA compatible controller: S3 Inc. ViRGE/DX or /GX (rev 1).
      IRQ 5.
      Master Capable.  Latency=32.  Min Gnt=4.Max Lat=255.
      Non-prefetchable 32 bit memory at 0xd4000000 [0xd7ffffff].
  ...

su[Invio]

È meglio operare con i privilegi dell'utente root per fare questa operazione, altrimenti viene creato un file XF86Config all'interno della propria directory personale invece che nella sua destinazione corretta. Eventualmente, si può anche approfittare per usare mdetect (sezione 115.2) allo scopo di verificare le caratteristiche del mouse:

mdetect -x[Invio]

/dev/psaux
PS/2

Si passa quindi alla configurazione:

xorgconfig[Invio]

This program will create a basic xorg.conf file, based on menu selections       
you make.  It will ask for a pathname when it is ready to write the file.       
                                                                                
The xorg.conf file usually resides in /etc/X11 or /usr/X11R6/etc/X11.  If       
no xorg.conf file is present there, Xorg will probe the system to               
autoconfigure itself.  You can run Xorg -configure to generate a xorg.conf      
file based on the results of autoconfiguration, or let this program             
produce a base xorg.conf file for your configuration, and fine-tune it.         
A sample xorg.conf file is also supplied with Xorg; it is configured            
for a standard VGA card and monitor with 640x480 resolution.                    
                                                                                
There are also many chipset and card-specific options and settings available,   
but this program does not know about these. On some configurations some of      
these settings must be specified. Refer to the X driver man pages and the       
chipset-specific READMEs in /usr/X11R6/lib/X11/doc for further details.         
                                                                                
Before continuing with this program, make sure you know what video card         
you have, and preferably also the chipset it uses and the amount of video       
memory on your video card, as well as the specifications of your monitor.       
                                                                                
Press enter to continue, or ctrl-c to abort.                                    

Il programma mostra un'introduzione ricordando in particolare che prima di proseguire è necessario conoscere le caratteristiche dell'adattatore grafico.

Press enter to continue, or ctrl-c to abort.[Invio]

First specify a mouse protocol type. Choose one from the following list:        
                                                                                
 1.  Auto [Auto detect]                                                         
 2.  SysMouse [SysMouse]                                                        
 3.  MouseSystems [Mouse Systems (3-button protocol)]                           
 4.  PS/2 [PS/2 Mouse]                                                          
 5.  Microsoft [Microsoft compatible (2-button protocol)]                       
 6.  Busmouse [Bus Mouse]                                                       
 7.  IMPS/2 [IntelliMouse PS/2]                                                 
 8.  ExplorerPS/2 [Explorer PS/2]                                               
 9.  GlidePointPS/2 [GlidePoint PS/2]                                           
10.  MouseManPlusPS/2 [MouseManPlus PS/2]                                       
11.  NetMousePS/2 [NetMouse PS/2]                                               
12.  NetScrollPS/2 [NetScroll PS/2]                                             
13.  ThinkingMousePS/2 [ThinkingMouse PS/2]                                     
14.  AceCad [AceCad]                                                            
                                                                                
The recommended protocol is Auto. If you have a very old mouse                  
or don't want OS support or auto detection, and you have a two-button           
or three-button serial mouse, it is most likely of type Microsoft.              
                                                                                
Enter a protocol number:                                                        

Anche il mouse può essere un problema, specialmente se si dispone di un mouse di tipo bus (bus-mouse). Si veda a questo proposito quanto spiegato nella sezione 216.3.3.

Fondamentalmente esistono due tipi di mouse seriali: Microsoft a due tasti e Mouse System a tre tasti. Il Mouse System a tre tasti sarebbe l'ideale dal momento che X richiede l'uso di tutti e tre i tasti, ma spesso, un mouse del genere è anche compatibile con il sistema Microsoft a due tasti. Nella migliore delle ipotesi si ha a disposizione un piccolo commutatore che permette di selezionare la modalità di funzionamento, nella peggiore occorre tenere premuto uno dei tasti all'avvio del sistema per definire la modalità a tre tasti.

Tra i mouse a tre tasti esiste anche il tipo Logitech Mouseman che è compatibile con il tipo Microsoft, ma ha il tasto centrale che genera un segnale corrispondente alla pressione di entrambi i tasti.

In questo caso, si fa riferimento a un mouse connesso alla porta PS/2.

Enter a protocol number: 4[Invio]

If your mouse has only two buttons, it is recommended that you enable
Emulate3Buttons.

Please answer the following question with either 'y' or 'n'.
Do you want to enable Emulate3Buttons?

Quando si hanno a disposizione solo due tasti si pone il problema di accedere alle funzioni legate al tasto centrale mancante. Nella peggiore delle ipotesi si devono premere contemporaneamente i due tasti (cosa non facile) e in questo caso si parla di emulazione del terzo bottone, oppure si dispone di un mouse in grado di generare un segnale equivalente alla pressione dei due tasti quando si preme il tasto centrale e allora si parla di accordo centrale (chord middle). Una delle due scelte esclude l'altra. La differenza tra emulare il terzo bottone e utilizzare l'accordo centrale sta nel fatto che nel primo caso viene concessa una certa tolleranza (dovendo premere due tasti diventa difficile farlo contemporaneamente), mentre nel secondo caso no. Tutto sommato si potrebbe utilizzare sempre l'emulazione del terzo bottone anche quando si ha un mouse Logitech.

Do you want to enable Emulate3Buttons? y[Invio]

Now give the full device name that the mouse is connected to, for example
/dev/tty00. Just pressing enter will use the default, /dev/mouse.

Mouse device:

Se il proprio sistema è stato configurato correttamente, nella directory /dev/ dovrebbe trovarsi un collegamento simbolico che punta al file di dispositivo corrispondente all'interfaccia utilizzata per connettere il mouse. Dovrebbe trattarsi del collegamento /dev/mouse. Se è così, è sufficiente confermare.

Mouse device: [Invio]

Please select one of the following keyboard types that is the better            
description of your keyboard. If nothing really matches,                        
choose "Generic 104-key PC"                                                     
                                                                                
  1  Generic 101-key PC                                                         
  2  Generic 102-key (Intl) PC                                                  
  3  Generic 104-key PC                                                         
  4  Generic 105-key (Intl) PC                                                  
  5  Dell 101-key PC                                                            
  6  Everex STEPnote                                                            
  7  Keytronic FlexPro                                                          
  8  Microsoft Natural                                                          
  9  Northgate OmniKey 101                                                      
 10  Winbook Model XP5                                                          
 11  Japanese 106-key                                                           
 12  PC-98xx Series                                                             
 13  A4Tech KB-21                                                               
 14  A4Tech KBS-8                                                               
 15  Brazilian ABNT2                                                            
 16  Acer AirKey V                                                              
                                                                                
Enter a number to choose the keyboard.                                          
                                                                                
Press enter for the next page                                                   

Appare quindi la richiesta di specificare il tipo di tastiera. L'elenco potrebbe essere molto lungo, anche di più della disponibilità di righe che ha lo schermo. Per scegliere, basta introdurre il numero della voce desiderata e premere [Invio]:

3[Invio]

Successivamente si deve specificare il tipo di mappa della tastiera, in base alle convenzioni locali.

  1  U.S. English                                                               
  2  Arabic                                                                     
  3  Albania                                                                    
  4  Armenia                                                                    
  5  Azerbaijan                                                                 
  6  Belarus                                                                    
  7  Belgium                                                                    
  8  Bangladesh                                                                 
  9  India                                                                      
 10  Bosnia and Herzegovina                                                     
 11  Brazil                                                                     
 12  Bulgaria                                                                   
 13  Myanmar                                                                    
 14  Canada                                                                     
 15  Croatia                                                                    
 16  Czechia                                                                    
 17  Denmark                                                                    
 18  Netherlands                                                                
                                                                                
Enter a number to choose the country.                                           
Press enter for the next page                                                   

[Invio]

 19  Bhutan                                                                     
 20  Estonia                                                                    
 21  Iran                                                                       
 22  Faroe Islands                                                              
 23  Finland                                                                    
 24  France                                                                     
 25  Georgia                                                                    
 26  Germany                                                                    
 27  Greece                                                                     
 28  Hungary                                                                    
 29  Iceland                                                                    
 30  Israel                                                                     
 31  Italy                                                                      
 32  Japan                                                                      
 33  Kyrgyzstan                                                                 
 34  Laos                                                                       
 35  Latin American                                                             
 36  Lithuania                                                                  
                                                                                
Enter a number to choose the country.                                           
Press enter for the next page                                                   

Quando si raggiunge la voce desiderata, basta inserire il numero corrispondente:

31[Invio]

Please enter a variant name for 'it' layout. Or just press enter
for default variant

[Invio]

Please answer the following question with either 'y' or 'n'.
Do you want to select additional XKB options (group switcher,
group indicator, etc.)?

n[Invio]

Now we want to set the specifications of the monitor. The two critical          
parameters are the vertical refresh rate, which is the rate at which the        
the whole screen is refreshed, and most importantly the horizontal sync rate,   
which is the rate at which scanlines are displayed.                             
                                                                                
The valid range for horizontal sync and vertical sync should be documented      
in the manual of your monitor.                                                  
                                                                                
Press enter to continue, or ctrl-c to abort.

La fase successiva è quella di definire gli intervalli di frequenza delle scansioni orizzontale e verticale del monitor. Si procede indicando direttamente i valori.

Press enter to continue, or ctrl-c to abort.[Invio]

You must indicate the horizontal sync range of your monitor. You can either     
select one of the predefined ranges below that correspond to industry-          
standard monitor types, or give a specific range.                               
                                                                                
It is VERY IMPORTANT that you do not specify a monitor type with a horizontal   
sync range that is beyond the capabilities of your monitor. If in doubt,        
choose a conservative setting.                                                  
                                                                                
    hsync in kHz; monitor type with characteristic modes                        
 1  31.5; Standard VGA, 640x480 @ 60 Hz                                         
 2  31.5 - 35.1; Super VGA, 800x600 @ 56 Hz                                     
 3  31.5, 35.5; 8514 Compatible, 1024x768 @ 87 Hz interlaced (no 800x600)       
 4  31.5, 35.15, 35.5; Super VGA, 1024x768 @ 87 Hz interlaced, 800x600 @ 56 Hz  
 5  31.5 - 37.9; Extended Super VGA, 800x600 @ 60 Hz, 640x480 @ 72 Hz           
 6  31.5 - 48.5; Non-Interlaced SVGA, 1024x768 @ 60 Hz, 800x600 @ 72 Hz         
 7  31.5 - 57.0; High Frequency SVGA, 1024x768 @ 70 Hz                          
 8  31.5 - 64.3; Monitor that can do 1280x1024 @ 60 Hz                          
 9  31.5 - 79.0; Monitor that can do 1280x1024 @ 74 Hz                          
10  31.5 - 82.0; Monitor that can do 1280x1024 @ 76 Hz                          
11  Enter your own horizontal sync range

Enter your choice (1-11):

Enter your choice (1-11): 11[Invio]

Please enter the horizontal sync range of your monitor, in the format used
in the table of monitor types above. You can either specify one or more
continuous ranges (e.g. 15-25, 30-50), or one or more fixed sync frequencies.

Horizontal sync range: 31-60[Invio]

You must indicate the vertical sync range of your monitor. You can either       
select one of the predefined ranges below that correspond to industry-          
standard monitor types, or give a specific range. For interlaced modes,         
the number that counts is the high one (e.g. 87 Hz rather than 43 Hz).          
                                                                                
 1  50-70                                                                       
 2  50-90                                                                       
 3  50-100                                                                      
 4  40-150                                                                      
 5  Enter your own vertical sync range                                          
                                                                                
Enter your choice:

Enter your choice: 5[Invio]

Vertical sync range: 50-90[Invio]

You must now enter a few identification/description strings, namely an
identifier, a vendor name, and a model name. Just pressing enter will fill
in default names.

The strings are free-form, spaces are allowed.

I dati identificativi del monitor sono facoltativi e si possono saltare semplicemente, anche se in questo esempio vengono inseriti.

Enter an identifier for your monitor definition: Addonics MON-7C8B[Invio]

Now we must configure video card specific settings. At this point you can
choose to make a selection out of a database of video card definitions.
Because there can be variation in Ramdacs and clock generators even
between cards of the same model, it is not sensible to blindly copy
the settings (e.g. a Device section). For this reason, after you make a
selection, you will still be asked about the components of the card, with
the settings from the chosen database entry presented as a strong hint.

The database entries include information about the chipset, what server to
run, the Ramdac and ClockChip, and comments that will be included in the
Device section. However, a lot of definitions only hint about what server
to run (based on the chipset the card uses) and are untested.

If you can't find your card in the database, there's nothing to worry about.
You should only choose a database entry that is exactly the same model as
your card; choosing one that looks similar is just a bad idea (e.g. a
GemStone Snail 64 may be as different from a GemStone Snail 64+ in terms of
hardware as can be).

L'indicazione dell'adattatore grafico è una fase delicata e con un po' di fortuna si può trovare il proprio adattatore nell'elenco di quelli previsti.

Do you want to look at the card database? y[Invio]

  0  * Generic VESA compatible                         -
  1  * Generic VGA compatible                          -
  2  * Unsupported VGA compatible                      -
  3  ** 3DLabs, TI (generic)               [glint]     -
  4  ** 3Dfx (generic)                     [tdfx]      -
  5  ** ATI (generic)                      [ati]       -
  6  ** ATI Radeon (generic)               [radeon]    -
  7  ** ATI Rage 128 based (generic)       [r128]      -
  8  ** Alliance Pro Motion (generic)      [apm]       -
  9  ** Ark Logic (generic)                [ark]       -
 10  ** Chips and Technologies (generic)   [chips]     -
 11  ** Cirrus Logic (generic)             [cirrus]    -
 12  ** Cyrix MediaGX (generic)            [cyrix]     -
 13  ** DEC TGA (generic)                  [tga]       -
 14  ** Intel i740 (generic)               [i740]      -
 15  ** Intel i810 (generic)               [i810]      -
 16  ** Linux framebuffer (generic)        [fbdev]     -
 17  ** Matrox Graphics (generic)          [mga]       -

Enter a number to choose the corresponding card definition.                     
Press enter for the next page, q to continue configuration.                     

L'elenco è molto lungo e vale la pena di scorrerlo tutto prima di scegliere il numero corrispondente al modello del proprio adattatore. Una volta raggiunta la fine, l'elenco viene riproposto dall'inizio.

[Invio]

[Invio]

[Invio]

...

0[Invio]

Your selected card definition:

Identifier: * Generic VESA compatible
Chipset:    -
Driver:     vesa

Press enter to continue, or ctrl-c to abort.

Il programma di configurazione conferma la scelta dell'adattatore grafico.

Press enter to continue, or ctrl-c to abort.[Invio]

Now you must give information about your video card. This will be used for      
the "Device" section of your video card in xorg.conf.                           
                                                                                
It is probably a good idea to use the same approximate amount as that detected  
by the server you intend to use. If you encounter problems that are due to the  
used server not supporting the amount memory you have, specify the maximum      
amount supported by the server.                                                 
                                                                                
How much video memory do you have on your video card:                           

 1  256K   
 2  512K   
 3  1024K  
 4  2048K  
 5  4096K  
 6  8192K  
 7  16384K 
 8  32768K 
 9  65536K 
10  131072K
11  262144K
12  Other  

Enter your choice:

L'informazione sulla quantità di memoria a disposizione è importante per determinare la cosiddetta profondità dell'immagine, intendendo con questo la quantità di colori che si possono utilizzare, a seconda della risoluzione utilizzata.

Enter your choice: 8[Invio]

You must now enter a few identification/description strings, namely an
identifier, a vendor name, and a model name. Just pressing enter will fill
in default names (possibly from a card definition).

Your card definition is * Generic VESA compatible

The strings are free-form, spaces are allowed.
Enter an identifier for your video card definition:

Come per il monitor, le informazioni sul nome dell'adattatore grafico sono facoltative.

Enter an identifier for your video card definition: VESA[Invio]

For each depth, a list of modes (resolutions) is defined. The default           
resolution that the server will start-up with will be the first listed          
mode that can be supported by the monitor and card.                             
Currently it is set to:                                                         
                                                                                
"1280x1024" "1024x768" "800x600" "640x480" for 8-bit                            
"1280x1024" "1024x768" "800x600" "640x480" for 16-bit                           
"1280x1024" "1024x768" "800x600" "640x480" for 24-bit                           
                                                                                
Modes that cannot be supported due to monitor or clock constraints will         
be automatically skipped by the server.                                         
                                                                                
 1  Change the modes for 8-bit (256 colors)                                     
 2  Change the modes for 16-bit (32K/64K colors)                                
 3  Change the modes for 24-bit (24-bit color)                                  
 4  The modes are OK, continue.                                                 
                                                                                
Enter your choice:                                                              

In base al tipo di adattatore e alla quantità di memoria installata su di esso, si può determinare l'elenco delle modalità di funzionamento di questo. In particolare, una maggiore profondità di colori richiede un maggiore utilizzo della memoria video. Nel caso si disponga di poca memoria, se ci si accontenta di risoluzioni inferiori si può aumentare la profondità dei colori.

La profondità di colori si esprime solitamente in bit per punto grafico (pixel): 2 elevato a questo valore dà il numero di colori a disposizione, quindi, con 8 bit/pixel si hanno a disposizione 28 = 256 colori.

Quando poi si avvia il servente si può indicare la profondità desiderata e in base a quella scelta viene utilizzata una delle modalità elencate.

Volendo è possibile scegliere un ordine diverso nella sequenza delle modalità, oppure si può eliminare un livello di risoluzione che genera qualche problema di visualizzazione. In generale non vale la pena di cambiare alcunché.

Enter your choice: 4[Invio]

Please specify which color depth you want to use by default:

  1  1 bit (monochrome)
  2  4 bits (16 colors)
  3  8 bits (256 colors)
  4  16 bits (65536 colors)
  5  24 bits (16 million colors)

Enter a number to choose the default depth.

5[Invio]

I am going to write the xorg.conf file now. Make sure you don't accidently
overwrite a previously configured one.

Shall I write it to /etc/X11/xorg.conf?

La riserva posta dal programma di configurazione si spiega solo considerando la possibilità che si voglia conservare la configurazione precedente per qualche motivo. Se è così vale la pena di farsene una copia prima di procedere alla riscrittura del file xorg.conf.

Shall I write it to '/etc/X11/xorg.conf'? y[Invio]

File has been written. Take a look at it before starting an X server. Note that 
the xorg.conf file must be in one of the directories searched by the server     
(e.g. /etc/X11) in order to be used. Within the server press                    
ctrl, alt and '+' simultaneously to cycle video resolutions. Pressing ctrl,     
alt and backspace simultaneously immediately exits the server (use if           
the monitor doesn't sync for a particular mode).                                
                                                                                
For further configuration, refer to the xorg.conf(5x) manual page.              

Alla conclusione, il programma di configurazione ricorda che il file xorg.conf deve trovarsi dove il servente si aspetta di trovarlo. La directory /etc/X11/ è il luogo corretto (potrebbe esistere il collegamento simbolico /usr/X11R6/lib/X11/xorg.conf che punta a /etc/X11/xorg.conf).

Per verificare se tutto è andato bene si può avviare lo script startx. Se qualcosa non va, basta premere la sequenza [Ctrl Alt Backspace] per fare terminare l'esecuzione del servente.

Di norma viene creato il collegamento simbolico /etc/X11/X, che punti all'eseguibile del servente adatto al proprio adattatore grafico (ammesso che ci possa essere differenza). In pratica, il collegamento potrebbe puntare a /usr/bin/X11/Xorg, a /usr/bin/X11/XFree86, oppure a un'altra versione specifica per il proprio adattatore grafico.

216.2.2   Configurazione alternativa

X fornisce anche un altro programma per la costruzione del file di configurazione (/etc/X11/XF86Config* o /etc/X11/xorg.conf). Si tratta dell'eseguibile xf86cfg o di xorgcfg, il quale dovrebbe consentire un'interazione attraverso lo stesso sistema grafico, ma che offre in alternativa anche un sistema di menù per lo schermo a caratteri:

xf86cfg [opzioni]
xorgcfg [opzioni]

Per ottenere il funzionamento in modalità grafica, non servono argomenti nella riga di comando, mentre l'opzione -textmode fa sì che si utilizzi solo uno schermo a caratteri:

xorgcfg -textmode[Invio]

216.2.3   Configurazione con Xconfigurator

La distribuzione Red Hat/Fedora offre l'applicativo Xconfigurator per facilitare la configurazione di X, con un funzionamento molto simile a xorgcfg quando viene avviato in modalità testo. Questo stesso programma viene utilizzato nella fase di installazione della distribuzione.

Xconfigurator

L'eseguibile Xconfigurator non prevede argomenti ed è interattivo. All'avvio, esegue una scansione diagnostica alla ricerca dell'adattatore grafico. Se si tratta di una scheda PCI è molto probabile che venga identificata. Se la ricerca fallisce, viene richiesto all'utente di scegliere un tipo di adattatore, o direttamente il servente grafico. Successivamente si passa all'indicazione del tipo di monitor (figura 216.30).

Figura 216.30. Scelta del monitor.

xconfigurator-monitor

È poco probabile che si riesca a trovare il proprio modello tra quelli proposti dall'elenco, per cui è quasi obbligatorio indicare il tipo Custom. Si deve quindi indicare la frequenza orizzontale (figura 216.31) e verticale (figura 216.32). È importante che le frequenze selezionate non superino i limiti stabiliti dalla casa costruttrice del monitor.

Figura 216.31. Scelta della frequenza orizzontale.

xconfigurator-monitor-h

Figura 216.32. Scelta della frequenza verticale.

xconfigurator-monitor-v

A seconda del tipo di adattatore grafico disponibile potrebbe essere richiesta la selezione del cosiddetto RAMDAC. Se viene richiesto, in caso di dubbio si può rinunciare a specificarne il valore.

Un punto delicato è dato invece dal cosiddetto Clockchip. Se non si sa di cosa si tratti, è bene non indicare alcunché, come si vede nella figura 216.33.

Figura 216.33. Scelta del clockchip.

xconfigurator-clockchip

Successivamente deve essere selezionata la quantità di memoria a disposizione dell'adattatore grafico. È importante non indicarne più di quanta realmente presente.

Figura 216.34. Indicazione della memoria video disponibile.

xconfigurator-mem

Infine, si devono indicare le modalità video, cioè la dimensione dello schermo espressa in punti. Per evitare fastidi inutili, sarebbe conveniente indicare una sola risoluzione per tutti i tipi di profondità di colori. La figura 216.35 mostra in particolare un esempio in cui è stata selezionata solo la risoluzione 800×600, sia per la profondità di colori a 8 bit, sia per la profondità a 16 bit, escludendo quella a 24 bit.

Figura 216.35. Indicazione delle modalità video utilizzabili.

xconfigurator-video-mode

Al termine, viene provato l'avvio del servente grafico selezionato, utilizzando la configurazione indicata, in modo da permettere una verifica del suo funzionamento. In modalità grafica viene presentata una finestra di dialogo per richiedere la conferma del funzionamento. Se la risposta è affermativa, viene anche chiesto se si intende avviare immediatamente il sistema operativo in modo grafico.

216.3   Lettura del file di configurazione

La lettura del file di configurazione di X (/etc/X11/XF86Config o /etc/X11/xorg.conf) può dare molte informazioni utili sull'organizzazione del sistema grafico. In particolare, i programmi utilizzati per generarlo sono realizzati in modo da inserire molti commenti, tra cui anche esempi di direttive, così da agevolare chi volesse modificarlo successivamente a mano.

Il simbolo # serve a iniziare un commento che termina alla fine della riga, inoltre le righe bianche e quelle vuote vengono ignorate.

A titolo di esempio viene mostrato un file di configurazione generato attraverso xorgconfig, come descritto nella sezione 216.2.1, ma semplificato.

Section "Module"
    Load        "dbe"           # Double buffer extension
    Load        "type1"
    Load        "freetype"
EndSection

Section "Files"
    RgbPath    "/etc/X11/rgb"
    FontPath   "/usr/lib/X11/fonts/misc/"
    FontPath   "/usr/lib/X11/fonts/75dpi/:unscaled"
    FontPath   "/usr/lib/X11/fonts/100dpi/:unscaled"
    FontPath   "/usr/lib/X11/fonts/Type1/"
    FontPath   "/usr/lib/X11/fonts/Speedo/"
    FontPath   "/usr/lib/X11/fonts/75dpi/"
    FontPath   "/usr/lib/X11/fonts/100dpi/"
    FontPath   "/usr/lib/X11/fonts/truetype/"
EndSection

Section "ServerFlags"
    # Option "DontZap"
    # Option "Dont Zoom"
EndSection

Section "InputDevice"
    Identifier "Keyboard1"
    Driver     "Keyboard"
    Option     "AutoRepeat" "500 30"
    Option     "LeftAlt"     "Meta"
    Option     "RightAlt"    "ModeShift"
    Option     "XkbRules"    "xorg"
    Option     "XkbModel"    "pc104"
    Option     "XkbLayout"   "it"
EndSection

Section "InputDevice"
    Identifier  "Mouse1"
    Driver      "mouse"
    Option      "Protocol"        "PS/2"
    Option      "Device"          "/dev/mouse"
    Option      "Emulate3Buttons" "true"
    # Option    "Emulate3Timeout" "50"
EndSection

Section "Monitor"
    Identifier  "Monitor1"
    HorizSync   30-50
    VertRefresh 50-90
EndSection

Section "Device"
    Identifier  "Standard VESA"
    Driver      "vesa"
EndSection

Section "Screen"
    Identifier  "Screen 1"
    Device      "Standard VESA"
    Monitor     "Monitor1"
    DefaultDepth 16

    Subsection "Display"
        Depth       8
        Modes       "1024x768" "800x600" "640x480"
        ViewPort    0 0
    EndSubsection
    Subsection "Display"
        Depth       16
        Modes       "1024x768" "800x600" "640x480"
        ViewPort    0 0
    EndSubsection
    Subsection "Display"
        Depth       24
        Modes       "1024x768" "800x600" "640x480"
        ViewPort    0 0
    EndSubsection
EndSection

Section "ServerLayout"
    Identifier  "Simple Layout"
    Screen "Screen 1"
    InputDevice "Mouse1" "CorePointer"
    InputDevice "Keyboard1" "CoreKeyboard"
EndSection

Segue la descrizione superficiale di alcune sezioni che possono comporre questo file di configurazione. Per una descrizione un po' più dettagliata si può consultare la pagina di manuale XF86Config(5).

216.3.1   Sezione «Files»

La sezione Files riguarda la posizione dei file utilizzati dal servente.

RgbPath "/etc/X11/rgb"

La direttiva RgbPath permette di indicare il file contenente l'elenco dei nomi dei colori associato alla codifica RGB relativa.

FontPath "/usr/lib/X11/fonts/misc/"
FontPath "/usr/lib/X11/fonts/75dpi/:unscaled"
FontPath "/usr/lib/X11/fonts/100dpi/:unscaled"
FontPath "/usr/lib/X11/fonts/Type1/"
FontPath "/usr/lib/X11/fonts/Speedo/"
FontPath "/usr/lib/X11/fonts/75dpi/"
FontPath "/usr/lib/X11/fonts/100dpi/"
FontPath "/usr/lib/X11/fonts/truetype/"

Con le direttive FontPath si indicano le directory contenenti i file dei tipi di carattere utilizzabili.

216.3.2   Sezione «ServerFlags»

La sezione ServerFlags permette di controllare alcune opzioni abbastanza importanti, in particolare quelle seguenti.

Option "DontZap"

La direttiva DontZap, se presente (di solito c'è, ma commentata), toglie la possibilità di concludere l'attività del servente attraverso la combinazione di tasti [Ctrl Alt Backspace].

Option "Dont Zoom"

La direttiva DontZoom, se presente (di solito c'è, ma commentata), toglie la possibilità di cambiare la modalità grafica attraverso l'uso delle combinazioni [Ctrl Alt +] («control», «alt», «+ del tastierino numerico») e [Ctrl Alt -] («control», «alt», «- del tastierino numerico»).

216.3.3   Sezione «InputDevice»

La sezione InputDevice può riguardare la configurazione della tastiera, oppure quella del dispositivo di puntamento.

Per quanto riguarda la tastiera, conviene non intervenire manualmente all'interno di questa sezione, in quanto il programma utilizzato per generare il file di configurazione dovrebbe essere in grado di inserire tutte le direttive necessarie.

Una sezione InputDevice riferita a un mouse, contiene in particolare l'indicazione del protocollo e del file di dispositivo a cui si fa riferimento:

Option  "Protocol"      "PS/2"
Option  "Device"        "/dev/mouse"

Nel caso di mouse a due tasti, oppure a tre, quando quello centrale corrisponde in realtà alla pressione simultanea dei due tasti, si aggiunge in particolare l'opzione corrispondente:

Option  "Emulate3Buttons"       "true"

Quando si utilizza un mouse bus, come per esempio il tipo PS/2, il file di dispositivo corrispondente non consente l'accesso multiplo da parte dei processi elaborativi. Di conseguenza si possono creare dei problemi tra X e demoni come gpm. Il problema si risolve proprio utilizzando il demone gpm con l'opzione -R e facendo poi in modo che X utilizzi il dispositivo /dev/gpmdata.

Quello che si vede di seguito è la configurazione alternativa di una sezione InputDevice necessaria allo scopo di utilizzare il dispositivo /dev/gpmdata. In questo caso si considera che il demone gpm fornisca le funzionalità del mouse secondo il protocollo IntelliMouse (qualunque sia il tipo di mouse utilizzato effettivamente); le dichiarazioni proposte consentono di utilizzare anche la rotellina (se c'è), e di ottenere la funzione del tasto centrale, anche se questo non dovesse esserci. Si veda a questo proposito anche quanto descritto nel capitolo 115.

Section "InputDevice"
    Identifier  "Mouse1"
    Driver      "mouse"
    Option      "Protocol"              "IntelliMouse"
    Option      "Device"                "/dev/gpmdata"
    Option      "Buttons"               "5"
    Option      "ZAxisMapping"          "4 5"
    Option      "Emulate3Buttons"       "true"
EndSection

216.3.4   Sezione «Monitor»

La sezione Monitor riguarda la configurazione del monitor, inteso come unità di visualizzazione dell'immagine, attraverso la sua scansione. Il file di configurazione può contenere diverse sezioni Monitor, distinte in base alla direttiva Identifier, come nell'esempio seguente:

Identifier  "Monitor generico"

Il nome utilizzato per identificare il monitor, serve per potervi fare riferimento all'interno di una sezione Screen.

HorizSync   31.5, 32.8

La direttiva HorizSync permette di definire le frequenze di sincronizzazione orizzontale. Può trattarsi di: valori discreti, cioè di un elenco di valori separati da una virgola; intervalli, cioè da due numeri collegati da un trattino; oppure di elenchi misti.

#    HorizSync  30-64         # multisync
#    HorizSync  31.5, 35.2    # multiple fixed sync frequencies
#    HorizSync  15-25, 30-50  # multiple ranges of sync frequencies

I valori indicati si riferiscono a kilohertz (simbolo: «kHz»), cioè migliaia di hertz, in modo predefinito.(3)

VertRefresh 50-70

La direttiva VertRefresh permette di definire le frequenze di sincronizzazione verticale. Valgono le stesse considerazione fatte per i valori della sincronizzazione orizzontale. Generalmente si tratta di un intervallo, come appare nell'esempio, inoltre l'unità di misura predefinita è in hertz.

Queste indicazioni possono essere delicate per il tipo di monitor che si utilizza, per cui non possono essere indicate troppo alla leggera. Infatti, ci sono situazioni in cui un monitor spinto a funzionare a frequenze troppo diverse da quelle previste dalla sua scheda tecnica, può anche risultarne danneggiarlo.

# 640x400 @ 70 Hz, 31.5 kHz hsync
Modeline "640x400"     25.175 640  664  760  800   400  409  411  450

# 640x480 @ 60 Hz, 31.5 kHz hsync
Modeline "640x480"     25.175 640  664  760  800   480  491  493  525

Le direttive Modeline (solitamente sono più di una nella stessa sezione) permettono di definire in dettaglio le caratteristiche di un quadro, o frame, cioè di un'immagine secondo il punto di vista del monitor. Viene definito un nome seguito da una serie di informazioni numeriche (che sono descritte meglio nel capitolo 218). Convenzionalmente, il nome viene attribuito in modo da ricordare la risoluzione che si ottiene con quel tipo di modalità. A quel nome si fa riferimento attraverso altre direttive nella sezione Screen.

Mode "640x480"
    DotClock    25.175
    HTimings    640  664  760  800
    VTimings    480  491  493  525
    # Flags     "Interlace"
EndMode

In alternativa alla direttiva Modeline, si può utilizzare la direttiva Mode che si articola su più righe e può risultare più leggibile. Qui si mostra la dichiarazione della modalità 640x480 già vista nell'esempio precedente.

I nomi delle dichiarazione di queste diverse modalità di composizione dei quadri, possono essere usati più volte; quando ciò accade, viene presa in considerazione la prima modalità corrispondente che risulti valida.

Con X.Org, non è più obbligatorio indicare queste direttive Mode o ModeLine, perché il servente dispone di un elenco predefinito di queste indicazioni, associate a dei nomi intuitivi, corrispondente alle specifiche VESA.

216.3.5   Sezione «Device»

La sezione Device riguarda la configurazione dell'adattatore grafico. Il file di configurazione può contenere diverse sezioni Device, distinte attraverso la direttiva Identifier, come nell'esempio seguente:

Identifier      "Standard VESA"

Il nome utilizzato per identificare l'adattatore, serve per potervi fare riferimento all'interno di una sezione Screen.

La maggior parte delle indicazioni che riguardano l'adattatore grafico possono essere determinate automaticamente dal servente grafico, all'avvio. Tuttavia, una volta conosciute, conviene fissarle nel file di configurazione.

Clocks          25.2 28.3

La direttiva Clocks è molto importante e delicata. Permette di definire esplicitamente l'elenco di valori di dot-clock dell'adattatore grafico. Si tratta in pratica delle frequenza con cui possono essere emessi i vari punti che compongono l'immagine. I due valori mostrati nell'esempio, dovrebbero essere sufficientemente bassi e comuni, da poter risultare compatibili con la maggior parte degli adattatori grafici VGA. L'unità di misura predefinita è il megahertz (simbolo: «MHz»), inteso come milioni di hertz.

216.3.6   Sezione «Screen»

La sezione Screen permette di legare assieme le informazioni sul monitor e sull'adattatore grafico, aggiungendo qualche indicazione sull'aspetto della superficie grafica. Il file di configurazione può contenere diverse sezioni Screen, distinte attraverso la direttiva Identifier, come nell'esempio seguente:

Identifier "Screen 1"

Le direttive Device e Monitor permettono di indicare le sezioni che descrivono le caratteristiche dell'adattatore grafico e del monitor.

Device      "S3 ViRGE"
Monitor     "Addonics MON-7C8B"

Inoltre, la direttiva DefaultDepth, consente di selezionare la sottosezione Display predefinita, in base alla scelta della profondità di colori:

DefaultDepth 24

La sottosezione Display serve a definire le modalità di visualizzazione che si possono utilizzare in corrispondenza di una certa profondità di colori (o di grigi). In pratica, se il tipo di adattatore grafico e il servente corrispondente permettono di utilizzare profondità di colori differenti, in base al livello utilizzato e in funzione della memoria presente è possibile ottenere risoluzioni più o meno dettagliate.

Subsection "Display"
    Depth       24
    Modes       "1024x768" "1280x1024"
    ViewPort    0 0
EndSubsection

La direttiva Depth definisce la profondità di colori espressa in numero di bit. Nell'esempio, il numero 24 rappresenta la possibilità di gestire circa 16 milioni di colori (o grigi), dal momento che con 24 bit si possono rappresentare esattamente 16 777 216 cifre differenti (224 = 16 777 216).

Depth       24

La direttiva Modes elenca le modalità utilizzabili con la profondità di colori definita nella sottosezione. Queste modalità sono indicate per nome, in base a quanto dichiarato nella sezione Monitor, attraverso le direttive Modeline o Mode, oppure in base alle definizioni VESA predefinite.

Modes       "1024x768" "1280x1024"

La disponibilità di più modalità che fanno riferimento a risoluzioni differenti, fa sì che si definisca implicitamente una dimensione virtuale della superficie grafica, pari alla risoluzione massima. Questa dimensione deve essere tale da non superare la richiesta di memoria video, comunque deve essere maggiore o uguale alla massima dimensione stabilita con la direttiva Modes. Quando si utilizza una superficie grafica virtuale più grande di quella effettiva che appare sullo schermo, può essere utile stabilire quale sia la posizione iniziale, all'avvio del servente. Ciò si ottiene con la direttiva ViewPoint, dove solitamente si utilizzano le coordinate 0 0, a indicare l'angolo superiore sinistro.

ViewPort    0 0

216.4   Accesso a un servente di caratteri

È già stata descritta a grandi linee la sezione Files della configurazione di X, in cui si trovano in particolare le direttive FontPath, per dichiarare la collocazione dei file contenenti le informazioni sui caratteri tipografici da visualizzare.

Secondo questo tipo di impostazione, ogni volta che si aggiunge una directory contenente altri caratteri, occorre modificare la configurazione di X per includere anche quella tra i percorsi previsti. Per semplificare l'accesso ai caratteri esistono dei serventi di caratteri, con i quali X può comunicare attraverso la rete, oppure solo dei socket di dominio Unix. In altri termini, un servente di caratteri può offrire il suo servizio attraverso la rete, per più di un elaboratore, oppure anche solo localmente, per mezzo di file socket.

Esistono diversi programmi che possono svolgere il compito di un servente di caratteri (per esempio Xfs,(4) X-TT(5) e Xfstt(6)); inoltre, spesso l'installazione di un servente del genere diventa quasi obbligatoria per via delle dipendenze stabilite da chi organizza la propria distribuzione GNU. Senza entrare nell'analisi del funzionamento di un servente di caratteri, basti sapere che di solito questi sono in funzione in attesa di connessioni sulla porta 7 100 TCP e se usano un socket di dominio Unix, dovrebbe corrispondere al file /tmp/.font-unix/fs7100. Se poi si gestiscono più serventi di caratteri nello stesso elaboratore, il numero della porta potrebbe essere un valore leggermente più alto, come 7 101 o 7 110, a cui si associa di conseguenza il file /tmp/.font-unix/fs7101 o /tmp/.font-unix/fs7110.

In presenza di uno o più serventi di caratteri, si deve intervenire nella configurazione di X per dichiarare come questi possono essere raggiunti. In caso di socket di dominio Unix, si usano direttive di questo tipo:

FontPath "unix/:71nn"

In caso di connessioni attraverso la rete, si può provare una di queste due direttive:

FontPath "inet/nodo:71nn"
FontPath "tcp/nodo:71nn"

Naturalmente, nn va sostituito con il valore esatto, in base alla configurazione del servente di caratteri a cui si vuole accedere.

Appunti di informatica libera 2007.02 --- Copyright © 2000-2007 Daniele Giacomini -- <daniele (ad) swlibero·org>


1) X.Org   MIT più altre licenze per porzioni particolari di codice

2) XFree86   MIT più altre licenze per porzioni particolari di codice

3) Quando si parla di cose legate all'informatica, è facile sbagliarsi. La frequenza si misura in hertz (simbolo: «Hz»), che rappresenta il numero di cicli al secondo. I moltiplicatori di questa unità di misura sono quelli standard, quindi k sta per 1 000 e non 1 024.

4) X   MIT più altre licenze per porzioni particolari di codice

5) X   MIT più altre licenze per porzioni particolari di codice

6) Xfstt   GNU LGPL


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome x_struttura_e_configurazione_essenziale.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico]

Valid ISO-HTML!

CSS validator!