Configuration (ou reconfiguration) du serveur X
Préambule
Si j'en crois les nombreux posts arrivant depuis quelques mois sur les forums, il semble que depuis l'avènement de Xorg 7.3 les gens aient quelques soucis avec la configuration du serveur X.
Un exemple sur ce message
Le plus souvent (et c'est à son honneur) les utilitaires intégrés à xorg déterminent seuls la configuration adaptée et vous n'avez à vous soucier de rien ….Mais parfois cela échoue
Jusqu'ici, en cas de soucis, la classique commande dpkg-reconfigure xserver-xorg nous demandait tout ce qu'elle avait besoin de savoir (clavier, souris, carte video, écran etc..). Aprés quoi elle nous mitonnait un /etc/X11/xorg.conf aux petits oignons (ou presque !)
Depuis quelques temps cette époque bénite n'est plus, les questions posées se résument à deux trois choses concernant le clavier et en sortie on obtient un xorg.conf limite indigent ! …bref, il semble que le temps d'oublier cette commande soit venu.
Il y a plusieurs mois (années !) que je n'ai pas eu à configurer un serveur X ex nihilo mais cela pourrait bien arriver sous peu si je me décide à m'offrir un portable (pour les dons: laissez moi vos coordonnées sur ma BAL, ou le numéro de CB et son Code ).
Bref, le sujet commençe à m'inquiéter et j'ai décidé de prendre les devants en espérant être prêt le moment venu !
Suivent donc les résultats de mes tests, en espérant qu'ils vous seront d'une bonne aide !
Obtention d'un xorg.conf de base
Création
Pour pouvoir obtenir un xorg.conf minimal vous devez:
- Passer sur un tty (pas dans un pseudo-terminal sous X) avec Alt+CTRL+F1
- Passer root (via su ou sudo)
- Arrêter le serveur X si il était en fonction mais mal configuré (remplacez gdm par kdm au besoin)
#/etc/init.d/gdm stop
Toujours en tant que root lancez cette commande
# Xorg -configure
Vous obtenez en sortie un fichier /root/xorg.conf.new
Fichier xorg.conf.new
Voici celui que j'obtiens pour ma part
Identifier "X.org Configured" Screen 0 "Screen0" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section “Files”
RgbPath "/etc/X11/rgb" ModulePath "/usr/lib/xorg/modules" FontPath "/usr/share/fonts/X11/misc" FontPath "/usr/share/fonts/X11/cyrillic" FontPath "/usr/share/fonts/X11/100dpi/:unscaled" FontPath "/usr/share/fonts/X11/75dpi/:unscaled" FontPath "/usr/share/fonts/X11/Type1" FontPath "/usr/share/fonts/X11/100dpi" FontPath "/usr/share/fonts/X11/75dpi" FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
EndSection
Section “Module”
Load "extmod" Load "dbe" Load "dri" Load "glx" Load "GLcore" Load "record" Load "xtrap"
EndSection
Section “InputDevice”
Identifier "Keyboard0" Driver "kbd"
EndSection
Section “InputDevice”
Identifier "Mouse0" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/input/mice" Option "ZAxisMapping" "4 5 6 7"
EndSection
Section “Monitor”
#DisplaySize 340 270 # mm Identifier "Monitor0" VendorName "NCS" ModelName "NEC C LC17M" ### Comment all HorizSync and VertRefresh values to use DDC: HorizSync 50.0 - 80.0 VertRefresh 50.0 - 75.0 Option "DPMS"
EndSection
Section “Device”
### Available Driver options are:- ### Values: <i>: integer, <f>: float, <bool>: "True"/"False", ### <string>: "String", <freq>: "<f> Hz/kHz/MHz" ### [arg]: arg optional #Option "SWcursor" # [<bool>] #Option "HWcursor" # [<bool>] #Option "NoAccel" # [<bool>] #Option "ShadowFB" # [<bool>] #Option "UseFBDev" # [<bool>] #Option "Rotate" # [<str>] #Option "VideoKey" # <i> #Option "FlatPanel" # [<bool>] #Option "FPDither" # [<bool>] #Option "CrtcNumber" # <i> #Option "FPScale" # [<bool>] #Option "FPTweak" # <i> #Option "DualHead" # [<bool>] Identifier "Card0" Driver "nv" VendorName "nVidia Corporation" BoardName "C51 [GeForce 6150 LE]" BusID "PCI:0:5:0"
EndSection
Section “Screen”
Identifier "Screen0" Device "Card0" Monitor "Monitor0" 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 EndSubSection
EndSection
Test du fichier
Nous allons maintenant tester ce fichier xorg.conf histoire de voir si il fonctionne de base !
Toujours avec les droits de root
X -config /root/xorg.conf.new
A l'issue de ce test, je me retrouve avec un bel écran noir et une message de l'écran me disant que ce mode n'est pas supporté. Il va donc falloir adapter cela.
Dés le début j'ai pensé a un problème de rafraichissement ou de résolution souvent à l'origine du passeg en sécurité de l'écran.
Adaptation du xorg.conf de base
Pilote de la carte Graphique
Par mesure logique j'ai commencé par vérifier que le driver/module chargé était bien celui de ma carte vidéo (un module nvidia 6150LE) et qu'il est adressé sur le bon device.
Cette information est obtenue par la sortie de
lspci |grep VGA 00:05.0 VGA compatible controller: nVidia Corporation C51 [GeForce 6150 LE] (rev a2)
Où l'on voit le type de carte (GeForce 6150 LE) et le device (00:05.0 qui correspond à “PCI:0:5:0”)
Voici la section device de xorg.conf.new qui est donc correcte
- Driver “nv” pour le pilote nvidia de xorg
- BusID “PCI:0:5:0”
Section “Device”
### Available Driver options are:- ### Values: <i>: integer, <f>: float, <bool>: "True"/"False", ### <string>: "String", <freq>: "<f> Hz/kHz/MHz" ### [arg]: arg optional #Option "SWcursor" # [<bool>] #Option "HWcursor" # [<bool>] #Option "NoAccel" # [<bool>] #Option "ShadowFB" # [<bool>] #Option "UseFBDev" # [<bool>] #Option "Rotate" # [<str>] #Option "VideoKey" # <i> #Option "FlatPanel" # [<bool>] #Option "FPDither" # [<bool>] #Option "CrtcNumber" # <i> #Option "FPScale" # [<bool>] #Option "FPTweak" # <i> #Option "DualHead" # [<bool>] Identifier "Card0" Driver "nv" VendorName "nVidia Corporation" BoardName "C51 [GeForce 6150 LE]" BusID "PCI:0:5:0"
EndSection
Résolution de l'écran
Il me fallait ensuite vérifier la résolution de l'écran.
cette information peut-être fournie par la doc de votre matériel, ou bien par la commande
#xrandr -q Screen 0: minimum 416 x 312, current 1280 x 1024, maximum 1280 x 1024 default connected 1280x1024+0+0 0mm x 0mm 1280x1024 75.0* 60.0 1280x960 60.0 1280x800 60.0 1152x864 75.0 1024x768 75.0 70.0 960x600 60.0 832x624 75.0 800x600 60.0 840x525 60.0 700x525 70.0 60.0 640x512 75.0 60.0 720x450 60.0 640x480 60.0 640x400 60.0 576x432 75.0 512x384 75.0 70.0 416x312 75.0
Je n'arrive jamais a rien avec la commande xrandr si le serveur X n'est pas actif !
Ceci est idiot, comment utiliser cette commande pour configurer le serveur X si il faut qu'il soit déja actif pour que la commande xrandr -q marche !!!
J'ai du rater un truc ! merci d'expliquer cette section si vous savez où je me plante !
Comme vous pouvez le voir dans le xorg.conf.new ci dessus, les modes (résolutions) ne sont pas précisés, et peut-être que mon problème vient de là.
Je vais donc les ajouter à la subsection “Display” de la fin (Depht 24, puisque c'est celle que je souhaite utiliser → codage couleur sur 24 bit)
Section “Screen”
Identifier "Screen0" Device "Card0" Monitor "Monitor0" 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
Nouveau test du fichier modifié
La dessus, je retente un X -config /root/xorg.conf.new et… Ô miracle ! apparait à l'écran la magnifique trame en grillage grisâtre m'indiquant que le serveur X tourne !
Configuration du Clavier
Pour la clarté de ce tutorial (déjà bien touffu !) je passe directement à la configuration du clavier.
j'ai remarqué illico après un démarrage en bonne et due forme de GDM sur ce nouveau xorg.conf que le clavier était en QWERTY et que je ne pouvais donc pas me logguer (mauvais password puisque mauvaise carte clavier)
j'ai donc adapté ainsi la section suivante
Section “InputDevice”
Identifier "Keyboard0" Driver "kbd" Option "XkbLayout" "fr" #clavier français Option "XkbModel" "pc105" #clavier 105 touches Option "XkbVariant" "oss" #variante pour écrire œuf et pas oeuf, æ et pas ae !
EndSection
Mise en fonction de notre xorg.conf tout neuf
Il ne reste plus qu'à copier notre nouveau fichier là où il doit se trouver:
#cp /root/xorg.conf.new /etc/X11/xorg.conf
Et à relancer notre serveur X
#/etc/init.d/gdm start
Et voila si ça veut rire vous voila prêt à vous logguer
Pour aller plus loin
J'ai ensuite modifié quelques points intéressants
Driver nvidia
Comme j'ultilise le driver nvidia officiel (et non libre )ainsi que parfois des effet 3D (compiz, cairo-dock)
j'ai modifié ma section device ainsi
Section Device
.../... Driver "nvidia" VendorName "nVidia Corporation" BoardName "C51 [GeForce 6150 LE]" Option "AddARGBGLXVisuals" "true" Option "XAANoOffscreenPixmaps" "true" BusID "PCI:0:5:0"
EndSection
Activation du Direct Rendering
Section “DRI”
Mode 0666
EndSection
Activation de l'affichage composite
Permet la gestion de la transparence
Section “Extensions”
Option "Composite" "enable"
EndSection
Liens en rapports
Voir également
- man xorg.conf
- man xrandr