5. Configurer XFree86

Contenu de cette section

Configurer XFree86 n'est généralement pas compliqué. Cependant si vous utilisez une carte vidéo dont les pilotes sont en cours de développement, ou que vous désiriez améliorer la performance et la résolution d'une carte accélératrice, la configuration de XFree86 risque de vous prendre un certain temps. Dans ce chapitre nous allons décrire comment créer et éditer le fichier XF86Config qui configure le serveur XFree86. Dans la plupart des cas, il est recommandé de commencer avec un fichier "de base", utilisant un mode à basse résolution, tel que 640x480, qui est supporté par toutes les cartes vidéo et tous les types de moniteurs. Une fois que XFree86 marchera à basse résolution vous pourrez peaufiner la configuration afin d'exploiter toutes les capacités de votre matériel. L'idée est que vous saurez que XFree86 peut fonctionner sur votre système, et qu'il n'y a pas d'erreur dans votre installation avant d'attaquer la tâche plus complexe qu'est la configuration de XFree86 pour un usage intensif.

En plus de ce document, il est recommandé de lire les documentations suivantes:

Le principal fichier de configuration de XFree86 est /usr/X11R6/lib/X11/XF86Config. Ce fichier contient les informations relatives à la souris, les paramètres de la carte vidéo, etc... Le fichier XF86Config.eg est fourni avec la distribution de XFree86 comme exemple. Copiez ce fichier en XF86Config et utilisez le comme base de votre configuration.

Le manuel en ligne de XF86Config détaille le format de ce fichier. Lisez cette page maintenant si vous ne l'avez déjà fait.

Nous allons maintenant traiter un exemple de fichier XF86Config, section par section. Ce fichier peut ne pas avoir exactement le même aspect que le fichier d'exemple fourni dans la distribution de Xfree86, mais la structure reste la même.

Notez que le format du fichier XF86Config change à peu près à chaque nouvelle version de XFree86. Ce qui suit n'est donc valable que pour la version 3.1 de XFree86.

Par ailleurs, vous ne devez pas simplement copier les fichiers présentés ci-dessous et tenter de les utiliser sur votre système. Une tentative d'utilisation d'un fichier de configuration ne correspondant pas à votre matériel peut engendrer un pilotage du moniteur à une fréquence trop élevée pour lui; il a été (et il est encore, malgré ces recommandations) rapporté que des moniteurs ont été endommagés voire détruits par une utilisation incorrecte d'un fichier XF86Config. La règle d'or dans la configuration de XFree86 est: SOYEZ ABSOLUMENT CERTAIN QUE LE FICHIER XF86Config CORRESPOND A VOTRE MATERIEL AVANT DE L'UTILISER . Mais ne vous inquiètez pas, respirez profondément~: ceci n'est pas courant~!

Chaque section du fichier XF86Config est encapsulée entre deux lignes~:

       Section "nom de la section"
         ...
       EndSection

La première section du fichier XF86Config est Files, et est du style:

       Section "Files"
           RgbPath     "/usr/X11R6/lib/X11/rgb"
           FontPath    "/usr/X11R6/lib/X11/fonts/misc/"
           FontPath    "/usr/X11R6/lib/X11/fonts/75dpi/"
       EndSection

La ligne RgbPath configure le path vers la base des couleurs RGB de X11R6. Ensuite chaque ligne FontPath indique le path vers un répertoire contenant des fontes X11. En général, vous n'avez pas à modifier ces lignes; vérifiez tout simplement qu'il y a un point d'accès possible dans FontPath pour chaque type de fontes que vous avez installé (pour chaque répertoire dans /usr/X11R6/lib/X11/fonts).

La section suivante est ServerFlags, qui spécifie plusieurs indicateurs globaux pour le serveur.

       Section "ServerFlags"
       # Uncomment this to cause a core dump at the spot where a signal is
       # received.  This may leave the console in an unusable state, but may
       # provide a better stack trace in the core dump to aid in debugging
       #    NoTrapSignals

       # Uncomment this to disable the <Crtl><Alt><BS> server abort sequence
       #    DontZap
       EndSection

Ici, chaque ligne de la section mis en commentaire.

La section suivante est Keyboard. Je pense que vous aurez compris son rôle.

       Section "Keyboard"
           Protocol    "Standard"
           AutoRepeat  500 5
           ServerNumLock
       EndSection

D'autres options sont disponibles, regardez le fichier XF86Config si vous désirez modifier la configuration du clavier. La section ci-dessus devrait fonctionner avec la grande majorité des claviers.

La section suivante est Pointer et spécifie les paramètres pour le pilote de souris.

  Section "Pointer"

      Protocol    "MouseSystems"
      Device      "/dev/mouse"

  # Baudrate et SampleRate sont uniquement pour les souris Logitech
  #    BaudRate   9600
  #    SampleRate 150

  # Emulate3Buttons est une option destinee aux souris Microsoft a 2 boutons
  #    Emulate3Buttons

  # ChordMiddle est une option destinee a certain souris Logitech a 3 boutons
  #    ChordMiddle

  EndSection

Les seules options qui devraient vous concerner sont Protocol et Device. Protocol spécifie le protocole (ça c'est bizarre!) utiliser par votre souris (pas le fabricant ou la marque de votre souris, mais le protocole). Les protocoles valides sous Linux sont~:

BusMouse doit être utilisé pour la souris busmouse de Logitech. Par contre, les anciennes souris Logitech doivent utiliser le protocol Logitech, alors que les plus récentes utilisent les protocoles Microsoft ou Mouseman. Ceci est l'un des nombreux cas montrant que le protocole n'a aucun rapport avec le fabricant de la souris.

Device spécifie le pilote par lequel la souris peut être accessible. Sur la plupart des systèmes il s'agit de /dev/mouse. /dev/mouse est généralement un lien vers le port série approprié (tel que /dev/cua0) pour une souris branchée sur le port série COM1, ou vers le pilote busmouse pour les souris reliées directement au bus. Dans tous les cas, verifiez que le fichier du pilote figurant dans Device existe bien.

La section qui vient maintenant est Monitor, et spécifie les caractéristiques de votre moniteur. Tout comme certaines autres sections du fichier XF86Config, il peut exister plus d'une section Monitor. Ceci est utile si vous avez plusieurs moniteurs reliés à votre système, ou si vous utilisez le même fichier XF86Config sous des configurations matérielles différentes. Dans la plupart des cas, vous n'aurez besoin que d'une seule section Monitor.

  Section "Monitor"

      Identifier  "CTX 5468 NI"

      # Ces valeurs sont uniquement pour les CTX 5468NI !
      # Ne les utiliser pas sur d'autres cartes video.

      Bandwidth    60
      HorizSync    30-38,47-50
      VertRefresh  50-90

      # Modes: Name      dotclock  horiz                vert

      ModeLine "640x480"  25       640 664 760 800      480 491 493 525
      ModeLine "800x600"  36       800 824 896 1024     600 601 603 625
      ModeLine "1024x768" 65       1024 1088 1200 1328  768 783 789 818

  EndSection

La ligne Identifier permet de spécifier un nom arbitraire à l'entrée Monitor.

HorizSync spécifie les fréquences de synchronisation supportées par votre moniteur, en kHz. Si vous possedez un moniteur multisynchrone, ceci peut être une plage de valeurs (ou plusieurs plages separées par des virgules), comme ci-dessus. Si vous possédez un moniteur à fréquence fixe, ce sera alors une liste de valeurs discrètes, du type:

           HorizSync    31.5, 35.2, 37.9, 35.5, 48.95

Le manuel de votre moniteur doit contenir une liste de ces valeurs au chapitre spécifications techniques. Si ces informations ne sont pas disponibles, contactez votre revendeur ou le fabricant de votre moniteur afin de les obtenir.

VertRefresh spécifie le taux de rafraichissement vertical (ou encore la fréquence de synchronisation verticale) supportée par votre moniteur, en Hz. Tout comme HorizSync ce champ peut être une plage ou une liste de valeurs discrètes; ici encore le manuel de votre moniteur doit contenir ces paramêtres.

HorizSync et VertRefresh sont uniquement utilisées pour vérifier que les résolutions du moniteur que vous avez donnés sont dans des plages de valeurs valides. Ceci afin de réduire les risques de destruction de votre moniteur au cas ou vous tenteriez d'utiliser une fréquence pour laquelle il n'aurait pas été concu.

La directive ModeLine permet de spécifier une unique résolution pour votre moniteur. Le format de ModeLine est:

       ModeLine nom <horloge> <valeurs pour l'horizontale> <valeurs pour la verticale>

Le nom est une chaîne arbitraire donnée au type de résolution afin de pouvoir y faire référence plus simplement dans la section Screen. L'horloge est la fréquence d'horloge (dot-clock) à laquelle on pilote le moniteur afin de générer les valeurs de la résolution. Celle-ci est spécifié en Mhz, et est le taux auquel la carte vidéo doit envoyer les signaux de génération des pixels au moniteur pour cette résolution. Les valeurs pour l'horizontale et valeurs pour la verticale sont des ensembles de quatre nombres décrivant comment doit être générée chaque ligne à l'écran (allumage et extinction du canon à électron, et tops de synchro horizontals et verticals lors du balayage).

Pour de plus amples renseignements sur ce sujet, je ne saurais trop vous conseiller de lire le Vidéo-HOWTO.

"Comment déterminer les valeur à utiliser dans Modeline~?" Le fichier VideoModes.doc décrit en détail comment déterminer ces valeurs pour chaque résolution supportée par votre moniteur. Mais avant tout, l'horloge doit être une valeur générable par votre carte vidéo.

Dans la distribution de XFree86, deux fichiers peuvent inclure les données ModeLine pour votre moniteur: modeDB.txt et Monitors, tous les deux se trouvent dans /usr/X11R6/lib/X11/doc.

Il est recommandé de commencer avec comme valeurs pour ModeLine les valeurs par défaut du moniteur standard VESA, la plupart des moniteurs les acceptant. modeDB.txt contient les valeurs de timings standardes pour les résolutions VESA. Dans ce fichier vous trouverez:

       # 640x480@60Hz Non-Interlaced mode
       # Horizontal Sync = 31.5kHz
       # Timing: H=(0.95us, 3.81us, 1.59us), V=(0.35ms, 0.064ms, 1.02ms)
       #
       # name        clock   horizontal timing     vertical timing      flags
        "640x480"     25.175  640  664  760  800    480  491  493  525

Ceci est le timing standard VESA pour le mode 640x480. Le "dot clock" est alors de 25.175, et votre carte doit être capable d'utiliser ce mode. Pour inclure cette entrée dans le fichier XF86Config, vous devez rajouter la ligne:

       ModeLine "640x480" 25.175 640 664 760 800 480 491 493 525

Remarquez que le "640x480" est totalement arbitraire. Vous auriez tout aussi bien pu mettre quelque chose du type "VGA" ou "moyenne_resolution". Par convention, on donne comme nom à la résolution definie le nom de la résolution standard approchante, afin que les autres lignes du fichier ou apparait ce mode soient plus compréhensibles.

Pour chaque ModeLine utilisé, le serveur va vérifier que les spécifications du mode soient bien incluses dans les plages de valeurs spécifiées par Bandwidth, HorizSync et VertRefresh. si l'une des valeurs n'est pas incluse dans la bonne plage, le serveur vous le signalera au démarrage de X. Le dot clock utilisé par le mode ne doit pas être plus grand que la valeur utilisée par Bandwidth (cependant, dans de nombreux cas il est préférable d'utiliser des modes avec une largeur de bande (bandwidth) _légèrement_ plus élevée que ce que le moniteur peut supporter).

Si les valeurs de timings du standard VESA ne marche pas avec votre moniteur (vous ne le saurez qu'après avoir essayé) alors rabattez vous sur les fichiers modeDB.txt et Monitors qui contiennent les valeurs de plusieurs modes pour certains moniteurs. La méthode de création des lignes ModeLine reste exactement la même. Faites quand même attention à utiliser des valeurs spécifiques à votre moniteur. Les moniteurs 14 et 15 pouces supportent généralement mal les trop hautes définitions, et 1024x768 reste une résolution maximale avec des horloges déjà très basses. Si vous ne trouvez dans ces fichiers aucune haute résolution pour votre moniteur, c'est que votre moniteur ne peut très probablement pas supporter de telles résolutions.

Si vous êtes malgré tout incapable de trouver des valeurs pour ModeLine vous permettant d'utiliser convenablement votre moniteur, vous pouvez suivre les instructions du fichier VideoModes.doc inclus dans la distribution de XFree86, et vous permettant de calculer les valeurs de timings à partir des spécifications se trouvant dans le manuel de votre moniteur. VideoModes.doc contient aussi le format de la directive ModeLine et certains autres aspects plus sanglants du serveur XFree86.

Vérifiez aussi les boutons de réglage de votre moniteur car ils sont souvent la cause de longues recherches d'erreur inexistante.

Dans tous les cas ne lancez pas le serveur X avec dans Modeline des valeurs ne pouvant être supportées par votre moniteur. Ceci risquerait d'endommager votre moniteur.

La section suivante de XF86Config est Device, qui permet de spécifier les paramètres inhérents à votre carte vidéo. Voici un exemple~:

       Section "Device"
               Identifier "#9 GXE 64"

               # Ensuite rien. Ca viendra plus tard.

       EndSection

Cette section définie les propriétés propres à la carte vidéo. Identifier est une chaine arbitraire décrivant la carte; vous utiliserez ce nom afin de faire référence à votre carte un peu plus loin.

Pour l'instant, vous n'avez pas à rajouter autre chose à cette section Device en dehors de Identifier. "Mais", me direz-vous, "à quoi ça sert alors cette section là si on n'y met rien dedans ?" Et bien, c'est parce que nous allons laisser le serveur X chercher lui même les propriétés de votre carte vidéo. Ensuite, nous pourrons rentrer les données dans cette section. Le serveur XFree86 est capable de rechercher tout seul le type de circuit vidéo, les fréquences d'horloge et la taille de la mémoire vidéo de votre carte.

Cependant, avant de faire ceci, nous devons finir d'écrire le fichier XF86Config. Attaquons maintenant la section Screen, qui permet de spécifier le couple moniteur/carte vidéo à utiliser pour un serveur.

   Section "Screen"
       Driver     "Accel"
       Device     "#9 GXE 64"
       Monitor    "CTX 5468 NI"
       Subsection "Display"
           Depth      16
           Modes      "1024x768" "800x600" "640x480"
           ViewPort   0 0
           Virtual    1024 768
       EndSubsection
   EndSection

La ligne Driver spécifie le nom du serveur X que vous désirez utiliser. Les noms possibles pour Driver sont:

Vérifiez que le /usr/X11R6/bin/X est bien un lien symbolique vers le serveur que vous utilisez.

La ligne Device spécifie l'Identifier que vous avez mis dans la section Device et qui correspond à la carte vidéo que vous utilisez avec votre serveur. Plus haut nous avons créé une section Device avec la ligne~:

       Identifier "#9 GXE 64"

Par conséquent, nous utiliserons "#9 GXE 64" dans la ligne Device de cette section. De même, la ligne Monitor est le nom du moniteur que vous allez utiliser. Ici "CTX 5468 NI" est l'Identifier que vous avez spécifié dans la section Monitor.

La sous-section Display, permet de déclarer au serveur X plusieurs propriétés du couple moniteur/carte vidéo. Le fichier XF86Config permet de déclarer toutes ces options en détail. La plupart (pour ne pas dire toutes) de ces options sont nullement nécessaires au bon fonctionnement de votre système.

Les options que vous devez connaître sont~:

De nombreuses autres options existent pour cette section. Comme d'habitude, je vous conseillerais de lire le manuel de XF86Config. Dans la pratique, les autres options ne sont que rarement utilisées.


Chapitre suivant, Chapitre Précédent

Table des matières de ce chapitre, Table des matières générale

Début du document, Début de ce chapitre