Ambiente X Window System

Questo capitolo tratta dell'ambiente utente grafico.

Xorg-6.8.2

Introduzione a Xorg

[Nota]

Nota

Ci sono due pacchetti in BLFS che implementano l'X Window System: Xorg e XFree86. Questi pacchetti sono piuttosto simili. Infatti, il sistema alla base di Xorg è XFree86-4.4.0RC2. La differenza principale nel momento in cui scriviamo è la licenza dei pacchetti. Per chi costruisce un pacchetto per il proprio uso questo non è un problema significativo. La maggior parte delle distribuzioni commerciali ha deciso di usare il pacchetto Xorg, ma molte usano ancora XFree86.

Una seconda ragione per il forking dei pacchetti X sono gli obbiettivi stabiliti dagli sviluppatori. Alcuni sviluppatori non erano soddisfatti dell'amministrazione e progresso di XFree86. I piani futuri di X.org includono significativi miglioramenti all'interno del sistema e rilasci più frequenti.

XFree86 continua ad essere un'applicazione solida e conservativa con eccellente supporto driver.

Sia Xorg che XFree86 possono essere installate nello stesso modo, ma questa sezione fornirà una variazione all'installazione leggermente diversa e più attuale.

Xorg è un'implementazione open-source liberamente distribuibile del sistema X Window. Questa applicazione fornisce un'interfaccia client/server tra display hardware (mouse, tastiera, e schermi video) e ambiente desktop, e fornisce sia l'infrastruttura a finestre che una interfaccia applicazioni (API) standardizzata.

Informazioni sul pacchetto

Dipendenze di Xorg

Opzionali

Linux-PAM-0.78

Istruzioni di download

Come alternativa a scaricare l'intero albero dei sorgenti in un singolo file, ci sono molti file che devono essere prelevati dalla locazione di download (directory /pub/x.org/pub/X11R6.8.2/src/):

  • X11R6.8.2-src1.tar.gz

  • X11R6.8.2-src2.tar.gz

  • X11R6.8.2-src3.tar.gz

  • X11R6.8.2-src4.tar.gz

  • X11R6.8.2-src5.tar.gz

  • X11R6.8.2-src6.tar.gz

  • X11R6.8.2-src7.tar.gz

Il primo pacchetto contiene le librerie Xorg e i programmi di supporto, il secondo contiene programmi standard X, il terzo contiene il server X, il quarto e quinto sono font, il sesto è normale documentazione, e il settimo è documentazione hardcopy.

Per verificare l'integrità del proprio file, si scarichi il file md5sums. Quindi:

md5sum -c md5sums

Il pacchetto (o tutti i sette pacchetti) deve dare uno status OK.

Installazione di Xorg

Impostazioni di compilazione del kernel

Se si ha un Intel P6 (Pentium Pro, Pentium II e successivi), si raccomanda di compilare il supporto MTRR (Memory Type Range Registers) nel kernel. Il kernel può mappare CPU Cyrix e AMD sull'interfaccia MTRR, quindi la selezione di questa opzione è utile anche per questi processori. Questa opzione si trova nel menu "Processor type and features". Può aumentare le prestazioni nelle operazioni immagine di 2.5 volte o più su schede video PCI o AGP.

Nella sezione "Character Devices" abilitare il supporto AGP e selezionare il supporto chipset sulla propria scheda madre. Se non si conosce il chipset si possono selezionare tutti i tipi di chip al costo di un kernel più grosso. Solitamente è possibile determinare il chipset della porpria scheda madre eseguendo il comando lspci, un programma del pacchetto PCI Utilities-2.1.11.

Nella sezione "Character Devices", disabilitare Direct Rendering Manager a meno che non si abbia una scheda video supportata da Direct Rendering Infrastructure(DRI). Un elenco completo delle schede video supportate da DRI si può trovare presso http://dri.sourceforge.net nella sezione "Status". Attualmente, le schede supportate includono le 3dfx (Voodoo, Banshee), 3Dlabs, ATI (Rage Pro, Rage 128, Radeon 7X00, Radeon 2), Intel (i810, i815), e Matrox (G200, G400, G450).

Inoltre NVidia fornisce i propri driver binari closed source, che non fanno uso di DRI. Se si vuole usare questi driver, non bisogna abilitare DRI.

Se è stato apportato qualche cambiamento alla configurazione del kernel, ricompilare e installare il nuovo kernel.

[Nota]

Nota

Se si costruisce Xorg in un ambiente chroot assicurarsi che la versione del kernel del sistema base e del sistema obiettivo siano le stesse.

Sopprimere le modifiche relative a Xprint in /etc

Xorg vuole mettere i suoi script profile e di avvio nella directory /etc anche se gli viene specificato di non compilare nulla relativo a server o client Xprint (si veda il seguente host.def). Il seguente comando sopprimerà tali modifiche:

sed -i '/^SUBDIRS =/s/ etc$//' programs/Xserver/Xprint/Imakefile

Impostazione di una directory Shadow

Quando si costruisce Xorg bisogna creare una directory shadow di links simbolici per il codice compilato. Per fare questo, fare prima lndir. Partire dalla directory xc:

pushd config/util &&
make -f Makefile.ini lndir

Ora, come utente root:

cp lndir /usr/bin/

E di nuovo come utente normale:

popd

Ora si crei l'albero shadow:

mkdir ../xcbuild &&
cd ../xcbuild &&
lndir ../xc

Creazione di host.def

Il prossimo passo è creare il file config/cf/host.def. La documentazione di Xorg indica che l'applicazione verrà costruita senza un file host.def, ma le librerie incluse per Fontconfig e FreeType2 non si costruiscono correttamente su un sistema LFS di base. Pertanto bisogna specificare che queste librerie, così come altre, devono essere importate dal sistema.

[Nota]

Nota

config/cf/host.def è un file C, non uno script di shell. Assicurarsi che i commenti delimitati da /* ... */ siano bilanciati quando si modifica il file.

cat > config/cf/host.def << "EOF"
/* Begin Xorg host.def file */
 
/* Informazioni sul sistema. Se si legge e configura solo una sezione
 * allora deve essere questa. I default dell'architettura Intel
 * sono impostati per un i686 e superiore. Axp è per l'architetture Alpha
 * e Ppc è per il Power PC. AMD64 è per il processore Opteron.
 * Si noti che è stato segnalato che la linea di ottimizzazione per Ppc causa
 * errori di segmentation faults durante la costruzione. Se ciò avviene,
 * si provi a costruire senza  la linea DefaultGcc2PpcOpt line.  ***********/
 
/* #define DefaultGcc2i386Opt -O2 -fno-strength-reduce \
                              -fno-strict-aliasing -march=i686 */
/* #define DefaultGccAMD64Opt -O2 -fno-strength-reduce \
                              -fno-strict-aliasing */
/* #define DefaultGcc2AxpOpt  -O2 -mcpu=ev6 */
/* #define DefaultGcc2PpcOpt  -O2 -mcpu=750 */

#define HasFreetype2            YES
#define HasFontconfig           YES
#define HasExpat                YES
#define HasLibpng               YES
#define HasZlib                 YES

/*
 * Quali driver costruire. Quando si costruisce un server statico, ciascuno
 * di questi verrà incluso in essi. Quando si costruisce il server caricabile
 * verrà costruito ciascuno di questi moduli.
 *
#define XF86CardDrivers         mga glint nv tga s3virge sis rendition \
                                neomagic i740 tdfx savage \
                                cirrus vmware tseng trident chips apm \
                                GlideDriver fbdev i128 \
                                ati AgpGartDrivers DevelDrivers ark \
                                cyrix siliconmotion vesa vga \
                                XF86OSCardDrivers XF86ExtraCardDrivers
*/

/*
 * Selezionare i dispositivi XInput che si vogliono togliendo i commenti da qui.
 *
#define XInputDrivers           mouse keyboard acecad calcomp citron \
                                digitaledge dmc dynapro elographics \
                                microtouch mutouch penmount spaceorb \
                                summa wacom void magictouch aiptek
 */

/* La maggior parte delle installazioni hanno bisogno solo di questo */

#define XInputDrivers           mouse keyboard

/* Disabilitare la costruzione dei server e client Xprint fino a quando non si è
 * capito cosa fare, ma costruire le librerie Xprint per permettere ai binari precompilati
 * come Acrobat Reader di funzionare.
 */

#define XprtServer              NO
#define BuildXprintClients      NO

/* End Xorg host.def file */
EOF

Si potrebbero considerare molte altre opzioni. Un file esempio ben documentato è config/cf/xorgsite.def.

Comandi di costruzione

Installare Xorg eseguendo i seguenti comandi:

sed -i -e "s@^#include <linux/config.h>@/* & */@" \
    `grep -lr linux/config.h *` &&
( make World 2>&1 | tee xorg-compile.log && exit $PIPESTATUS )

Ora, come utente root:

make install && 
make install.man &&
ln -sf ../X11R6/bin /usr/bin/X11 &&
ln -sf ../X11R6/lib/X11 /usr/lib/X11 &&
ln -sf ../X11R6/include/X11 /usr/include/X11

Spiegazioni dei comandi

sed -i -e "s@^#include <linux/config.h>@...: Il pacchetto Linux-Libc-Headers installato in LFS installa un file /usr/include/linux/config.h che non è compatibile con applicazioni in userspace. La correzione raccomandata per applicazioni che includono questo file è di rimuoverlo (vedere linux-libc-headers FAQ). Sed usa grep -lr per sostituire tutte le occorrenze. Se lo si desidera si può semplicemente rimuovere (commentare) la linea nel file del driver video appropriato personalizzato host.def.

( make World 2>&1 | tee xorg-compile.log && exit $PIPESTATUS ): Questo comando esegue dei Makefile multipli per ricostruire completamente il sistema. 2>&1 redirige i messaggi di errore alla stessa locazione dello standard output. Il comando tee permette di vedere l'output e contemporaneamente registrare i risultati in un file. Le parentesi attorno al comando eseguono l'intero comando in una sottoshell e infine il comando exit $PIPESTATUS assicura che sia il risultato di make e non quello del comando tee ad essere restituito..

[Nota]

Nota

Quando si ricostruisce Xorg, un comando separato che può essere usato se sono stati apportati solo cambiamenti minimi ai sorgenti è make Everything. Questo non rimuove automaticamente i file generati e ricostruisce solo quei file o programmi che sono troppo datati.

ln -sf ../X11R6/bin /usr/bin/X11
ln -sf ../X11R6/lib/X11 /usr/lib/X11
ln -sf ../X11R6/include/X11 /usr/include/X11

Questi comandi sono presenti per abilitare per altri (assenti) pacchetti la costruzione su Xorg, anche se il Filesystem Hierarchy Standard dice: "In generale, il software non deve essere installato o gestito attraverso i precedenti link simoblici. Essi sono pensati solo per l'utilizzo da parte degli utenti."

Configurazione di Xorg

Editare /etc/ld.so.conf e aggiungere /usr/X11R6/lib. Eseguire:

ldconfig

Assicurarsi che /usr/X11R6/bin e /usr/X11R6/lib/pkgconfig siano aggiunti rispettivamente alle proprie variabili ambiente PATH e PKG_CONFIG_PATH. Le istruzioni per fare questo sono descritte nella sezione "I file di avvio della shell Bash."

Creare il file xorg.conf con:

cd ~
Xorg -configure

Lo schermo diventerà nero e si potrebbero sentire dei click nel monitor. Questo comando creerà un file xorg.conf.new nella propria home directory.

Editare xorg.conf.new per adattarlo al proprio sistema. I dettagli del file si trovano nella pagina manuale di xorg.conf. Alcune delle cose che si potrebber voler fare sono:

  • Section "Files". Cambia l'ordine dei percorsi dei font cercati. Si potrebbero voler mettere i font 100dpi prima dei font 75dpi se il proprio sistema normalmente arriva a 100dpi. Si potrebbero voler rimuovere completamente alcune directory di font.

  • Sezione "Module". Se si stanno per installare i driver NVidia si rimuova la linea "dri".

  • Sezioni "InputDevice". Specificare il parametro Device a "/dev/input/mice" e Protocol a "auto" per impostare il proprio mouse. Si potrebbe anche voler cambiare la velocità dell'autorepeat della tastiera aggiungendo Option "Autorepeat" "250 30".

  • Sezione "Monitor". Specificare i valori di VertRefresh e HorizSync se il sistema non individua automaticamente il monitor e i suoi valori.

  • Sezione "Device". Si possono impostare alcune delle opzioni disponibili per il proprio driver video selezionato. Una descrizione dei parametri del driver è nella pagina manuale del proprio driver.

  • Sezione "Screen". Si aggiunga una direttiva DefaultDepth come: DefaultDepth 16. Nella SubSection per la propria profondità di default si aggiunga una linea modes come: Modes "1280x1024" "1024x768". Il primo modo elencato normalmente sarà la risoluzione di partenza.

Testare il sistema con:

X -config ~/xorg.conf.new

Si otterrà solo uno sfondo grigio con un cursore mouse a forma di X, ma ciò conferma che il sistema è funzionante. Uscire con Control-Alt-Backspace. Se il sistema non funziona, esaminare /var/log/Xorg.0.logper vedere cosa è andato male.

Spostare il file di configurazione alla sua locazione finale:

mv ~/xorg.conf.new /etc/X11/xorg.conf

Creare .xinitrc:

cat > ~/.xinitrc << "EOF"
# Begin .xinitrc file
xterm  -g 80x40+0+0   &
xclock -g 100x100-0+0 &
twm
EOF

Questo fornisce uno schermo iniziale con un xterm e un orologio gestiti da un semplice window manager, Tab Window Manager. Per i dettagli su twm, si veda la pagina di manuale.

[Nota]

Nota

Quando necessario Xorg crea la directory /tmp/.ICE-unix se essa non esiste. Se questa directory non appartiene a root Xorg rallenta l'avvio di alcuni secondi e inoltre aggiunge un avviso al logfile. Ciò influenza anche l'avvio di altre applicazioni. Per migliorare le prestazioni è consigliabile creare manualmente la directory prima che Xorg la usi. Aggiungere la creazione del file a /etc/sysconfig/createfiles che è letto dallo script di avvio /etc/rc.d/init.d/cleanfs.

cat >> /etc/sysconfig/createfiles << "EOF"
/tmp/.ICE-unix dir 1777 root root
EOF

Avviare X con:

startx

per ottenere un sistema X Window di base funzionante.

A questo punto, si può verificare la sezione chiamata “Componenti del sistema X Window”.

Per una lista dei pacchetti e una decrizione dei comandi, si veda la sezione in XFree86 Contenuti and Descriziones.