[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico] [volume] [parte]


Capitolo 94.   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 di registrato e a partire dalla versione 11R6.4 non è più software libero. Attualmente, lo sviluppo di X come software libero avviene per opera di The XFree86 Project, con il nome XFree86.

94.1   Struttura

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

94.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 94.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.

figure/a2-x-hardware

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 94.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, mentre la maggior parte dei mouse in circolazione ne mette a disposizione due (compatibilità Microsoft). 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 94.2. La numerazione dei tasti dei mouse che ne hanno solo due è particolare.

figure/a2-x-mouse-2-3-tasti

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

94.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 dell'unità 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: host:n.m. La figura 94.3 mostra un esempio di questo tipo di utilizzo.

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

figure/a2-x-client-server

Un programma cliente può connettersi con un servente X sia locale che 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 III).

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

94.2   XFree86

XFree86, (1) nelle versioni 3.* è una collezione di serventi X per i sistemi operativi Unix, mentre nelle versioni 4.*, si riduce a un servente soltanto, in cui però alcuni adattatori grafici più vecchi non sono gestiti in modo ottimale. In origine si trattava esclusivamente della piattaforma i386, cosa che spiega il significato della sigla «86» che compare nel nome, ma poi il progetto si è esteso anche ad altre. XFree86 è una derivazione di X386.

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

/usr/bin/X11     -> /usr/X11R6/bin
/usr/lib/X11     -> /usr/X11R6/lib/X11
/usr/include/X11 -> /usr/X11R6/include/X11

XFree86 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 XF86Config-4 e XF86Config:

XF86Config-4 Se esiste questo file, viene scelto per primo da XFree86 in una versione 4.*.
XF86Config File di configurazione normale (si tratta del file previsto per le versioni 3.* e viene usato dalle versioni 4.* in mancanza di altro).

In generale, se si installa solo il servente grafico di una versione 4.*, oppure solo quelli delle versioni 3.*, è sufficiente un file /etc/X11/XF86Config, predisposto correttamente. Se invece si intende lasciare convivere entrambi i tipi di servente, dal momento che le direttive di configurazione sono incompatibili, diventa necessario usare due file di configurazione distinti.

94.2.1   Configurazione tradizionale

Per poter utilizzare XFree86 occorre configurare il file /etc/X11/XF86Config, oppure /etc/X11/XF86Config-4, di solito attraverso un programma che guida in questa fase.

Il programma più semplice è xf86config, oppure xf86config-v3 (il secondo fa riferimento esplicito alle versioni 3.*). 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 xf86config, nella versione 4.*.

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/Linux.

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 essa, 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 Microsoft compatibile (a due tasti).

In particolare, con GNU/Linux, quando di 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 50.2.2) allo scopo di verificare le caratteristiche del mouse:

mdetect -x[Invio]

/dev/psaux
PS/2

Si passa quindi alla configurazione:

xf86config[Invio]

This program will create a basic XF86Config file, based on menu selections you
make.

The XF86Config file usually resides in /usr/X11R6/etc/X11 or /etc/X11. A sample
XF86Config file is supplied with XFree86; it is configured for a standard
VGA card and monitor with 640x480 resolution. This program will ask for a
pathname when it is ready to write the file.

You can either take the sample XF86Config as a base and edit it for your
configuration, or let this program produce a base XF86Config file for your
configuration and fine-tune it.

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. SuperProbe may be able to help with this.

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.

[Invio]

First specify a mouse protocol type. Choose one from the following list:

 1.  Microsoft compatible (2-button protocol)
 2.  Mouse Systems (3-button protocol)
 3.  Bus Mouse
 4.  PS/2 Mouse
 5.  Logitech Mouse (serial, old type, Logitech protocol)
 6.  Logitech MouseMan (Microsoft compatible)
 7.  MM Series
 8.  MM HitTablet
 9.  Microsoft IntelliMouse

If you have a two-button mouse, it is most likely of type 1, and if you have
a three-button mouse, it can probably support both protocol 1 and 2. There are
two main varieties of the latter type: mice with a switch to select the
protocol, and mice that default to 1 and require a button to be held at
boot-time to select protocol 2. Some mice can be convinced to do 2 by sending
a special sequence to the serial port (see the ClearDTR/ClearRTS options).

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 94.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.

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.

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.

[Invio]

Please select one of the following keyboard types that is the better
description of your keyboard. If nothing really matches,
choose 1 (Generic 101-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  Brazilian ABNT2
 14  HP Internet
 15  Logitech iTouch
 16  Logitech Cordless Desktop Pro
 17  Logitech Internet Keyboard
 18  Compaq Internet
 19  Microsoft Natural Pro
 20  Genius Comfy KB-16M
 21  IBM Rapid Access
 22  IBM Rapid Access II
 23  Chicony Internet Keyboard

Enter a number to choose the keyboard.

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  U.S. English w/ISO9995-3
  3  U.S. English w/ deadkeys
  4  Armenian
  5  Azerbaidjani
  6  Belarusian
  7  Belgian
  8  Brazilian
  9  Bulgarian
 10  Canadian
 11  Czech
 12  Czech (qwerty)
 13  Danish
 14  Dvorak
 15  Estonian
 16  Finnish
 17  French
 18  Swiss French

Enter a number to choose the country.
Press enter for the next page

[Invio]

 19  German
 20  Swiss German
 21  Greek
 22  Croatian
 23  Hungarian
 24  Icelandic
 25  Israeli
 26  Italian
 27  Japanese
 28  Lithuanian qwerty "numeric"
 29  Lithuanian azerty standard
 30  Lithuanian qwerty "programmer's"
 31  Latvian
 32  Macedonian
 33  Norwegian
 34  Polish
 35  Portuguese
 36  Romanian

Enter a number to choose the country.
Press enter for the next page

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

26[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. If in doubt, check the monitor database
/usr/X11R6/lib/X11/doc/Monitors to see if your monitor is there.

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.

[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):

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:

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.
Enter an identifier for your monitor definition:

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

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).

Do you want to look at the card database?

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.

y[Invio]

  0  2 the Max MAXColor S3 Trio64V+                    S3 Trio64V+
  1  2-the-Max MAXColor 6000                           ET6000
  2  3DLabs Oxygen GMX                                 PERMEDIA 2
  3  928Movie                                          S3 928
  4  AGX (generic)                                     AGX-014/15/16
  5  ALG-5434(E)                                       CL-GD5434
  6  AOpen PA2010                                      Voodo Banshee
  7  ASUS 3Dexplorer                                   RIVA128
  8  ASUS PCI-AV264CT                                  ati
  9  ASUS PCI-V264CT                                   ati
 10  ASUS Video Magic PCI V864                         S3 864
 11  ASUS Video Magic PCI VT64                         S3 Trio64
 12  AT25                                              Alliance AT3D
 13  AT3D                                              Alliance AT3D
 14  ATI 3D Pro Turbo                                  ati
 15  ATI 3D Pro Turbo PC2TV                            ati
 16  ATI 3D Xpression                                  ati
 17  ATI 3D Xpression+                                 ati

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]

...

378  S3 868 with ATT 20C409                            S3 868
379  S3 868 with ATT 20C498 or 21C498                  S3 868
380  S3 868 with SDAC (86C716)                         S3 868
381  S3 86C260 (generic)                               S3 ViRGE/MX
382  S3 86C280 (generic)                               S3 ViRGE/MX
383  S3 86C325 (generic)                               S3 ViRGE
384  S3 86C357 (generic)                               S3 ViRGE/GX2
385  S3 86C365 (Trio3D)                                Generic VGA
386  S3 86C375 (generic)                               S3 ViRGE/DX
387  S3 86C385 (generic)                               S3 ViRGE/GX
388  S3 86C391 (Savage3D)                              Generic VGA
389  S3 86C764 (generic)                               S3 Trio64
390  S3 86C765 (generic)                               S3 Trio64V+
391  S3 86C775 (generic)                               S3 Trio64V2
392  S3 86C785 (generic)                               S3 Trio64V2
393  S3 86C801 (generic)                               S3 801/805
394  S3 86C805 (generic)                               S3 801/805
395  S3 86C864 (generic)                               S3 864

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

383[Invio]

Your selected card definition:

Identifier: S3 86C325 (generic)
Chipset:    S3 ViRGE
Driver:     s3virge
Do NOT probe clocks or use any Clocks line.

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

Il programma di configurazione conferma la scelta dell'adattatore grafico, avvisando in questo caso che non si dovrà sondare il clock e non si dovrà usare alcuna direttiva Clocks nella sezione Device.

[Invio]

Now you must give information about your video card. This will be used for
the "Device" section of your video card in XF86Config.

You must indicate how much video memory you have. 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 (e.g. ATI Mach64 is limited to
1024K with the SVGA server), 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  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.

5[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 S3 86C325 (generic).

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.

S3 ViRGE[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:

"640x480" "800x600" "1024x768" "1280x1024" for 8-bit
"640x480" "800x600" "1024x768" "1280x1024" for 16-bit
"640x480" "800x600" "1024x768" "1280x1024" 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 si avvierà il servente si potrà indicare la profondità desiderata e in base a quella scelta verrà 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é.

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 XF86Config file now. Make sure you don't accidently
overwrite a previously configured one.

Shall I write it to /etc/X11/XF86Config?

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 XF86Config.

y[Invio]

File has been written. Take a look at it before running 'startx'. Note that
the XF86Config 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 XF86Config(5) manual page.

Alla conclusione, il programma di configurazione ricorda che il file XF86Config deve trovarsi dove il servente si aspetta di trovarlo. La directory /etc/X11/ è il luogo corretto in quanto solitamente /usr/X11R6/lib/X11/XF86Config è un collegamento simbolico che punta a /etc/X11/XF86Config.

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.

Le versioni 3.* dei serventi XFree86 richiedevano che venisse definito un collegamento simbolico che puntasse all'eseguibile del servente adatto al proprio adattatore grafico. In condizioni normali, si trattava del collegamento /etc/X11/X. Nella fase di transizione tra le versioni 3.* e le 4.*, può rimanere questo collegamento simbolico, ma deve essere modificato manualmente. Se si usa il servente di una versione 4.*, deve puntare all'eseguibile XFree86 (/usr/X11R6/bin/XFree86).

94.2.2   Configurazione alternativa

XFree86 fornisce anche un altro programma per la costruzione del file di configurazione /etc/X11/XF86Config. Si tratta dell'eseguibile xf86cfg, 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]

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:

xf86cfg -textmode

94.2.3   Configurazione con Xconfigurator

La distribuzione Red Hat offre l'applicativo Xconfigurator per facilitare la configurazione di XFree86, con un funzionamento molto simile a xf86cfg 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 94.4).

Figura 94.4. Scelta del monitor.

figure/a2-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 94.5) e verticale (figura 94.6). È importante che le frequenze selezionate non superino i limiti stabiliti dalla casa costruttrice del monitor.

Figura 94.5. Scelta della frequenza orizzontale.

figure/a2-xconfigurator-monitor-h

Figura 94.6. Scelta della frequenza verticale.

figure/a2-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 94.7.

Figura 94.7. Scelta del clockchip.

figure/a2-xconfigurator-clockchip

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

Figura 94.8. Indicazione della memoria video disponibile.

figure/a2-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 94.9 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 94.9. Indicazione delle modalità video utilizzabili.

figure/a2-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.

94.3   Lettura del file /etc/X11/XF86Config

La lettura del file /etc/X11/XF86Config può dare molte informazioni utili sull'organizzazione di XFree86. In particolare, i programmi utilizzati per generarlo sono realizzati in modo da inserire molti commenti, tra cui anche molti 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 il file di configurazione generato attraverso xf86config, come descritto nella sezione 94.2.1.


Section "Module"
    Load        "dbe"   # Double buffer extension
    SubSection  "extmod"
      Option    "omit xfree86-dga"   # don't initialise the DGA extension
    EndSubSection
    Load        "type1"
    Load        "freetype"
EndSection

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

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

Section "InputDevice"
    Identifier  "Keyboard1"
    Driver      "Keyboard"
    Option "AutoRepeat" "500 30"
    Option "XkbRules"   "xfree86"
    Option "XkbModel"   "pc104"
    Option "XkbLayout"  "it"
EndSection

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

Section "Monitor"
    Identifier  "Addonics MON-7C8B"
    HorizSync   31-60
    VertRefresh 50-90
EndSection

Section "Device"
    Identifier  "Standard VGA"
    VendorName  "Unknown"
    BoardName   "Unknown"
    Driver     "vga"
    # Clocks    25.2 28.3
EndSection

Section "Device"
    Identifier  "S3 ViRGE"
    Driver      "s3virge"
    #VideoRam    4096
    # Insert Clocks lines here if appropriate
EndSection

Section "Screen"
    Identifier  "Screen 1"
    Device      "S3 ViRGE"
    Monitor     "Addonics MON-7C8B"
    DefaultDepth 24

    Subsection "Display"
        Depth       8
        Modes       "1024x768" "1280x1024"
        ViewPort    0 0
    EndSubsection
    Subsection "Display"
        Depth       16
        Modes       "1024x768" "1280x1024"
        ViewPort    0 0
    EndSubsection
    Subsection "Display"
        Depth       24
        Modes       "1024x768" "1280x1024"
        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).

94.3.1   Sezione «Files»

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

RgbPath "/usr/X11R6/lib/X11/rgb"

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

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

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

94.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+num(+)] («control», «alt», «+ del tastierino numerico») e [Ctrl+Alt+num(-)] («control», «alt», «- del tastierino numerico»).

94.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 /etc/X11/XF86Config 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 XFree86 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, che corrisponde in pratica a un mouse MouseSystems (qualunque sia il tipo di mouse utilizzato effettivamente). Si veda a questo proposito anche quanto descritto nella sezione 50.2.

Section "InputDevice"
    Identifier          "Mouse1"
    Driver              "mouse"
    Option              "Device"                "/dev/gpmdata"
    Option              "Protocol"              "MouseSystems"
    Option              "Emulate3Buttons"       "true"
EndSection

94.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.(2)

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 96). 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 le versioni 4.* di XFree86, 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.

94.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      "VGA generica"

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.

Chipset         "generic"

La direttiva Chipset permette di definire esplicitamente il tipo di integrato grafico utilizzato. I nomi utilizzabili dipendono dal servente grafico e si possono conoscere consultando la pagina di manuale di questo (XF86_*(1)).

VideoRam        256

La direttiva Videoram permette di definire esplicitamente la quantità massima di memoria disponibile nell'adattatore grafico. Il valore viene espresso in kibibyte (simbolo: Kibyte).

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.

94.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 si potranno 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, ma 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

94.4   Accesso a un servente di caratteri

È già stata descritta a grandi linee la sezione Files della configurazione di XFree86, 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 XFree86 per includere anche quella tra i percorsi previsti. Per semplificare l'accesso ai caratteri esistono dei serventi di caratteri, con i quali XFree86 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, (3) X-TT (4) e Xfstt(5)); 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 XFree86 per dichiarare come questi possono essere raggiunti. In caso di socket di dominio Unix, si useranno direttive di questo tipo:

FontPath "unix/:71nn"

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

FontPath "inet/host:71nn"

FontPath "tcp/host: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 2003.01.01 --- Copyright © 2000-2003 Daniele Giacomini -- daniele @ swlibero.org

1) XFree86   software libero soggetto a diverse licenze a seconda della porzione di codice coinvolta

2) 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.

3) XFree86   software libero soggetto a diverse licenze a seconda della porzione di codice coinvolta

4) XFree86   software libero soggetto a diverse licenze a seconda della porzione di codice coinvolta

5) Xfstt   GNU LGPL


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

[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico]