XFree86 est une implémentation opensource librement redistributable de X Window System. XFree86 fournit une interface client/server entre le matériel d'affichage (souris, clavier et affichage vidéo) et l'environnement de bureau tout en apportant aussi l'infrastructure de fenêtrage et une interface standardisée des applications (API).
Téléchargement (HTTP): http://gnu.kookel.org/ftp/XFree86/4.4.0/source/
Téléchargement (FTP): ftp://ftp.xfree86.org/pub/XFree86/4.4.0/source/
Taille du téléchargement: 52 Mo
Estimation de l'espace disque requis: 636 Mo
Estimation du temps de construction: 14,3 SBU
Linux_PAM-0.77 et les packages suivants sont inclus dans le package XFree86, néanmoins ils sont plus souvent mis à jour que le package XFree86 et sont hautement recommandés: expat-1.95.7, FreeType-2.1.7, Fontconfig-2.2.2
Si vous choisissez de ne pas installer expat-1.95.7, FreeType-2.1.7 et Fontconfig-2.2.2, le fichier host.def ci-dessous devra être modifié pour montrer à XFree86 la façon de les construire.
Plusieurs fichiers devront être récupérés à partir de l'emplacement de téléchargement:
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
Les trois premiers packages sont les programmes XFree86, le quatrième et le cinquième concernent les polices, le sixième contient la documentation standard et le dernier une version imprimable de la documentation. Il reste aussi deux packages doctools-1.3.1.tgz, contenant les programmes pour regénérer la documentation imprimable, et utils-1.1.0.tgz contenant les outils GNU TAR et zlib qui sont déjà installés sur un système LFS.
Pour vérifier l'intégrité de vos téléchargements, récupérez le fichier SUMS.md5sum. Puis:
md5sum -c SUMS.md5sum
Les seules erreurs que vous devriez apercevoir sont pour les fichiers README, doctools-1.3.1.tgz et utils-1.1.0.tgz si vous ne les avez pas téléchargé.
Si vous avez un Intel P6 (Pentium Pro, Pentium II et suivants), il est recommandé de compiler le support de MTRR (acronyme de Memory Type Range Registers) dans le noyau. Le noyau peut interfacer les CPU Cyrix et AMD avec l'interface MTRR, donc la sélection de cette option est aussi utile pour ces processeurs. Cette option se trouve dans le menu Processor type and features. Il peut améliorer la performance des opérations d'écriture d'images, de la 2,5 fois à plus sur les cartes vidéo PCI et AGP.
Dans la section "Character Devices", activez le support de l'AGP et sélectionnez le support du chipset de votre carte mère. Si vous ne connaissez pas le chipset, vous pouvez sélectionner tous les types de composants, ce qui va agrandir la taille de votre noyau. Vous pouve déterminer habituellement le chipset de votre carte mère en lançant:
cat /proc/pci
Dans la section "Character Devices", désactivez le 'Direct Rendering Manager' sauf si vous avez une carte vidéo disposant de l'infrastructure 'Direct Rendering Infrastructure' (DRI). Une liste complète de cartes vidéo DRI supportées est disponible sur http://dri.sourceforge.net dans la section Status. Actuellement, les cartes supportés incluent celles de 3dfx (Voodoo, Banshee), 3Dlabs, ATI (Rage Pro, Rage 128, Radeon 7X00, Radeon 2), Intel (i810, i815) et Matrox (G200, G400, G450). Si vous activez DRI ici, assurez-vous de sélectionner le(s) carte(s) vidéo que vous voulez supporter comme module.
De plus, NVidia fournit ses propres pilotes par un binaire (sources fermés) qui n'utilise pas le DRI. Si vous comptez utiliser ces pilotes, n'activez pas le DRI.
Si vous avez effectué des modifications à la configuration du noyau, recompilez-le.
Copiez /usr/src/linux/arch/i386/boot/bzImage et /usr/src/linux/System.map dans /boot, éditez /etc/lilo.conf de manière appropriée et lancez lilo.
Si vous construisez XFree86 dans un environnement chroot, assurez-vous que la version du noyau du système de base et du système cible sont les mêmes. Ceci est tout spécialement important si vous avec activé le support de DRI en tant que module en suivant les instructions ci-dessus.
Bien que XFree86 compilera sans fichier host.def, le fichier suivant est recommandé pour personnalisation de l'installation. Commencez à partir du répertoire xc.
Le fichier host.def est un fichier C, pas le fichier de configuration habituel. Si vous effectuez des changements, assurez-vous que les caractères de commentaire (/* et */) sont corrects. La plupart des entrées dans le fichier ci-dessous ne sont plus en commentaires avec les paramètrages par défaut.
cat > config/cf/host.def << "EOF" /* Begin XFree86 host.def file */ /* System Related Information. If you read and configure only one * section then it should be this one. The Intel architecture defaults are * set for a i686 and higher. Axp is for the Alpha architecture and Ppc is * for the Power PC. Note that there have been reports that the Ppc * optimization line causes segmentation faults during build. If that * happens, try building without the DefaultGcc2PpcOpt line. **************/ /* #define DefaultGcc2i386Opt -O2 -fomit-frame-pointer -march=i686 */ /* #define DefaultGcc2AxpOpt -O2 -mcpu=ev6 */ /* #define DefaultGcc2PpcOpt -O2 -mcpu=750 */ /* The following definitions are normally set properly by XFree86's scripts. * You can uncomment them if you want to make sure. ************************/ /* #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 */ /* This setting reduces compile time a little by omitting rarely used input * devices. You can find the complete list in config/cf/xfree86.cf ********/ #define XInputDrivers mouse void /* VIDEO DRIVERS ***********************************************************/ /* If you are sure you only want the drivers for one or a few video cards, * you can delete the drivers you do not want. *****************************/ #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 *******************************************/ /* These settings set the PATH variables used by xdm. See README for *******/ /* detailed description and modify the following as per your need. *********/ /* #define DefaultSystemPath /usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin */ /* #define DefaultUserPath /usr/bin:/bin:/usr/X11R6/bin */ /* FONT SERVER AND LIBRARY SETTINGS ****************************************/ /* These settings are the defaults ***************************************/ /* #define BuildFontServer YES */ /* For Ghostscript Print Server*/ /* #define SharedLibFont YES */ /* #define CompressAllFonts YES */ /* #define GzipFontCompression YES */ /* These settings ensure we use our libraries ******************************/ #define HasFreetype2 YES #define HasFontconfig YES #define HasExpat YES #define HasLibpng YES #define HasZlib YES /* The font path can be redefined in the XF86Config file *******************/ /* #define DefaultFontPath $(FONTDIR)/misc/,$(FONTDIR)/75dpi/,\ $(FONTDIR)/100dpi/,$(FONTDIR)/Type1,$(FONTDIR)/local,\ $(FONTDIR)/TrueType,$(FONTDIR)/CID,$(FONTDIR)/Speedo */ /* INTERNATIONAL FONTS. Change to YES if you need any of them. These are * the defaults. ***********************************************************/ /* #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 **************************************************/ /* These setting are the defaults. *****************************************/ /* #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
Editiez le fichier suivant votre matériel et vos désirs.
Installez XFree86 en lançant les commandes suivantes:
( make WORLDOPTS="" World 2>&1 | tee xfree-compile.log && exit $PIPESTATUS ) &&
make install &&
make install.man &&
ln -sf ../X11R6/bin /usr/bin/X11 &&
ln -sf ../X11R6/lib/{X11,libGL.so{,.1}} /usr/lib &&
ln -sf ../X11R6/include/{X11,GL} /usr/include
Si vous possédez une des cartes DRI supportées et que vous avez activé le support de DRI dans les modules du noyau comme expliqué ci-dessus, vous avez maintenant besoin de mettre à jour les modules du noyau pour vous assurer qu'ils sont compatibles avec la version actuelle d'XFree86. Pour cela, réalisez ce qui suit:
cd programs/Xserver/hw/xfree86/os-support/linux/drm/kernel &&
make CC=/opt/gcc-2.95.3/bin/gcc -f Makefile.linux &&
mkdir -p /lib/modules/`uname -r`/kernel/drivers/char/drm/ &&
cp gamma.o radeon.o sis.o r128.o i810.o i830.o mga.o tdfx.o \
/lib/modules/`uname -r`/kernel/drivers/char/drm/ &&
depmod -a
Si vous recompilez ou mettez à jour votre noyau, vous aurez besoin de recopier les modules du pilotes dans la bibliothèque des modules du noyau et de relancer depmod -a.
Si vous avez ajouté le support de l'AGP en module lors de la compilation du noyau, vous pouvez ajouter une ligne dans /etc/modules.conf pour vous assurer que le module agpgart est bien chargé. Par exemple, la version AGP de la carte vidéo Radeon utilisera le pilote radeon.o. Il aura besoin de cette ligne
en dessous de radeon agpgart
dans /etc/modules.conf pour activer le support DRI.
( make WORLDOPTS="" World 2>&1 | tee xfree-compile.log && exit $PIPESTATUS ) : Cette commande lance plusieurs makefiles pour constuire complètement le système. WORLDOPTS="" désactive la configuration par défaut pour continuer même en cas d'erreurs. 2>&1 redirige les messages d'erreurs vers la même sortie que la sortie standard. La commande tee permet de visusaliser la sortie en même temps que l'enregistrement des résultats dans un fichier. Les parenthèses autour de la commande lance la commande entière dans un sous-shell et, enfin, exit $PIPESTATUS nous assure que le résultat de make est renvoyé plutôt que celui de la commande tee.
Lors de la reconstruction de XFree86, une commande séparée, qui peut être utilisée seulement si des changements mineurs ont lieu dans les sources, est make Everything. Ceci ne supprime pas automatiquement les fichiers générés et reconstruit seulement les fichiers ou programmes qui ne sont plus à jour.
ln -sf ../X11R6/bin /usr/bin/X11
ln -sf ../X11R6/lib/{X11,libGL.so{,.1}} /usr/lib
ln -sf ../X11R6/include/{X11,GL} /usr/include
Ces commandes sont présentes pour permettre à d'autres packages (cassés) d'être construit avec XFree86. Nous le faisons même si FHS (Filesystem Hierarchy Standard, le Standard de Hiérarchie du système de Fichiers) dit: "En général, les logiciels ne doivent pas être installés ou gérés via les liens symboliques ci-dessus. Ils sont à l'intention des utilisateurs pour leur propre utilisation."
make -f Makefile.linux : Ceci construit les modules noyau compatible avec XFree86.
cp gamma.o radeon.o sis.o r128.o i810.o i830.o mga.o tdfx.o /lib/modules/`uname -r`/kernel/drivers/char/drm/ : Place les modules du noyau là où celui-ci les attend.
depmod -a : Met à jour le fichier modules.dep pour la gestion des modules.
Editez /etc/ld.so.conf et lancez /usr/X11R6/lib. Lancez
ldconfig
Assurez-vous que /usr/X11R6/bin est ajouté à votre variable d'environnement PATH. Les instructions pour ce faire sont décrites dans la section Les fichiers de démarrage Bash.
Étendez PKG_CONFIG_PATH de façon à ce que les autres paquetages puissent trouver les bibliothèques X. Les procédures pour ce faire sont aussi décrites dans la section Les fichiers de démarrage Bash.
Lancez
source ~/.bash_profile
Configurez votre souris:
ln -s psaux /dev/mouse
Ajustez le lien symbolique comme nécessaire pour les autres types de souris. Par exemple, un souris série sur le premier port série sera lié vers ttyS1.
Créez le fichier XF86Config avec
cd ~
XFree86 -configure
L'écran va devenir noir et vous pourrez entendre des clics sur le moniteur. Cette commande va créer un fichier, XF86Config.new dans votre répertoire principal.
Editez XF86Config.new suivant votre système. Les détails de ce fichier sont indiqués dans la page man man XF86Config. Vous pourriez vouloir faire:
Section "Files". Changer l'ordre du chemin des polices. Vous pouvez vouloir placer les polices 100dpi avant les polices 75dpi si votre système est plus près de 100 points par pouce. Vous pourriez vouloir supprimer complètement quelques répertoires de polices.
Section "Monitor". Spécifiez les valeurs de VertRefresh et HorizSync si le système ne détecte pas automatiquement le moniteur et ses valeurs.
Section "InputDevice". Vous pouvez vouloir changer le taux de répétition automatique en ajoutant Option "Autorepeat" "250 30".
Section "Device". Vous pouvez initialiser certaines options disponibles dans le pilote vidéo que vous avez sélectionné. Une description des paramètres du pilote se trouve sur la page man de votre pilote.
Section "Screen". Ajouter une indication DefaultDepth telle que: DefaultDepth 16. Dans la sous-section (SubSection) pour votre profondeur par défaut, ajouter les lignes 'modes line' telles que: Modes "1280x1024" "1024x768". Le premier mode affiché va normalement être la résolution lors du démarrage.
Testez le system avec
XFree86 -xf86config ~/XF86Config.new
Vous obtiendrez seulement un fond d'écran gris avec un curseur de souris en forme de X, mais il confirme que le système fonctionne. Sortez avec Control-Alt-Backspace. Si le système ne fonctionne pas, jetez un oeil sur /var/log/XFree86.0.log pour voir ce qui ne va pas.
Déplacez le fichier de configuration à son emplacement final
mv ~/XF86Config.new /etc/X11/XF86Config-4
Créez .xinitrc
cat > ~/.xinitrc << "EOF" # Begin .xinitrc file xterm -g 80x40+0+0 & xclock -g 100x100-0+0 & twm EOF
Ceci apporte un écran initial avec un xterm et une horloge géré par un gestionnaire de fenêtres simple, Tab Window Manager. Pour plus de détails sur twm, voir la page man.
Si nécessaire, XFree86 crée le répertoire /tmp/.ICE-unix si celui-ci n'existe pas. Si ce répertoire n'appartient pas à root, XFree86 ajoute un délai au lancement de quelques secondes et ajoute aussi un message d'attention dans le journal des traces. Ceci affecte aussi le démarrage des autres applications. Pour améliorer les performances, un conseil est de créer le répertoire avant que XFree86 ne l'utilise. Ajoutez le création du fichier dans /etc/sysconfig/createfiles qui est lancé par le script de démarrage /etc/rc.d/init.d/cleanfs.
cat >> /etc/sysconfig/createfiles << "EOF" /tmp/.ICE-unix dir 1777 root root EOF
Lancez X avec
startx
pour obtenir un système X Windows basique fonctionnel.
Le package XFree86 contient le système X Window pour Linux (et d'autres systèmes d'exploitation). Il inclut le serveur X, des polices, xterm, un simple gestionnaire de fenêtres (twm), des utilitaires variés, des pilotes vidéos et des pilotes d'entrées variés comme la souris et le clavier.
XFree86 contient aussi les bibliothèques et les fichiers d'entêtes pour le développement des programmes X Window.
La liste suivante de programmes n'est pas extensible. La liste complète est dans /usr/X11R6/bin. Pour des informations supplémentaires sur ces programmes, voir les pages man respectives.
Un programme interactif pour générer un fichier XF86Config pour utiliser avec des serveurs X XFree86.
xf86cfg est un outil pour configurer XFree86 qui peut être utilisé pour soit écrire le fichier de configuration initial soit personnaliser la configuration courante.