Xorg-7 Test et configuration

Test de Xorg

[Note]

Note

Avant de démarrer Xorg pour la première fois, il est utile de reconstruire le cache des bibliothèques en lançant ldconfig en tant qu'utilisateur root.

[Note]

Note

Avant de démarrer Xorg pour la première fois, il est souvent nécessaire de redémarrer le système pour s'assurer que les démons appropriés sont démarrés et que les paramètres de sécurités sont correctement initialisés. Autrement, vous déconnecter et vous reconnecter peut fonctionner mais la méthode n'a pas été testée.

[Avertissement]

Avertissement

Si Xorg se bloque (par exemple, s'il lui manque un pilote d'entrée), le système peut arrêter de répondre aux entrées utilisateurs. En précaution, vous pouvez activer la touche SysRq magique avant de tester Xorg. En tant qu'utilisateur root, lancez :

echo 4 > /proc/sys/kernel/sysrq

Si Xorg freeze, vous pouvez utiliser Alt+SysRq+R pour réinitialiser le mode clavier. Maintenant vous devriez pouvoir utiliser Ctrl+Alt+Fx (remplacez x par un numéro de terminal virtuel) pour passer à un autre VT. Si cela fonctionne, connectez-vous et tuez Xorg via la ligne de commande dans le nouveau VT.

Pour tester l'installation de Xorg, tapez startx. Cette commande lance un gestionnaire de fenêtres très rudimentaire appelé twm avec trois terminaux X (xterm) et une fenêtre d'horloge (xclock). Le terminal X dans le coin supérieur gauche est un terminal de login et lancer exit dans le terminal quittera la session X Window. Le troisième terminal X peut être recouvert sur votre système par les deux autres terminaux X.

[Note]

Note

Lorsque vous testez Xorg avec le gestionnaire de fenêtres twm, il y aura plusieurs avertissements dans le fichier de log de Xorg, $HOME/.local/share/xorg/Xorg.0.log à propos de fichiers de police manquants. En plus, il y a plusieurs avertissement sur le terminal en mode texte (habituellement tty1) à propos de polices manquantes. Ces avertissements n'affectent pas le fonctionnement, mais peuvent être supprimés si désiré en installant Anciennes polices de Xorg.

[Note]

Note

Sur un système avec un GPU NVIDIA qui utilise le pilote noyau Nouveau, vous pourriez parfois rencontrer des crashs du GPU et des freezes. Si ce problème arrive, revenez à la dernière version du noyau Linux 6.1.

Généralement, il n'y a pas de configuration spécifique requise pour Xorg, mais une personnalisation est possible. Pour plus de détails voir la section intitulée « Configuration des périphériques Xorg » en dessous.

Vérifier l'installation de la Direct Rendering Infrastructure (DRI)

DRI est un environnement permettant aux logiciels d'accéder au matériel graphique d'une manière sûre et efficace. Elle est installée par défaut dans X (en utilisant MesaLib) si vous avez une carte graphique supportée.

Pour vérifier que les pilotes DRI sont correctement installés, vérifiez que le fichier journal $HOME/.local/share/xorg/Xorg.0.log (ou /var/log/Xorg.0.log si vous avez construit Xorg-Server-21.1.8 avec le bit suid) contient des messages comme :

(II) modeset(0): [DRI2] Setup complete
(II) modeset(0): [DRI2]   DRI driver: crocus
(II) modeset(0): [DRI2]   VDPAU driver: va_gl
[Note]

Note

Il se peut que la configuration DRI diffère si vous utilisez d'autres pilotes tels que les pilotes DDX traditionnels ou les pilotes propriétaires de NVIDIA ou de AMD.

Une autre façon de déterminer si DRI fonctionne proprement est d'utiliser un des deux programmes de démo d'OpenGL installés éventuellement par Mesa-23.1.6. Depuis un terminal X, lancez glxinfo et cherchez le passage :

name of display: :0
display: :0  screen: 0
direct rendering: Yes

Si le direct rendering est activé, vous pouvez ajouter de la verbosité en lançant LIBGL_DEBUG=verbose glxinfo. Ceci affichera les pilotes, les nœuds de périphériques et les fichiers utilisés par le système DRI.

Pour confirmer que l'accélération matérielle DRI2 fonctionne, vous pouvez (toujours dans un terminal X) lancer la commande glxinfo | grep -E "(OpenGL vendor|OpenGL renderer|OpenGL version)". Si cela renvoie quelque chose d'autre que Software Rasterizer c'est que l'accélération fonctionne pour l'utilisateur qui a lancé la commande.

Si votre matériel n'a pas de pilote DRI2 de disponible, il utilisera un rendu logiciel pour le Direct Rendering. Dans ce cas, vous pouvez utiliser le nouveau rendu logiciel accéléré de LLVM appelé LLVMPipe. Avant de construire LLVMPipe soyez certain que LLVM-16.0.5 est présent au moment de la construction de Mesa. Merci de noter que tous les décodages sont fait par le processeur à la place du GPU, donc l'affichage sera plus lent qu'avec l'accélération matérielle. Pour vérifier si vous utilisez LLVMpipe, regardez la sortie de la commande glxinfo précédente. Un exemple de sortie utilisant le rendu logiciel est montré en dessous :

OpenGL vendor string: VMware, Inc.
OpenGL renderer string: Gallium 0.4 on llvmpipe (LLVM 3.5, 256 bits)
OpenGL version string: 3.0 Mesa 10.4.5

Vous pouvez toujours forcer LLVMPipe en exportant la variable d'environnement LIBGL_ALWAYS_SOFTWARE=1 quand vous démarré Xorg.

De nouveau, si vous avez ajouté le paquet Mesa-Demos, vous pouvez aussi lancer le programme de test glxgears. Ce programme affiche une fenêtre de trois boutons à bascule. Le xterm affichera le nombre de cadres dessinés toutes les cinq secondes, donc c'est un test fiable. La fenêtre est redimensionnable et les cadres dessinés par secondes dépendent beaucoup de la taille de la fenêtre.

Débogage de Xorg

Lorsque vous démarrez xorg, il y a plusieurs moyens de vérifier les problèmes que vous pourriez avoir. Si le système démarre, vous pouvez voir le pilote utilisé en lançant xdriinfo. Si vous avez des problèmes ou souhaitez seulement vérifier, regardez dans Xorg.0.log.

L'emplacement de Xorg.0.log dépend de la manière dont Xorg est installé. Si vous avez suivi précisément les instructions du livre et que Xorg est démarré en ligne de commande, il se trouvera dans le répertoire $HOME/.local/share/xorg/. Si Xorg est démarré par un gestionnaire d'affichage (p. ex. lightdm-1.32.0, sddm-0.20.0 ou GDM-44.1) ou si $XORG_PREFIX/bin/Xorg a le bit suid, il se trouvera dans le répertoire /var/log/.

Problèmes dans Xorg.0.log

Quand vous ouvrez Xorg.0.log, cherchez les entrées comme (EE) ou (WW). Voici quelques entrées courantes :

(WW) Open ACPI failed (/var/run/acpid.socket)

Cet avertissement a pour origine le fait qu'acpid-2.0.34 n'est pas installé. Si vous n'êtes pas sur un ordinateur portable, il peut être ignoré sans problème. Sur un ordinateur portable, installez acpid-2.0.34 pour activer les actions comme la reconnaissance de la fermeture de l'écran.

(WW) VGA arbiter: cannot open kernel arbiter, no multi-card support

Cet avertissement est affiché quand un utilisateur normal démarre Xorg. La bibliothèque libpciaccess.so lance cet avertissement quand elle essaye d'ouvrir /dev/vga_arbiter. S'il n'y a pas plus d'une ancienne carte graphique PCI (et pas PCIe) sur le système, il peut être ignoré sans problème. Si c'est vraiment nécessaire, les permissions pour ce périphérique peuvent être changées avec une règle udev et en ajoutant l’utilisateur local au groupe video. En tant qu'utilisateur root :

cat > /etc/udev/rules.d/99-vga-arbiter.rules << EOF
# /etc/udev/rules.d/99-vga-arbiter.rules: Set vga_arbiter group/mode

ACTION=="add", KERNEL=="vga_arbiter", GROUP="video" MODE="0660"
EOF

usermod -a -G video <user running xorg>

Hybrid Graphics

Hybrid Graphics est expérimental dans Linux. Les développeurs de Xorg ont mis au point une technologie appelé PRIME qui peut être utilisée pour commuter entre le GPU intégré et celui du processeur "muxless" à souhait. La commutation automatique n'est pas possible pour le moment.

Pour utiliser PRIME pour la commutation de GPU, soyez certain d'utiliser le noyau Linux 3.4 ou plus (recommandé). Vous devez avoir les pilotes DRI et DDX pour votre matériel et avoir Xorg Server 1.13 ou plus.

Xorg Server devrait charger les deux pilotes GPU automatiquement. Vous pouvez le vérifier en lançant :

xrandr --listproviders

Il devrait y avoir deux (ou plus) fournisseurs indiqués, par exemple :

Providers: number : 2
Provider 0: id: 0x7d cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 3 outputs: 4 associated providers: 1 name:modesetting
Provider 1: id: 0x56 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 6 outputs: 1 associated providers: 1 name:modesetting

Pour pouvoir lancer une application GLX sur un GPU particulier, vous devrez lancer la commande suivante, où <provider> est l'identifiant du plus puissant et <sink> est l'identifiant de la carte qui fait l'affichage.

xrandr --setprovideroffloadsink <provider> <sink>
[Note]

Note

Avec le pilote Xorg modesetting, qui peut utiliser DRI3, la commande ci-dessus n'est plus nécessaire. Ça ne fait pas de mal non plus.

Ensuite, vous devrez exporter la variable d'environnement DRI_PRIME=1 à chaque fois que vous voudrez utiliser le GPU le plus puissant. Par exemple,

DRI_PRIME=1 glxinfo | grep -E "(OpenGL vendor|OpenGL renderer|OpenGL version)"

affichera le fournisseur OpenGL, le rendu et la version du GPU.

Si la dernière commande affiche le même rendu OpenGL avec ou sans DRI_PRIME=1, vous devez vérifier votre installation.

Configuration des périphériques Xorg

Pour la plupart des configurations matérielles, Xorg va automatiquement obtenir la configuration correcte du serveur sans aucune intervention de l'utilisateur. Il existe cependant certains cas où l'auto-configuration sera incorrecte. Voici quelques exemples de la configuration manuelle qui peuvent être utile dans ces cas-là.

Configuration des périphériques X d'entrée

Pour la plupart des périphériques d'entrée, aucune configuration supplémentaire ne sera nécessaire. Cette section est fournie à titre informatif seulement.

Un exemple de configuration XKB par défaut peut être celui-ci (exécuté en tant que root) :

cat > /etc/X11/xorg.conf.d/xkb-defaults.conf << "EOF"
Section "InputClass"
    Identifier "XKB Defaults"
    MatchIsKeyboard "yes"
    Option "XkbLayout" "fr"
    Option "XkbOptions" "terminate:ctrl_alt_bksp"
EndSection
EOF

La ligne « XkbLayout » est un exemple pour un clavier français (AZERTY). Modifiez-la pour votre modèle de clavier. Cette ligne n'est pas utile pour un clavier QWERTY (US).

Réglage fin des paramètres d'affichage

Si vous voulez configurer la résolution de l'écran pour Xorg, exécutez d'abord xrandr dans un terminal X pour lister les résolutions prises en charge et les taux de rafraîchissement correspondants. Par exemple, voici la sortie pour un écran donné :

Screen 0: minimum 16 x 16, current 5760 x 2160, maximum 32767 x 32767
DP-1 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 600mm x 340mm
   3840x2160     59.98*+
   2048x1536     59.95
   1920x1440     59.90
   1600x1200     59.87
   1440x1080     59.99
   1400x1050     59.98
   1280x1024     59.89
   1280x960      59.94
   1152x864      59.96
   1024x768      59.92
   800x600       59.86
   640x480       59.38

À partir de la sortie, on peut voir que l'écran est identifié avec DP-1. Choisissez une résolution appropriée dans la liste en sortie, par exemple 1920x1440. Ensuit en tant qu'utilisation root, créez un fichier de configuration pour le serveur Xorg :

cat > /etc/X11/xorg.conf.d/monitor-DP-1.conf << "EOF"
Section "Monitor"
    Identifier  "DP-1"
    Option      "PerferredMode" "1920x1440"
EndSection
EOF

Parfois xrandr peut échouer à détecter certains paramètres de résolution pris en charge par l'écran. Cela arrive surtout avec les écrans virtuels des gestionnaires de machines virtuelles comme qemu-8.1.0 ou VMWare : un écran virtuel prend en fait en charge toutes paires d'entier dans un intervalle, mais xrandr n'en indiquera que quelques unes. Pour utiliser une résolution qui n'est pas listée par xrandr, exécutez d'abord cvt pour récupérer la mode line de la résolution. Par exemple :

cvt 1600 900

En tant qu'utilisateur root, créez un fichier de configuration du serveur Xorg contenant cette mode line, et spécifiez ce mode comme étant le mode préféré :

cat > /etc/X11/xorg.conf.d/monitor-DP-1.conf << "EOF"
Section "Monitor"
    Identifier  "DP-1"
    Modeline    "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync
    Option      "PerferredMode"   "1600x900_60.00"
EndSection
EOF

Certains écrans LCD haut de gamme prennent en charge un taux de rafraichissement plus important que 100 Hz mais xrandr peut échouer à reconnaître le taux de rafraîchissement pris en charge et utiliser 60 Hz à la place. Ce problème vous empêcherait d'utiliser toutes les capacités de votre écran, et peut causer des clignotements ou afficher des « artéfacts » comme des grilles ou des réseaux. Pour résoudre le problème, utilisez encore cvt pour trouver la mode line avec un taux de rafraîchissement personnalisé :

cvt 3840 2160 144

Puis collez-la dans le fichier de configuration du serveur Xorg et indiquez-la comme mode préféré.

Une autre configuration courante est d'avoir des configurations multi-serveurs pour une utilisation dans des environnements différents. Bien que le serveur détecte automatiquement la présence d'un autre moniteur, il peut obtenir un ordre incorrect :

cat > /etc/X11/xorg.conf.d/server-layout.conf << "EOF"
Section "ServerLayout"
    Identifier     "DefaultLayout"
    Screen      0  "Screen0" 0 0
    Screen      1  "Screen1" LeftOf "Screen0"
    Option         "Xinerama"
EndSection
EOF

Lorsque vous déplacez une fenêtre horizontalement dans twm (ou tout autre gestionnaire de fenêtres sans compositeur), vous observerez peut-être que la bordure verticale de la fenêtre est cassée en de multiples segments. C'est un exemple d'artéfact visuel appelé screen tearing. Pour résoudre ces problèmes, créez un fichier de configuration qui active l'option TearFree. Remarquez que vous devez avoir appliqué le correctif Tearfree de Xorg-Server-21.1.8 pour que cela fonctionne correctement, et il peut augmenter l'allocation mémoire nécessaire et réduire les performances.

cat > /etc/X11/xorg.conf.d/20-tearfree.conf << "EOF"
Section "Device"
   Identifier "Graphics Adapter"
   Driver     "modesetting"
   Option     "TearFree" "true"
EndSection
EOF

Avec un Xorg moderne, peu ou aucune configuration supplémentaire de carte graphique n'est nécessaire. Si vous avez besoin d'options supplémentaires à passer à votre pilote vidéo, ajoutez-les aussi à la section Device. Les options prises en charge par le pilote de gestion des modes sont documentées dans la page de manuel modesetting(4).