[OpenBSD]

[Index de La FAQ] [Section 10 - Gestion du Système] [Section 12 - Questions Spécifiques Aux Plates-Formes]

11 - Le système X Window


Table des matières


11.1 - Introduction à X

Le système X Window (parfois dénommé simplement "X" ou, incorrectement "X Windows") est l'environnement qui fourni les services graphiques à OpenBSD et les autres systèmes de type Unix. Cependant, seul, X n'apporte que très peu de fonctionnalités : il faut également avoir un gestionnaire de fenêtres afin d'offrir une interface utilisateur. La plupart de ce que l'on percevra de X viendra du gestionnaire de fenêtres et non de X lui-même. OpenBSD fourni une version libre du gestionnaire de fenêtres fvwm(1), bien que vous puissiez utiliser également un des autres gestionnaires présents dans les paquetages. Effectuez une recherche avec le mot-clef "window manager" afin d'obtenir une liste des gestionnaires de fenêtres disponibles.

X est considéré comme un protocole fonctionnant sur le mode "client-server" mais cette terminologie peut parfois prêter à confusion. L'ordinateur avec l'affichage graphique à l'écran est le "serveur X". L'application qui défini ce que le serveur X doit afficher à l'écran est le "client X" même s'il s'agit d'une machine bien plus puissante dans un centre d'hébergement. Ce modèle peut être utilisé afin d'avoir des applications gourmandes en ressources processeur (clients X) tournant sur une machine très puissante mais utilisant un serveur X tournant sur une petite machine de faible puissance sur votre bureau pour afficher leurs interfaces.

Il est possible de faire tourner des clients X sur un système sans support graphique. Ainsi, on pourrait avoir une application (le client X) tournant sur un mvme88k et affichant son interface sur un alpha (le serveur X). Puisque X est un protocole bien défini et multiplate-forme il est même possible d'avoir une application X tournant (par exemple) sur une machine Solaris et utiliser une machine OpenBSD pour l'afficher.

Le client et le serveur peuvent également tourner sur la même machine et pour la majorité de cette documentation, c'est ce que nous supposerons.

11.1.1 - Quelle puissance d'ordinateur est nécessaire pour faire tourner X ?

X en lui-même est un programme très lourd et un ordinateur rapide sera idéal si vous le lancez et l'arrêtez régulièrement. Cependant, une fois démarré, il reste très réactif même sur une machine modeste. Afin d'avoir une meilleure réactivité sur certaines plates-formes même si vous ne travaillez qu'avec du texte, il vous sera nécessaire de faire tourner X. Ces plates-formes telles que sparc et sparc64 ont été prévues pour fonctionner avec une interface graphique et le mode console est très lent.

Ceci dit, l'utilité de faire tourner X est généralement d'utiliser des applications X. Certaines de ces applications sont très peu gourmandes, d'autres vous sembleront utiliser tout le processeur et la RAM que vous leur octroierez. Evidemment, certains utilisateurs n'utilisent X qu'afin de bénéficier de nombreux xterm(1)s, ce qui reste possible même sur du matériel modeste.

11.1.2 - Puis-je bénéficier d'une interface graphique sans X ?

Si l'on considère que les graphiques ASCII ne sont pas satisfaisants, cela nécessiterait un pilote framebuffer pour console. Quelques systèmes d'exploitation offrent un tel pilote ce qui n'est pas le cas pour OpenBSD et il n'y a pas vraiment d'intérêt pour cela parmi les développeurs.

11.2 - Configurer X

La configuration de X varie considérablement d'une plate-forme à l'autre. Dans tous les cas, il y aura des instructions et des informations propres à la plate-forme dans le fichier /usr/X11R6/README du système sur lequel il est installé.

Plusieurs plates-formes requièrent le pilote d'aperture xf86(4) qui offre un accès à la mémoire et aux ports d'entrée/sortie de la carte VGA ainsi qu'aux registres de configuration PCI nécessaires. Ce pilote doit être activé avant d'être utilisé soit en répondant "yes" à la question suivante posée durant l'installation du système :

Do you expect to run the X window System [no]
soit en changeant la valeur de machdep.allowaperture en une valeur non nulle appropriée à votre plate-forme dans le fichier /etc/sysctl.conf et en redémarrant la machine (pour raisons de sécurité, cette valeur sysctl ne peut pas être changée après le lancement de la machine). Il existe des conséquences sur la sécurité, ne le faites pas si vous n'en avez pas vraiment besoin.

11.2.1 - alpha

/usr/X11R6/README pour alpha.

Mettez machdep.allowaperture=1 dans /etc/sysctl.conf.

Les cartes TGA ainsi que certaines VGA sont supportées. Aucune configuration supplémentaire ne devrait être nécessaire.

11.2.2 - amd64

/usr/X11R6/README pour amd64.

Mettez machdep.allowaperture=2 dans /etc/sysctl.conf.

Dans la plupart des cas, X sous amd64 se configure automatiquement et aucune manipulation supplémentaire ne devrait être nécessaire. Si une configuration spécifique est nécessaire, utilisez la procédure X -configure comme expliquée plus bas.

11.2.3 - cats

Pas de support X à l'heure actuelle.

11.2.4 - hp300

/usr/X11R6/README pour hp300.

11.2.5 - hppa

Il n'existe pas de serveur X pour HPPA à l'heure actuelle mais le support du client X est présent.

11.2.6 - i386

/usr/X11R6/README pour i386.

Mettez machdep.allowaperture=2 dans /etc/sysctl.conf pour les serveurs X.Org ou 1 pour les serveurs XFree86 v3.

Du fait du choix énorme de cartes vidéos, souris, claviers et autres matériels pour cette plate-forme, configurer X sous un système i386 peut s'avérer excitant. Suffisamment excitant d'ailleurs pour qu'une section séparée soit proposée.

Fort heureusement, les choses ne sont pas toujours aussi noires qu'elles le semblent ; dans la plupart des cas, X "fonctionne tout simplement" en tapant "startx". Dans ce cas, votre matériel sera détecté et interrogé sur ses capacités ce qui permettra à X de très bien fonctionner.

X.Org et XFree86 v3

Les deux variantes de serveurs X.Org et XFree86 v3.3.6 sont fournis avec OpenBSD/i386. Certaines cartes vidéos assez anciennes fonctionnent mieux (et parfois seulement !) avec les anciens serveurs XFree86 v3 car leurs pilotes n'ont jamais été portés vers les nouvelles versions de X. Cependant, il est préférable d'essayer avec les serveurs X.Org plus récents à moins qu'ils ne fonctionnent pas ou offrent des performances réduites. Si vous avez des problèmes avec un ordinateur moderne ou une carte vidéo, ne vous embêtez pas à essayer les serveurs XFree86 v3, son développement s'est arrêté il y a de nombreuses années. D'un autre côté, si vous possédez un système vieux de dix ans, vous serez peut-être amené à utiliser les serveurs XFree86 v3.

11.2.7 - luna88k

Pas de serveur X, seulement les clients.

11.2.8 - mac68k

/usr/X11R6/README pour mac68k.

Les systèmes Mac68k "fonctionneront tout simplement", aucune configuration n'est nécessaire.

La souris : la souris Macintosh standard ne possède qu'un seul bouton ce qui est un problème puisque X s'attend à une souris 3-boutons. Certaines souris de vendeurs tiers auront un deuxième bouton qui fonctionnera sous X. Sinon, vous devrez vous référer au manuel Xmac68k(1) afin d'obtenir des informations sur l'émulation pour les souris à un bouton.

11.2.9 - macppc

/usr/X11R6/README pour macppc.

Mettez machdep.allowaperture=2 dans /etc/sysctl.conf.

Les systèmes PPC Macintosh peuvent fonctionner sous deux modes différents : "accéléré" et "framebuffer" (non accéléré).

En mode "framebuffer", le système tournera avec 8 bits par pixel et la résolution vidéo sera contrôlée par l'environnement Macintosh, vous devrez donc garder une petite partition sous MacOS sur votre disque afin de pouvoir changer la configuration. Ce mode à l'avantage de "fonctionner tout simplement" mais il peut apparaître comme statique et frustrant (par exemple, changer la résolution peut demander un redémarrage sous MacOS).

Si votre Macintosh possède un système vidéo basé sur de l'ATI il peut tourner en mode X accéléré ce qui offre de meilleures performances et plus de contrôle sous l'environnement OpenBSD. Les cartes vidéo NVIDIA présentes dans certains systèmes macppc devraient également fonctionner dans la plupart des cas. Le fichier README contient des détails sur la configuration du pilote accéléré, basez-vous sur l'exemple qu'il fourni.

Bien que le fichier README contienne des détails pour utiliser une souris Apple standard à un bouton sous X, à moins d'utiliser un portable, il vous est vivement recommandé d'acheter une souris tierce plus moderne.

11.2.10 - mvme68k

Pas de serveur X, seulement les clients.

11.2.11 - mvme88k

Pas de serveur X, seulement les clients.

11.2.12 - sparc

/usr/X11R6/README pour sparc.

Avec un seul framebuffer supporté il n'y a pas besoin de configuration. Si vous souhaitez utiliser une configuration multi-affichage, lisez le README ci-dessous pour plus de détails.

La résolution est contrôlée par le firmware avant de démarrer OpenBSD.

11.2.13 - sparc64

/usr/X11R6/README pour sparc64.

Il existe de nombreuses variations de ces machines et vous aurez besoin de connaître quel type de bus votre système utilise (PCI ou SBus), à quel port votre souris est branchée (zstty, com, ou USB/PS2) et quel type de carte vidéo vous possédez. Démarrez avec le fichier d'exemple xorg.conf présent dans le README et modifiez les valeurs indiquées en fonction de votre matériel et de vos besoins. N'espérez pas que le fichier d'exemple fonctionne sans modification sur votre machine !

11.2.14 - vax

Lisez /usr/X11R6/README pour vax.

Le serveur X ne fonctionne pour l'instant que sur les models VAXstation 4000 en utilisant soit le framebuffer lcg(4) soit le framebuffer lcspx(4).

11.2.15 - zaurus

/usr/X11R6/README pour zaurus.

Pas de configuration nécessaire, X "fonctionne tout simplement".

11.3 - Configurer X sur amd64 et i386

La variété de matériel présent sur ces plates-formes rend la configuration de X assez "laborieuse".

11.3.1 - Configuration XFree86 v3.3.6 (i386 seulement)

Si vous avez une carte vidéo très ancienne et que vous souhaitez utiliser X, vous aurez peut être besoin de configurer et d'utiliser les serveurs XFree86 v3. Typiquement, cela se fait en utilisant les programmes XF86Setup(1) (mode graphique) ou xf86config3(1) (mode texte).

Nous nous arrêterons là en ce qui concerne le serveur XFree86 v3. Faire tourner les anciens serveurs X sur du vieux matériel reste une "danse tribale" et nous serions désolés de vous la rendre aisée.

11.3.2 - Configuration de X.Org

X.Org a fait de gros progrès pour permettre à leurs serveurs de "fonctionner tout simplement". Dans la plupart des cas tout fonctionne sans fichier /etc/X11/xorg.conf. Mais pas toujours et parfois vous aurez besoin de configurer quelque chose qui ne fonctionnne pas.

Il existe trois programmes permettant de créer un fichier configuration pour les serveurs X.Org i386 de façon semi-automatique. Malheureusement, aucun d'entre eux ne garanti la création d'un fichier xorg.conf utilisable.

En plus des exemple précédents, une autre façon de configurer X mais qui demande du temps est d'utiliser votre moteur de recherche favori afin de trouver quelqu'un d'autre qui aurait rencontré et résolu votre problème. Bien que cette méthode ne soit pas mauvaise, nous ne nous y attarderons pas plus.

11.3.3 - Notre machine d'exemple

Pour une démonstration de configuration X, nous utiliserons un vieux système équipé d'un Celeron 400MHz et d'un port AGP. La carte vidéo sera une ancienne carte AGP visible dans le dmesg à la ligne :
vga1 at pci1 dev 0 function 0 "3DFX Interactive Banshee" rev 0x03
Il s'agit d'une ancienne carte haut-de-gamme qui n'est à présent plus vraiment supportée par les nouvelles versions des systèmes d'exploitation "principaux". L'écran relié au système est un moniteur CRT "Sony Multiscan G400 19" et il serait plaisant de pouvoir afficher une résolution de 1280x1024 sur celui-ci avec une fréquence de rafraîchissement décente et des couleurs 24 bit.

En premier lieu, après avoir installé OpenBSD avec X (et être certain que le pilote d'aperture est activé dans le noyau), voyons ce que la détection et la configurarion automatique de X.Org nous propose, après tout nous pourrions être chanceux. Nous allons nous identifiez puis utiliserons donc la commande startx(1). L'écran devient blanc quelques secondes puis nous obtenons le fond d'écran en "échiquier" de X, le curseur X et une fenêtre xterm.

Ca marche !

Plus ou moins. Bien que le système soit pleinement fonctionnel, il ne paraît pas avoir détecté une quelconque des fonctionnalités de l'écran et tourne à très basse résolution (640x480). Nous espérons pouvoir faire mieux que cela. Bien mieux en fait. Cependant, cela signifie que nous aurons besoin de créer notre propre fichier de configurarion xorg.conf.

Servons-nous de la commande "X -configure" afin de créer un fichier xorg.conf de base. Vous devrez lancer la commande suivante en tant qu'utilisateur root :

# X -configure [...] Your xorg.conf file is /root/xorg.conf.new To test the server, run 'X -config /root/xorg.conf.new'
Au fait, ce message est sérieux ; utilisez le chemin complet vers votre fichier xorg.conf.new même s'il repose dans votre répertoire actuel par défaut. Sinon, X(7) ne trouvera pas le fichier et il utilisera la configuration par défaut qui peut n'avoir aucun rapport avec le fichier sur lequel vous affiner actuellement la configuration. Cela permettra de vous éviter de déboguer le pourquoi cela ne fonctionne pas. Faites-nous confiance là-dessus.

Donc, faisons comme il dit et voyons ce que nous obtenons :

# X -config /root/xorg.conf.new
A présent, tout ce que nous avons est un écran noir. Les choses avaient pourtant si bien commencées...

Le moment est peut-être venu de vous parler des différentes manières de sortir de X lorsqu'il démarre de cette façon. Par ordre de préférence :

Heureusement pour nous, CTRL-ALT-Backspace fonctionne bien et nous voici revenu à l'invite de commandes. Bien, à présent nous devons regarder si nous pouvons comprendre ce qui s'est mal passé. Tout d'abord, nous devrions jetez un oeil sur ce à quoi X s'imagine et qui est enregistré dans le fichier /var/log/Xorg.0.log. Dans ce cas, il semble que X pense que tout tourne bien et il n'y a pas d'erreurs flagrantes dans le journal d'événements (les lignes commençant par "(EE)" sont des erreurs).

Maintenant, il est utile de connaître votre matériel. Brancher ce système sur un moniteur différent alors que l'écran noir est toujours présent affiche le message "Sync. Out of Range" sur l'écran. Apparemment donc, la configuration que X nous a fourni ne fonctionnera pas sur ce moniteur et peut-être même sur AUCUN si le mode sélectionné ne fonctionne pas avec cette carte particulière (souvenez-vous que X détecte la puce sur la carte et ce qu'elle est potentiellement capable de faire, pas la façon dont le fabricant a intégré tous les éléments). Différents moniteurs réagiront différemment lorsque le rafraîchissement est mauvais, certains tenteront tout de même d'afficher ce qu'ils peuvent, d'autres passeront en mode de conservation d'énergie alors que d'autres émettront d'horribles bruits ou afficheront des messages informatifs à l'écran. Ce moniteur ne semble rien faire de tout cela. On notera de ne PAS utiliser cet écran pour une configuration initiale de X dans le futur.

En jetant un oeil au fichier xorg.conf.new l'on peut voir ceci :

Section "Monitor" #DisplaySize 370 270 # mm Identifier "Monitor0" VendorName "SNY" ModelName "SONY CPD-G400" ### Comment all HorizSync and VertSync values to use DDC: HorizSync 30.0 - 107.0 VertRefresh 48.0 - 120.0 Option "DPMS" EndSection
Pour le test, essayons d'utiliser DDC ("Data Display Channel", une façon que possède le moniteur de renseigner l'ordinateur et la carte vidéo sur ses capacités) et voyons ce qu'il se passe. Cette fois, nous obtenons le maillage X et un curseur de souris mobile ce qui est tout ce à quoi nous pouvons nous attendre lorsque nous démarrons X de cette façon (nous quittons X en utilisant CTRL-ALT-Backspace comme expliqué plus haut). Cela reste (encore) dans une très basse résolution, mais cela fonctionne ce qui signifie certainement que la résolution et la fréquence de rafraîchissement posent problème. Nous restaurons "HorizSync" et "VertRefresh" à leur valeur précédente car nous avons vérifié les spécifications de ce moniteur en recherchant sur Internet.

Essayons de forcer Xorg à une résolution spécifique et voyons si nous avons de la chance. Dans la partie Section "Screen" du fichier xorg.conf, nous ajouterons deux lignes. Celles-ci sont montrées en gras :

Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 1 EndSubSection SubSection "Display" Viewport 0 0 Depth 4 EndSubSection SubSection "Display" Viewport 0 0 Depth 8 EndSubSection SubSection "Display" Viewport 0 0 Depth 15 EndSubSection SubSection "Display" Viewport 0 0 Depth 16 EndSubSection SubSection "Display" Viewport 0 0 Depth 24 Modes "1280x1024" EndSubSection EndSection
Ces deux changements indiquent que nous souhaitons faire tourner X à une profondeur d'affichage de 24 bit et, pour cette profondeur, bénéficier d'une résolution de 1280x1024. Puisqu'aucune autre résolution n'est précisée pour le mode "Depth 24", le système sera forcé de l'utiliser.

Nous testons nos changements et... SUCCES ! Nous obtenons ce qui semble être un très bel affichage en haute résolution. Notez bien que TOUT ce à quoi vous devez vous attendre est un maillage X (appelé "rootweave", il est parfait pour voir la qualité de votre moniteur et pour calibrer les écrans LCD, ) et un curseur mobile. A ce point, rien ne se doit d'être fonctionnel.

A présent, installons ce fichier xorg.conf afin de voir comment cela fonctionne avec un X fonctionnel qui tourne.

# cp xorg.conf.new /etc/X11/xorg.conf
Nous pouvons maintenant utiliser la commande normale startx(1). Ca marche !

Il serait probablement bon de vérifier que nous sommes bien à la résolution et à la profondeur que nous désirons et que nous tournons à une fréquence de rafraîchissement correcte. Nous pouvons le vérifier avec les commandes xrandr(1) et xdpyinfo(1). Entre autres, xdpyinfo(1) nous dit :

[...] screen #0: print screen: no dimensions: 1280x1024 pixels (433x347 millimeters) resolution: 75x75 dots per inch depths (7): 24, 1, 4, 8, 15, 16, 32 root window id: 0x44 depth of root window: 24 planes [...]
Donc oui, nous tournons bien à 1280x1024 avec une profondeur de 24 planes (bits).

xrandr(4) nous dit :

SZ: Pixels Physical Refresh *0 1280 x 1024 ( 433mm x 347mm ) *85 75 60 1 1280 x 960 ( 433mm x 347mm ) 85 60 [...]
ce qui signifie que nous tournons avec une fréquence de rafraîchissement de 85Hz, ce qui devrait être confortable pour la plupart des utilisateurs.

11.3.4 - Et si ce n'est pas si "facile" ?

Parfois, les choses ne vont pas de soi. Voici quelques conseils.

11.4 - Démarrer X

Il existe deux méthodes génériques pour démarrer X :

11.4.1 - A la demande :

Identifiez-vous sous une console en tant qu'utilisateur puis lancez startx(1).

11.4.2 - Démarrer directement sous X :

Cela se fait en utilisant le gestionnaire de connexion graphique ("X Display Manager") xdm(1). Normalement, xdm(1) est démarré tant que root par rc et présente une invite d'identification. En cas d'identification correcte, il démarre une session X pour cet utilisateur. Si, ou lorsque cette session X doit se terminer (cela inclu l'enchaînement CTRL-ALT-Backspace), xdm(1) réapparaîtra avec son invite d'identification. C'est pour cette raison que vous ne devez PAS démarrer xdm(1) à partir du fichier /etc/rc.conf.local avant d'être certain d'avoir vérifié que X fonctionne comme vous le souhaitez sinon votre machine risque de devenir difficile à gérer ! (dans le pire des cas : démarrez en mode "single user" comme si vous aviez perdu votre mot de passe et commentez la ligne xdm_flags de votre fichier /etc/rc.conf.local).

Sur certaines plates-formes, vous aurez besoin de désactiver la console getty(8) pour utiliser xdm(1).

[Index de La FAQ] [Section 10 - Gestion du Système] [Section 12 - Questions Spécifiques Aux Plates-Formes]


[back] www@openbsd.org
$OpenBSD: faq11.html,v 1.33 2007/02/18 23:01:09 saad Exp $