Questo capitolo tratta dell'ambiente utente grafico.
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.
Download (FTP): ftp://ftp.opengroup.org/pub/x.org/pub/X11R6.8.2/src-single/X11R6.8.2-src.tar.bz2
Download MD5 sum: 8131cd7ea1e4566e6e05c438a93fcfe1
Dimensione del download: 43 MB
Stima dello spazio su disco richiesto: 655 MB
Stima del tempo di costruzione: 17.8 SBU
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.
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.
Se si costruisce Xorg in un ambiente chroot assicurarsi che la versione del kernel del sistema base e del sistema obiettivo siano le stesse.
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
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
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.
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.
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
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..
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."
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.
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.