Présentation de X.org
Transcription
Présentation de X.org
Présentation de X.org X.org est un logiciel libre du type serveur X, la famille des systèmes de fenêtrage la plus connue, pour les systèmes d'exploitation de type UNIX. X.org est l'implémentation officielle du système graphique X Window System. C'est donc un serveur graphique, c'est lui qui va faire en sorte que l'on dispose d'autre chose que les ttys sur votre système, il va nous fournir une interface graphique. Seul, il est limité; il n'affiche en effet que des fenêtres, il faudra recourir à l'utilisation d'un gestionnaire de fenêtre ou d'un environnement de bureau si on veut un résultat plus agréable à l'oeil. X.org est un programme basé sur une architecture serveur/client : le serveur X est lancé sur une machine possédant un écran, un clavier et une souris (ou d'autres périphériques) le client X se connecte au serveur afin de lui donner ses requêtes, ce sont des applications graphiques affichées dans une fenêtre du serveur X le protocole X qui permet l'échange de données entre le serveur et le client Vous l'aurez compris, sans serveur graphique, impossible d'avoir un rendu autre que celui de la console. Je vous invite donc de ce pas à installer un serveur graphique, si ce n'est déjà fait. Bien entendu, si vous êtes en train de lire ces lignes, il y a de très grandes chances que ça soit via une interface graphique, il n'y a alors rien à installer. Les instructions d'installation ne sont valables que dans le cas d'une nouvelle distribution sans interface graphique installée par défaut. Installation de X.org Il suffit d'installer le paquet xorg avec votre gestionnaire de paquetages favori. On lancera par exemple sous Archlinux # pacman -S xorg Notons que ce paquet (qui est en fait un groupe) contient entre autres xf86-video-vesa Pilote graphique générique, fonctionne avec une majorité de cartes graphiques xorg-fonts- Police de caractères, définition 100 dpi xorg-fonts100dpi xorg-fonts-75dpi xorg-res-utils xorg-server xorg-server-utils xorg-twm xorg-utils xorg-xinit xterm Police de caractères, définition 100 dpi Police de caractères, définition 75 dpi Utilitaire pour gérer les ressources de xorg Votre serveur graphique Utilitaires indispensables au serveur Gestionnaire de fenêtre par défaut de xorg Utilitaires permettant d'avoir des infos sur le serveur Script d'initialisation de session (exécuté par startx) Émulateur de terminal par défaut de xorg Détail du groupe xorg On va maintenant pouvoir configurer notre serveur. Aperçu du xorg.conf Nous allons maintenant devoir configurer notre serveur graphique pour que tout se passe bien. Que vous installiez une distribution sans interface graphique ou que vous ayez des ennuis avec le serveur graphique que vous utilisez actuellement, il est bon de savoir utiliser un éditeur de texte en ligne de commande. On ne saurait effectivement pas utiliser Kate ou Gedit en cas, vu que l'interface graphique ne fonctionnerait pas. Optez par exemple pour nano qui est simple à utiliser ou pour vim ou emacs, vous savez ce que vous faites dans ce cas là. Toute la configuration de X.org se passe au niveau de son fichier de configuration, le xorg.conf. Ce fichier est par défaut situé dans /etc/X11/xorg.conf. Aucune précaution n'est inutile, commencez tout d'abord par sauvegarder votre xorg.conf actuel. cp /etc/X11/xorg.conf /etc/X11/xorg.conf.backup Si vous désirez le récupérer, inversez les opérandes de la commande cp. Structure du fichier xorg.conf Nous allons maintenant nous attarder sur un exemple de xorg.conf (le mien) et en détailler sa structure. Cette partie est facultative car, comme nous allons le voir, il existe quelques scripts permettant la configuration (semi)automatique d'un fichier valide. Il est quand même utile de savoir comment il est construit, ne serait-ce que si on est amené à le modifier à la main, ou par simple curiosité. Voici donc un xorg.conf valide Section "ServerLayout" Identifier "Layout0" Screen 0 "Screen0" InputDevice "Keyboard0" "CoreKeyboard" InputDevice "Mouse0" "CorePointer" EndSection Section "Files" EndSection Section "InputDevice" # generated from default Identifier "Mouse0" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/psaux" Option "Emulate3Buttons" "no" Option "ZAxisMapping" "4 5" EndSection Section "InputDevice" # generated from default Identifier "Keyboard0" Driver "kbd" EndSection Section "Monitor" Identifier VendorName ModelName HorizSync VertRefresh Option EndSection "Monitor0" "Unknown" "Unknown" 28.0 - 33.0 43.0 - 72.0 "DPMS" Section "Device" Identifier Driver VendorName EndSection "Device0" "nvidia" "NVIDIA Corporation" Section "Screen" Identifier Device Monitor DefaultDepth SubSection Depth EndSubSection EndSection "Screen0" "Device0" "Monitor0" 24 "Display" 24 Comme vous le voyez, le fichier est composée de plusieurs sections, chacune définissant les paramètres pour une partie du système. On rencontre ainsi la section qui permet de configurer la carte graphique, celle qui permet de configurer le clavier/la souris, ou encore celle qui gère l'écran. Chaque section admet la syntaxe suivante Section "nom de la section" entrées... EndSection Notons aussi que certaines sections font appel récursivement à d'autres. On va maintenant observer chacune de ces sections en détails. Détail des différentes sections On va détailler les différentes sections dans l'ordre d'apparition sur mon xorg.conf. Section ServerLayout Dans cette section, on liste tout ce qui est périphérique d'entrée, comme la souris ou le clavier, ainsi que les écrans. Cette section doit au minimum comporter les entrées "Identifier" et Screen. Voici un exemple de section ServerLayout Section "ServerLayout" Identifier "Layout0" Screen 0 "Screen0" InputDevice "Keyboard0" "CoreKeyboard" InputDevice "Mouse0" "CorePointer" EndSection Section InputDevice Dans cette section, on précise les périphériques d'entrées, le clavier et la souris. On les renseigne en même temps que les pilotes à utiliser. Seules les entrées "Identifier" et "Driver" sont obligatoires, le reste est optionnel. Voici un exemple de section InputDevice Section "InputDevice" # generated from default Identifier Driver EndSection "Keyboard0" "kbd" Section Monitor Cette section contient la description et les options spécifiques à un moniteur, ainsi que les informations sur le mode vidéo. Elle possède une seule entrée obligatoire: Identifier, afin de pouvoir la nommer. Voici un exemple de section Monitor Section "Monitor" Identifier VendorName ModelName HorizSync VertRefresh Option EndSection "Monitor0" "Unknown" "Unknown" 28.0 - 33.0 43.0 - 72.0 "DPMS" Section Device Cette partie contient les informations matérielles de la carte graphique. Tout comme la section InputDevice, elle nécessite au moins deux entrées: Identifier et Driver, les autres entrées sont aussi optionnelles. Voici un exemple de section device Section "Device" Identifier Driver VendorName EndSection "Device0" "nvidia" "NVIDIA Corporation" Section Screen Cette section est définie par un moniteur et une carte graphique, afin de pouvoir permettre l'affichage, c'est aussi ici que le mode vidéo utilisé est choisi parmi les modes que l'ordinateur peut gérer. Elle possède deux entrées obligatoires: Identifier et Device. Elle est souvent composée d'une sous-section Display possédant au moins une entrée Depth, informant sur la profondeur des couleurs à utiliser. Voici un exemple de section Screen Section "Screen" Identifier Device Monitor DefaultDepth SubSection Depth EndSubSection EndSection "Screen0" "Device0" "Monitor0" 24 "Display" 24 Liens entre les différentes sections Beaucoup de sections sont optionnelles, mais certains sont obligatoires et nécessaires au bon fonctionnement de notre serveur graphique. Imaginons un système tout simple, uniquement constitué d'un écran, d'un clavier et d'une souris. L'écran Screen sera défini par une carte graphique: Device et un moniteur: Monitor. Le clavier et la souris seront chacun défini par une section InputDevice. La combinaison de la section Screen et des InputDevice forme un ServerLayout. On peut représenter ceci par un arbre Structure générique du fichier de configuration de X.org Un même ServerLayout peut avoir plusieurs écrans, ou bien utiliser plusieurs cartes graphiques, il est donc possible que vous ayez plusieurs sections Device et/ou Monitor. De plus, il est possible de trouver plusieurs ServerLayout au sein de xorg.conf, car plusieurs serveurs X peuvent être lancés simultanément sur une même machine (Par exemple en passant en console tty à l'aide de Ctrl+Alt+F1). Vous serez d'accord avec moi que si on doit tout configurer soi-même, ça devient vite assez pénible, sans compter la probabilité élevée de faire une erreur, compromettant ainsi notre belle interface graphique. Il existe des scripts qui génèrent un xorg.conf valide, ils sont l'objet de la section suivante. Une question de pilotes Comme je viens de vous le dire, on est heureusement assisté par des scripts de configuration, on va les présenter ainsi qu'expliquer leur utilisation. Mais avant, on va un peu parler des pilotes. Histoire de profiter pleinement de sa carte graphique, il est important d'installer le bon pilote et de le renseigner. Le pilote générique, vesa, est par défaut utilisé. Bien qu'il fonctionnera sur énormément (pour ne pas dire toutes) de cartes graphiques, il a un rendu que vous pourriez juger insuffisant. On préférera donc le substituer par un pilote plus adapté à son matériel. Alors, afin de savoir de quelle carte graphique on dispose, et par extension, savoir quel pilote installer, on va lister tous les composants connectés au bus PCI (dont votre carte graphique) et on va filtrer le résultat au moyen de grep, pour ne récolter que les informations nécessaires. On lancera donc la commande suivante lspci | grep VGA dont le résultat est, chez moi [renaud@renaud-laptop ~]$ lspci | grep VGA 01:00.0 VGA compatible controller: nVidia Corporation G84 [GeForce 9500M GS] (rev a1) La conclusion est donc que j'ai une carte nVidia. Il existe trois grandes familles de cartes graphiques : ATI Intel nVidia Suivant la carte graphique dont vous disposez, il faudra installer un pilote différent. Voici les pilotes à installer suivant le type de carte graphique nVidia ATI nouveau (driver libre) ati (driver libre) nv (driver libre) catalyst (driver propriétaire) nvidia (driver propriétaire) radeon (driver libre) Intel i810 (driver propriétaire) i910 (driver propriétaire) intel (driver libre) Tableau non exhaustif de pilotes à installer selon le vendeur de carte graphique Reportez-vous à la documentation officielle de votre distribution pour plus de détails. Une fois que vous êtes certain du pilote à installer, installez-le comme un paquetage classique. Scripts de configuration génériques On va parler des scripts de configuration du serveur X. Notez que si vous disposez d'une carte graphique nVidia ou ATI, il y a des scripts plus adaptés à votre cas. Ils seront évoqués après les scripts génériques. X -configure La façon la plus courante de générer son xorg.conf est de lancer le script X -configure. Loggez-vous en root, et lancez donc la commande suivante # X -configure Testez la configuration générée au moyen de la commande suivante (ctrl+alt+backscape pour tuer le serveur graphique) # X -config /root/xorg.conf.new Si cette configuration vous convient, déplacez donc le fichier créé dans le répertoire personnel de l'utilisateur root à l'endroit approprié. # mv /root/xorg.conf.new /etc/X11/xorg.conf xorgconfig Si la méthode X -configure n'a pas fonctionné, vous pourriez vouloir lancer l'utilitaire xorgconfig. Il s'agit d'un utilitaire textuel qui va vous poser des questions sur votre matériel, en anglais. Munissez-vous donc de la documentation de votre matériel et prenez votre temps, une erreur vous obligerait à tout recommencer. # xorgconfig Si ça ne fonctionne pas, lancez # xorgcfg -textmode Après avoir répondu aux questions, sauvegardez le fichier à l'endroit conventionnel : /etc/X11/xorg.conf Scripts de configuration spécifiques On va maintenant expliquer l'utilisation des scripts dédiés aux cartes nVidia et ATI. Carte nVidia Si vous avez une carte nVidia et que vous utilisez le driver propriétaire, qui offre souvent de meilleures performances (mais qui n'est pas libre), alors vous lancerez le script suivant # nvidia-xconfig qui vous générera un xorg.conf prêt à l'emploi. Cartes ATI Même remarque que pour les cartes nVidia, si vous utilisez le driver propriétaire, lancez le script suivant # aticonfig --initial -f qui vous générera un xorg.conf prêt à l'emploi. Notez qu'en général, il est bon d'aller regarder le xorg.conf généré et d'observer l'entrée Driver de la section InputDevice, pour voir si c'est bien le bon pilote qui est renseigné. Si ce n'est pas le cas, modifiez-le manuellement startx : configuration de .xinitrc Maintenant que notre serveur graphique est correctement configuré, on va encore voir 3 dernières petites choses : HAL, startx et l'accélération graphique. HAL Afin que notre serveur graphique détecte correctement nos périphériques d'entrée, notre souris et notre clavier dans notre cas, il est nécessaire de lancer un daemon qui vont permettre de les reconnaître et de les utiliser. On utilisera HAL, acronyme de hardware abstraction layer, pour « couche d'abstraction matérielle » en français, qui assure la communication entre le matériel et les applications. Lancez le donc au boot, avec les autres daemons. Lorsque vous lancez la commande startx depuis une console, le fichier ~/.xinitrc sera lu. Par défaut, voici ce à quoi il ressemble #!/bin/sh # # ~/.xinitrc # # Executed by startx (run your window manager from here) # # # # # # # # # # # exec gnome-session exec startkde exec startxfce4 exec icewm exec openbox exec blackbox exec fluxbox exec ratpoison exec dwm ... or any other WM of your choosing ... Le principe est simple, il suffit de décommenter la ligne correspondant au gestionnaire de fenêtre/environnement de bureau que vous comptez utiliser. Si toutefois vous souhaitez tester votre serveur graphique sans avoir recours à ce fichier, alors vous utiliserez startx /usr/bin/commandeDuWM L'accélération graphique Les cartes graphiques offrent des ressources matérielles afin d'accélérer tous les traitements liés aux graphismes. Ces traitements sont l'affichage de vidéo (décompression mpeg), l'affichage de DVD en plein écran, les images animées 3D (jeux, animations, etc.). Pour ce faire, le noyau doit pouvoir dialoguer avec la carte graphique. Ce dialogue est établi par un pilote qui pourra tirer pleinement parti des ressources matérielles disponibles. Par la suite, le serveur graphique pourra utiliser ces ressources afin d'accélérer les affichages ou permettre des effets de bureaux spectaculaires. L'accélération est-elle activée ? Avant de commencer toute manipulation, il est préférable de savoir si l'accélération graphique n'est pas déjà activée. En effet, certaines cartes sont reconnues immédiatement par le système et dès lors, il n'est pas nécessaire de se lancer dans des paramétrages plus avancés. Pour le savoir, lancez donc glxinfo | grep "direct rendering" Si on renvoie yes, alors elle l'est, sinon, elle ne l'est pas. Activation de l'accélération graphique Il suffit bien souvent de changer de pilote. Les pilotes propriétaires prennent en charge l'accélération graphique. Voila, nous avons terminé de configurer notre xorg.conf. On ne devrait normalement plus avoir de soucis. Si tel était toujours le cas, je vous invite à poster votre problème sur le forum, en joignant d'entrée de jeu le contenu du fichier xorg.conf et du fichier /var/log/Xorg.0.log qui contient le log des évènements