Accueil > Linux / Logiciels Libres > GNU/Linux > Bi-Ecran sous linux avec 2 cartes graphiques
Bi-Ecran sous linux avec 2 cartes graphiques
mercredi 17 août 2005, par
Bi-Ecran sous linux avec 2 cartes graphiques
Un très bon article sur le site léa-linux décrit cela. On se laisse guider en adaptant à notre configuration et tout fonctionne correctement. L’article
Petit problème à éviter
La plupart du temps (comme vous avez une seul carte graphique intégrée ou AGP) le bios est configuré pour démarrer la video sur le bus AGP. Et il arrive parfois, lors de l’ajout de la deuxième carte graphique PCI, que la vidéo ne démarre plus.
Dans ce cas essayer de configurer le bios pour que le PC démarre la video sur le bus PCI. Normalement tout rentre dans l’ordre.
Retrouver ses cartes graphiques
Comme pour les moniteurs il vous faut une section par carte graphique, mais à la différence des moniteurs, si vous avez deux cartes identiques (par exemple 2 TNT PCI) il faut faudra quand même deux sections « Device » : une pour chaque carte. Le problème va être de trouver quelle valeur mettre pour la variable « BusID » de ces sections. Mais ce n’est pas très complexe, tapez (en mode console, et en tant que root) :
# X -scanpci -verbose
Et vous devriez voir quelque chose comme :
Probing for PCI devices (Bus:Device:Function)
(0:0:0) unknown chip (DeviceId 0x0305) from VIA
(0:1:0) unknown chip (DeviceId 0x8305) from VIA
(0:3:0) Realtek unknown card (0x8029) using a Realtek 8029
(0:4:0) S3 ViRGE
(0:20:0) VIA card using a VIA VT 82C686 MVP4 ISA Bridge
(0:20:1) VIA card using a VIA VT 82C586 MVP3 IDE Bridge
(0:20:2) unknown card (0x0925/0x1234) using a VIA VT 82C586 MVP3 USB Controller
(0:20:3) unknown card (0x0925/0x1234) using a VIA VT 82C586 MVP3 USB Controller
(0:20:4) VIA card using a VIA VT 8501 MVP4 ACPI Bridge
(0:20:5) VIA card using a VIA VT 8501 MVP4 MultiMedia
(1:0:0) unknown card (0x1569/0x002d) using a NVidia Riva Ultra 64
C’est la liste de tous vos périphériques PCI/AGP. Mes carte graphiques sont une S3 Virge dont le paramètre BusID sera donc (cf. paramètre en rouge) : « 0:4:0 » et une TNT2 dont le paramètre BusID sera (cf. paramètre en vert) : « 1:0:0 ». Mes sections « device » sont donc :
Section "Device"
Identifier "RIVA TNT2"
VendorName "Unknown"
BoardName "Unknown"
BusID "1:0:0"
Driver "nvidia"
# Uncomment following option if you see a big white block
# instead of the cursor!
# Option "sw_cursor"
Option "DPMS"
EndSection
pour ma TNT2 et :
Section "Device"
Identifier "S3 Virge"
VendorName "Unknown"
BoardName "Unknown"
BusID "0:4:0"
Driver "s3virge"
# Uncomment following option if you see a big white block
# instead of the cursor!
# Option "sw_cursor"
Option "DPMS"
EndSection
pour ma S3 Virge. Comme pour les moniteurs, les variables Identifier doivent être différentes pour chacune des cartes graphiques.
Note : Si votre carte graphique est une GeForce2MX, vous pouvez utiliser les fonctionnalités TwinView (deux écrans sur la même carte graphique), voici un exemple de lignes à ajouter dans la section « Device » de cette carte :
Option "TwinView"
Option "SecondMonitorHorizSync" "30-38"
Option "SecondMonitorVertRefresh" "50-100"
Option "TwinViewOrientation" "Below"
Option "MetaModes" "1152x864, 800x600; 1152x864, NULL"
Option "ConnectedMonitor" "crt, crt"
La section « ServerLayout »
J’ai mis mon écran « Secondaire » à droite de (RightOf) mon écran « Principal » donc ma section ServerLayout est :
Section "ServerLayout"
Identifier "layout1"
Screen "Principal"
Screen "Secondaire" RightOf "Principal"
InputDevice "Mouse1" "CorePointer"
InputDevice "Keyboard1" "CoreKeyboard"
EndSection
A la place de « RightOf » vous pouvez mettre :
- LeftOf : à gauche,
- Above : au-dessus,
- Below : en-dessous,
- Relative : pour placer un écran relativement à un autre (exemple : « Secondaire » Relative « Principal » 1088 216),
- Absolute : pour dire que les coordonnées du coin supérieur gauche de cet écran sont (x,y) (exemple : Absolute 800 600).
Premier essai
Voilà, notre fichier /etc/X11/XF86Config est correctement écrit, vous avez vérifié trois fois chaque paramètre et c. Lançons nous et tapons (en mode console) :
X
Normalement le serveur X doit démarrer et vos deux écrans doivent s’allumer, vous devez pouvoir passer la souris d’un écran sur l’autre, comme s’ils ne formaient qu’une seule surface. Ca marche ? Passons à la suite. Ca ne marche pas ? Relisez tout ce qui précède...
Maintenant vous pouvez travailler avec vos deux écrans.
Le Xinerama
La manière la plus simple de travailler avec deux écrans est d’activer le mode Xinerama de votre serveur X (disponible depuis XFree86 4.0.x). Le mode Xinerama est un mode de fonctionnement dans lequel les multiples écrans connectés à votre ordinateur ne semblent plus n’en faire qu’un : leurs résolutions s’additionnent. Pour configurer ce mode de fonctionnement, c’est vraiment très simple : il suffit de passer « +xinerama » au serveur X. Mais, en fait on n’appelle jamais soi-même le serveur X, on passe soit par le script startx, dans ce cas il faut taper :
startx -- +xinerama
soit on utilise un « Display Manager » (kdm, gdm, xdm, et c.). Dans le cas de kdm ou xdm il faut éditer le fichier /etc/X11/xdm/Xserver pour que la ligne d’appel du serveur X devienne :
:0 local /usr/X11R6/bin/X +xinerama
Dans le cas de gdm il faut éditer le fichier /etc/X11/gdm/gdm.conf pour que la ligne d’appel du serveur X devienne :
0=/usr/bin/X11/X +xinerama
(dans la section : servers). Puis vous redémarrez votre « Display Manager » :
init 3
Attendez 5 secondes, puis :
init 5
Et voilà, votre « Display Manager » s’étale sur vos multiples écrans. Si vous vous loguez, vous devez voir le changement. Pour que votre écran MultiHead soit le plus facilement utilisable je vous conseille d’utiliser Enlightenment qui permet, entre autre, la maximisation limitée à une seul écran (ce que vous voudrez sans doute faire). Il parait que Sawfish en est aussi capable, mais je n’ai pas pu le voir fonctionner...
Attention à la profondeur des couleurs
Lors de mes essais, le serveur X (Xfree comme Xorg) a été incapable de démarrer si les profondeurs de couleurs étaient différentes sur les deux écrans. IL faut donc bien faire attention d’avoir les mêmes valeurs pour la variables DefaultDepth.
Fichier XF86Config-4
# XF86Config-4 (XFree86 X Window System server configuration file)
#
# This file was generated by dexconf, the Debian X Configuration tool, using
# values from the debconf database.
#
# Edit this file with caution, and see the XF86Config-4 manual page.
# (Type "man XF86Config-4" at the shell prompt.)
#
# This file is automatically updated on xserver-xfree86 package upgrades *only*
# if it has not been modified since the last upgrade of the xserver-xfree86
# package.
#
# If you have edited this file but would like it to be automatically updated
# again, run the following commands as root:
#
# cp /etc/X11/XF86Config-4 /etc/X11/XF86Config-4.custom
# md5sum /etc/X11/XF86Config-4 >/var/lib/xfree86/XF86Config-4.md5sum
# dpkg-reconfigure xserver-xfree86
Section "Files"
FontPath "unix/:7100" # local font server
# if the local font server has problems, we can fall back on these
FontPath "/usr/lib/X11/fonts/misc"
FontPath "/usr/lib/X11/fonts/cyrillic"
FontPath "/usr/lib/X11/fonts/100dpi/:unscaled"
FontPath "/usr/lib/X11/fonts/75dpi/:unscaled"
FontPath "/usr/lib/X11/fonts/Type1"
FontPath "/usr/lib/X11/fonts/CID"
FontPath "/usr/lib/X11/fonts/Speedo"
FontPath "/usr/lib/X11/fonts/100dpi"
FontPath "/usr/lib/X11/fonts/75dpi"
EndSection
Section "Module"
#nvidia
# Load "GLcore"
Load "bitmap"
Load "dbe"
Load "ddc"
#nvidia
# Load "dri"
Load "extmod"
Load "freetype"
Load "glx"
Load "int10"
Load "record"
Load "speedo"
Load "type1"
Load "vbe"
EndSection
Section "InputDevice"
Identifier "Generic Keyboard"
Driver "keyboard"
Option "CoreKeyboard"
Option "XkbRules" "xfree86"
Option "XkbModel" "pc105"
Option "XkbLayout" "fr"
EndSection
Section "InputDevice"
Identifier "Configured Mouse"
Driver "mouse"
Option "CorePointer"
Option "Device" "/dev/psaux"
Option "Protocol" "ImPS/2"
Option "Emulate3Buttons" "true"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
Identifier "Generic Mouse"
Driver "mouse"
Option "SendCoreEvents" "true"
Option "Device" "/dev/input/mice"
Option "Protocol" "ImPS/2"
Option "Emulate3Buttons" "true"
Option "ZAxisMapping" "4 5"
EndSection
Section "Device"
Identifier "Matrox"
Driver "mga" #"nvidia" #"nv"
BusID "0:8:0"
EndSection
Section "Device"
Identifier "Riva TNT"
Driver "nvidia" #"nv"
BusID "1:0:0"
EndSection
Section "Monitor"
Identifier "Generic Monitor 1"
# HorizSync 30-82 iiyama
# VertRefresh 50-110 iiyama
HorizSync 30-70
VertRefresh 50-180
Option "DPMS"
# ModeLine "1280x1024" 135.00 1280 1288 1432 1688 1024 1025 1028 1066 +hsync +vsync
# ModeLine "1280x1024" 135.00 1280 1324 1468 1708 1024 1025 1028 1066 +hsync +vsync
# Modeline "1152x864" 108.00 1152 1228 1356 1604 864 865 868 900 +hsync +vsync
EndSection
Section "Monitor"
Identifier "Generic Monitor 2"
# HorizSync 30-82 iiyama
# VertRefresh 50-110 iiyama
HorizSync 30-70
VertRefresh 50-180
Option "DPMS"
# ModeLine "1280x1024" 135.00 1280 1288 1432 1688 1024 1025 1028 1066 +hsync +vsync
# ModeLine "1280x1024" 135.00 1280 1324 1468 1708 1024 1025 1028 1066 +hsync +vsync
# ModeLine "1280x960" 108.00 1280 1304 1416 1640 960 961 964 1000 +hsync +vsync
# Modeline "1152x864" 108.00 1152 1228 1356 1604 864 865 868 900 +hsync +vsync
EndSection
Section "Screen"
Identifier "Default Screen"
Device "Matrox"
Monitor "Generic Monitor 1"
DefaultDepth 16 #24
SubSection "Display"
Depth 16 #24
Modes "1280x1024" "1280x960" "1152x864" "1024x768" "800x600" "640x480" "1280x1024" "1280x960"
# ViewPort 0 0
EndSubSection
EndSection
Section "Screen"
Identifier "Screen 2"
Device "Riva TNT"
Monitor "Generic Monitor 2"
DefaultDepth 16 #24
SubSection "Display"
Depth 16 #24
Modes "1280x1024" "1280x960" "1152x864" "1024x768" "800x600" "640x480"
# ViewPort 0 0
EndSubSection
EndSection
Section "ServerLayout"
Identifier "Default Layout"
# Screen "Default Screen"
# Screen "Screen 2" LeftOf "Default Screen"
Screen "Screen 2"
Screen "Default Screen" RightOf "Screen 2"
InputDevice "Generic Keyboard"
InputDevice "Configured Mouse"
InputDevice "Generic Mouse"
EndSection
Section "DRI"
Mode 0666
EndSection
Le bi-écran en images