XFree86-4.4.0

Introduzione a XFree86

XFree86 è un'implementazione open-source liberamente distribuibile del sistema X Window. XFree86 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 XFree86

Necessarie

libpng-1.2.8

Opzionali

Linux-PAM-0.78; i seguenti pacchetti sono inclusi nel pacchetto XFree86, sebbene essi siano aggiornati più spesso che il pacchetto XFree86, e sono altamente raccomandati: expat-1.95.8, FreeType-2.1.9, Fontconfig-2.2.3.

[Nota]

Nota

Se si sceglie di non installare expat, FreeType2, e Fontconfig, il file host.def seguente dovrà essere modificato per istruire XFree86 a costruirlo.

Istruzioni di download

Ci sono molti file che devono essere presi dalla locazione di download:

  • XFree86-4.4.0-src-1.tgz

  • XFree86-4.4.0-src-2.tgz

  • XFree86-4.4.0-src-3.tgz

  • XFree86-4.4.0-src-4.tgz

  • XFree86-4.4.0-src-5.tgz

  • XFree86-4.4.0-src-6.tgz

  • XFree86-4.4.0-src-7.tgz

I primi tre pacchetti sono programmi XFree86, il quarto e quinto sono font, il sesto è normale documentazione, e il settimo è documentazione hardcopy. Ci sono anche due pacchetti doctools-1.3.1.tgz, che contengono programmi per rigenerare documentazione hardcopy, e utils-1.1.0.tgz, che contiene GNU TAR e zlib, che sono già installati in un sistema LFS.

Per verificare l'integrità del proprio download, scaricare il file SUMS.md5sum. Quindi:

md5sum -c SUMS.md5sum

I soli errori che si possono vedere sono per i file README, doctools-1.3.1.tgz, utils-1.1.0.tgz e XFree86-xtest-4.0.x.tar.bz2 se essi non sono stati scaricati.

Installazione di XFree86

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 propria 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 XFree86 in un ambiente chroot assicurarsi che la versione del kernel del sistema base e del sistema target siano le stesse.

Creazione di host.def

Anche se XFree86 si compilerà senza un file host.def il seguente file è raccomandato per personalizzare l'installazione. Partire dalla directory xc.

[Nota]

Nota

Il file host.def è un file C, non un file di configurazione normale. Se si apportano dei cambiamenti, assicurarsi che i caratteri di commento (/* e */) siano bilanciati. La maggior parte dei campi nel file seguente sono commentati, con le impostazioni di default mostrate.

cat > config/cf/host.def << "EOF"
/* Begin XFree86 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. Si noti che è stato segnalato che la linea di
 * ottimizzazione per Ppc causa errori di segmentation fault durante la costruzione.
 * Se ciò avviene, si provi a costruire senza  la linea DefaultGcc2PpcOpt. */

/* #define DefaultGcc2i386Opt  -O2 -fomit-frame-pointer -march=i686 */
/* #define DefaultGcc2AxpOpt   -O2 -mcpu=ev6 */
/* #define DefaultGcc2PpcOpt   -O2 -mcpu=750 */

/* Le seguenti definizioni normalmente sono settate correttamente dagli script di
 * XFree86. Si possono togliere i commenti da esse se si vuole essere sicuri. *********/
 
/* #define HasMTRRSupport      YES  */ /* Enabled in kernel; */
                                       /* see kernel docs */
/* #define HasMMXSupport        NO  */ /* Any i586 or above */
/* #define HasKatmaiSupport     NO  */ /* PIII SSE instructions */
/* #define Has3DNowSupport      NO  */ /* AMD instructions */


/* Questo settaggio riduce leggermente il tempo di compilazione omettendo i
 * dispositivi di input usati raramente. Si può trovare la lista completa in
 * config/cf/xfree86.cf *********************************************/

#define XInputDrivers                 mouse void

/* VIDEO DRIVERS ****************************************************/

/* Se si è sicuri di volere solo i driver per una o poche schede
 * video si possono cancellare i driver che non si vogliono. ***************/


#define XF86CardDrivers  mga glint nv tga s3 s3virge sis rendition \
                         neomagic i740 tdfx savage \
                         cirrus vmware tseng trident chips apm \
                         GlideDriver fbdev i128 nsc \
                         ati i810 AgpGartDrivers DevelDrivers ark \
                         cyrix siliconmotion \
                         vesa vga \
                         dummy XF86OSCardDrivers XF86ExtraCardDrivers


/* USER AND SYSTEM DEFAULT PATHS *************************************/

/* Questi settaggi impostano le variabili PATH usate da xdm. Si veda README per */
/* una descrizione dettagliata e si modifichi il seguente secondo i propri bisogni. ***/

/* #define DefaultSystemPath \
       /usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin */
/* #define DefaultUserPath /usr/bin:/bin:/usr/X11R6/bin */

/* FONT SERVER AND LIBRARY SETTINGS **********************************/

/* Queste impostazioni sono i default  **********************************/

/* #define BuildFontServer       YES  */ /*For Ghostscript Print Server*/
/* #define SharedLibFont         YES  */
/* #define CompressAllFonts      YES  */
/* #define GzipFontCompression   YES  */

/* Questi settaggi assicurano che usiamo le nostre librerie ************************/
#define HasFreetype2             YES
#define HasFontconfig            YES
#define HasExpat                 YES
#define HasLibpng                YES
#define HasZlib                  YES

/* Il font path può essere ridefinito nel file di configurazione di XF86 *************/

/*
#define DefaultFontPath          $(FONTDIR)/misc/,$(FONTDIR)/75dpi/,\
$(FONTDIR)/100dpi/,$(FONTDIR)/Type1,$(FONTDIR)/local,\
$(FONTDIR)/TrueType,$(FONTDIR)/CID,$(FONTDIR)/Speedo
*/


/* INTERNATIONAL FONTS. Cambiare in YES se si ha bisogno di qualcuno di questi.
 * Questi sono di default. **************************************************/

/* #define BuildCyrillicFonts            NO  */
/* #define BuildArabicFonts              NO  */
/* #define BuildISO8859_6Fonts           NO  */
/* #define BuildGreekFonts               NO  */
/* #define BuildISO8859_7Fonts           NO  */
/* #define BuildHebrewFonts              NO  */
/* #define BuildISO8859_8Fonts           NO  */
/* #define BuildKOI8_RFonts              NO  */
/* #define BuildJapaneseFonts            NO  */
/* #define BuildJISX0201Fonts            NO  */
/* #define BuildKoreanFonts              NO  */
/* #define BuildChineseFonts             NO  */

/* DOCUMENTATION SETTINGS ********************************************/

/* Questi settaggi sono i default. ***********************************/

/* #define BuildLinuxDocHtml        NO  */  /* X Docs in Html format */
/* #define BuildLinuxDocPS          NO  */  /* PostScript format */
/* #define BuildAllSpecsDocs        NO  */  /* Various docs */
/* #define BuildHtmlManPages        NO  */

/* GENERAL SETTINGS: You generally want to leave these alone when
 * building X on an LFS system ***************************************/

#define GccWarningOptions         -pipe /* Speed up compiles */
#define TermcapLibrary            -lncurses
#define XprtServer                YES /* Needed by realplayer */
#define XnestServer               YES
#define XAppLoadDir               EtcX11Directory/app-defaults
#define VarLibDir                 /var/lib
#define XFree86Devel               NO
#define FSUseSyslog               YES
#define ThreadedX                 YES
#define HasPam                     NO        
#define SystemManDirectory        /usr/share/man /*Instead of /usr/man*/
#define HasLibCrypt               YES
#define InstallXinitConfig        YES
#define InstallXdmConfig          YES
#define ForceNormalLib            YES
#define BuildSpecsDocs             NO

/* End XFree86 host.def file */
EOF

Editare il file secondo il proprio hardware e desideri.

Comandi di costruzione

Alcune vulnerabilità sono state riportate in libXpm. Un utente remoto può essere in grado di eseguire codice arbitrario in applicazioni che usano libXpm. Il team Xorg ha rilasciato una patch per la propria versione 6.8.0, ma funziona anche per XFree86. Applicare la patch:

patch -Np1 -i ../xorg-CAN-2004-0687-0688.patch

Installare XFree86 eseguendo i seguenti comandi:

sed -i -e "s@^#include <linux/config.h>@/* & */@" \
    `grep -lr linux/config.h *` &&
( make WORLDOPTS="" World 2>&1 | \
    tee xfree-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 WORLDOPTS="" World 2>&1 | tee xfree-compile.log && exit $PIPESTATUS ): Questo comando esegue dei Makefile multipli per ricostruire completamente il sistema. WORLDOPTS="" disabilita le impostazioni di default per continuare dopo aver incontrato un errore. 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 XFree86 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 XFree86, 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 XFree86

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 XF86Config con:

cd ~
XFree86 -configure

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

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

  • Sezione "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". Impostare 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".

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

  • Section "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.

  • Section "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:

XFree86 -xf86config ~/XF86Config.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/XFree86.0.log per vedere cosa è andato male.

Spostare il file di configurazione alla sua locazione finale:

mv ~/XF86Config.new /etc/X11/XF86Config

Create .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 XFree86 crea la directory /tmp/.ICE-unix se essa non esiste. Se questa directory non appartiene a root XFree86 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 XFree86 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ò controllare la sezione chiamata “Componenti del sistema X Window”.

Contenuti

Il pacchetto XFree86 contiene il sistema a finestre X per Linux (e altri sistemi operativi). Esso comprende il server X, font, xterm, un semplice window manager (twm), varie utilità, driver video e vari driver input incluso mouse e tastiera.

XFree86 contiene anche librerie e file header per lo sviluppo dei programmi di X Window System.

Descrizione

[Nota]

Nota

Le liste seguenti non sono complete. La lista completa dei programmi è in /usr/X11R6/bin. Per ulteriori informazioni su questi programmi, si veda la rispettiva pagina di manuale.

Programmi installati: XFree86, xf86config, xf86cfg, startx, xinit, twm, xterm, xwininfo, x11perf, xlsfonts, xvidtune, xload, xcalc, xclock, oclock, xmodmap
Librerie installate: libGL.so, libGLU.so, libSM.so, libXi.so, libXrender.so, libXt.so, libXfont.so
Directory installate: /usr/X11R6/, /etc/X11/

Brevi descrizioni

XFree86

è l'implementazione X11R6 del server X Window System.

xf86config

è un programma interattivo per la generazione del file XF86Config da usare con i server X XFree86.

xf86cfg

è un tool per configurare XFree86, che può essere usato o per scrivere il file di configurazione iniziale o fare personalizzazioni alla configurazione corrente.

startx

è uno script per inizializzare la sessione X. Esso esegue xinit.

xinit

è usato per avviare il server X Window System.

twm

(Tab Window Manager) è un window manager incluso nell' X Window System.

xterm

è un emulatore di terminale per X.

xwininfo

è un'utilità di informazione window per X.

x11perf

è un programma di test per le prestazioni del server X11.

xlsfonts

è un programma per elencare i font disponibili nel server X.

xvidtune

è il regolatore del modo video per XFree86.

xload

è un visualizzatore del carico medio del sistema per X.

xcalc

è un calcolatore scientifico per X.

xclock

è un programma orologio per X.

oclock

è un programma orologio per X.

xmodmap

è un'utilità per modificare mappe tastiera e le mappature dei tasti del mouse in X.

Last updated on