Cette partie du document a �t� fournie gracieusement par Frederick A. Niles qui conserve tous ses droits sur les informations donn�es.
Les quelques pages qui suivent sont cens�es permettre une premi�re prise en main des configurations � deux �crans sous Linux. Bien que le processus se d�roule naturellement, les occasions de se tromper ne manquent pas.
Je me suis focalis� sur la mise en place d'un serveur X sur un second moniteur. L'int�r�t en est que l'on croise de temps � autre des personnes se d�barrassant de vieux moniteurs de 19 ou 20 pouces � fr�quence fixe car ils ne peuvent plus s'en servir. On peut ainsi d�marrer avec un petit moniteur multisync et disposer de X sur un moniteur de grandes dimensions.
Comme il s'agit d'un domaine en plein d�veloppement, l'information �volue rapidement. Le contenu de ce document pourrait tr�s bien �tre d�pass�, voire compl�tement faux, lorsque vous le lirez.
** ATTENTION ** Ce texte a �t� r�dig� avant la sortie de la version 4.0 de la XFree86 qui devrait modifier pas mal de choses. Essayez d'obtenir une nouvelle version de ce document si elle existe.
Le retour de la part des utilisateurs sera plus que certainement le bienvenu. Sans vos remarques et vos questions, ce document n'existerait pas. N'h�sitez donc pas � me contacter � l'adresse suivante : Frederick.A.Niles@gsfc.nasa.gov.
Les personnes suivantes ont particip� � l'�laboration de ce Mini-HOWTO :
vandrove@vc.cvut.cz
ehliar@lysator.liu.se
(x2x)m.bizzarri@icube.it
(multiple X servers)L'auteur de ce document d�gage toute responsabilit� quant � son contenu. Vous employez les notions, exemples et tout ce qui figure ici � vos risques et p�rils. S'agissant d'une nouvelle version de ce document, des informations erron�es ou inad�quates peuvent tr�s bien entra�ner la d�gradation de votre mat�riel. Fa�tes-y attention et, bien que ce soit hautement improbable, je me d�charge de toute responsabilit� � cet �gard.
Copyright (c) 1999 Frederick Niles
La distribution de ce document doit se conformer aux termes de la licence LDP tels que d�finis � l'adresse : sunsite.unc.edu/LDP/COPYRIGHT.html>.
La plupart des cartes vid�os supposent qu'elles assument seules cette fonction au sein du syst�me. Elles occupent donc en permanence l'espace d'adressage de l'adaptateur graphique primaire. Il existe quelques exceptions :
Ce Mini-HOWTO traite avant tout de logiciel libre. Certains serveurs X commerciaux sont n�anmoins capables de g�rer plusieurs moniteurs tels le serveur Metro-X de Metro Link (www.metrolink.com) et Accelerated-X de Xi Graphics (www.xig.com).
Les patches et programmes suivants sont n�cessaires :
Commencez par patcher votre version du noyau avec le patche "fbaddon". Ensuite, vous configurerez le noyau et activerez la gestion de la m�moire vid�o. Si vous disposez de cartes Matrox, incluez le pilote d'acc�l�ration unifi� Matrox. Excluez le gestionnaire de m�moire vid�o VESA. Activez bien s�r la gestion de plusieurs adaptateurs, recompilez le noyau et r�initialisez le syst�me.
A pr�sent, installez l'utilitaire "fbset" et lisez attentivement la documentation relative � son param�trage. La mise en place d'un fichier "/etc/fb.modes" est vivement recommand� une fois que vous vous serez d�cid� sur une configuration. Le paquetage fbset comprend un script Perl de conversion du fichier XF86Config en param�tres pour fb.modes. Vous trouverez mon script en shell Bourne dans les annexes A et B.
Vous devez vous mettre au point sur l'emploi du pilote de m�moire vid�o avec un seul adaptateur et bien identifier tout ce qui n'a rien � voir avec la gestion de plusieurs. Vous vous �pargnerez ainsi pas mal de noeuds au cerveau. Je me focalise surtout sur la mise en place de X au niveau du second moniteur vu que la plupart des autres op�rations de configuration en forment un sous-ensemble.
Compilez le programme "con2fb". Lanc� sans arguments, il fournit le message suivant : "usage: con2fb fbdev console". Une commande telle que "con2fb /dev/fb1 /dev/tty6" attacherait la console virtuelle num�ro 6 au second gestionnaire de m�moire vid�o. Ctrl-Alt-F6 vous basculera dans cette console qui s'affichera sur le second moniteur.
La mise en place des param�tres "fbset" doit se cantonner au moniteur avec lequel "fbset" est employ�. Fa�tes donc attention � bien employer l'option "-fb" avec le second moniteur. Plus pr�cis�ment, si vous ne voulez rien faire d'autre qu'accorder la r�solution verticale virtuelle avec la r�solution verticale r�elle : "fbset -fb /dev/fb1 -vyres 600" (par exemple). L'affichage en mode texte en est s�rieusement ralenti mais sans cela X reste vraiment hideux.
Le fichier framebuffer.txt explique bien mieux que je ne puis le faire mais voici les deux points essentiels :
# Serveur X s'appuyant sur le gestionnaire de m�moire vid�o. Section "Screen" Driver "fbdev" Device "Millennium" Monitor "NEC MultiSync 5FGp" Subsection "Display" Depth 8 Modes "default" ViewPort 0 0 EndSubsection Subsection "Display" Depth 16 Modes "default" ViewPort 0 0 EndSubsection Subsection "Display" Depth 24 Modes "default" ViewPort 0 0 EndSubsection Subsection "Display" Depth 32 Modes "default" ViewPort 0 0 EndSubsection EndSection
Restreignez vous aux modes "default" car je ne pense pas qu'il y en ait d'autres qui fonctionnent avec le pilote de m�moire vid�o Matrox.
Positionnez la variable d'environnement FRAMEBUFFER sur le second p�riph�rique de m�moire vid�o : "export FRAMEBUFFER=/dev/fb1" ou : "setenv FRAMEBUFFER /dev/fb1" X doit �tre lanc� avec des param�tres lui sp�cifiant � la fois la profondeur souhait�e au niveau des couleurs et un num�ro correspondant � la console virtuelle employ�e. Par exemple : "startx -- :0 -bpp 16 vt06". Le serveur X en 16 bits par pixel d'identifiant ":0" est attach� � la console virtuelle num�ro 6. Utilisez ":1" au lancement d'un autre serveur X en le liant � une console d�pendant de l'autre gestionnaire de m�moire vid�o et vous disposerez de deux serveurs X fonctionnant simultan�ment.
Les �tapes de mise en place d'un serveur X sur un second moniteur peuvent �tre ainsi r�sum�es :
alias startxfb = " setenv FRAMEBUFFER /dev/fb\!*; # l'argument passe a l'alias est recupere con2fb $FRAMEBUFFER /dev/$tty; # positionne le pilote sur la console courante fbset -fb $FRAMEBUFFER 1280x1024@62; # Cf /etc/fb.modes startx -- :\!* -bpp 16 vt0`echo $tty | cut -dy f 2`' # execution de X "
Ces lignes correspondent au contenu de mon .cshrc aux commentaires pr�s mais ils aident, avec les sauts de ligne, � en faciliter la lecture. Je fournis le num�ro du pilote de m�moire vid�o comme argument � l'alias.
Si quelqu'un me fournit un �quivalent pour bash, je l'incluerai ici. La commande tty vous fournira le nom de la console courante.
Je n'ai pas encore trouv� comment passer au niveau 5 dans une configuration � deux adaptateurs avec un serveur sur le second moniteur ou sur les deux. Bien que l'ajout d'une ligne au fichier Xservers de xdm/gdm soit ais�, la contrainte de d�marrer le serveur X depuis la console g�r�e par le pilote de m�moire vid�o interdit cette solution. Si quelqu'un a une id�e, qu'il m'en fasse part afin que je puisse l'ajouter.
x2x vous permet de passer d'un serveur X � l'autre lorsque vous atteignez le bord d'un �cran. Aux derni�res nouvelles, ce programme se trouvait � l'adresse suivante : http://ftp.digital.com/pub/DEC/SRC/x2x/>. La distribution Debian en propose un paquetage. Je n'ai pas eu l'occasion de l'essayer mais plusieurs utilisateurs ont fait part d'exp�riences r�ussies.
Il est bon de garder pr�sente � l'esprit l'existence de certaines commandes quand on dispose de plusieurs adaptateurs (surtout quand on �crit des scripts). * "chvt" permet de passer d'une console virtuelle (VT) � une autre. * "openvt" ex�cute un programme dans une console diff�rente. * "tty" renvoie le nom de la console courante.
Notez le positionnement de bpp.
#!/usr/bin/octave -q bpp = 16; DCF = sscanf(argv(1,:), "%f"); HR = sscanf(argv(2,:), "%f"); SH1 = sscanf(argv(3,:), "%f"); SH2 = sscanf(argv(4,:), "%f"); HFL = sscanf(argv(5,:), "%f"); VR = sscanf(argv(6,:), "%f"); SV1 = sscanf(argv(7,:), "%f"); SV2 = sscanf(argv(8,:), "%f"); VFL = sscanf(argv(9,:), "%f"); pixclock = 1000000 / DCF; left_margin = HFL - SH2; right_margin = SH1 - HR; hsync_len = SH2 - SH1; # 3) vertical timings: upper_margin = VFL - SV2; lower_margin = SV1 - VR; vsync_len = SV2 - SV1; RR = DCF / (HFL * VFL) *1e6; HSF = DCF / HFL * 1e3; printf("mode \"%dx%d\"\n",HR,VR); printf(" # D: %3.2f MHz, H: %3.2f kHz, V: %2.2f Hz\n", DCF, HSF, RR); printf(" geometry %d %d %d %d %d\n", HR, VR, HR, VR, bpp); printf(" timings %d %d %d %d %d %d %d\n", ... pixclock, left_margin, right_margin, ... upper_margin, lower_margin, ... hsync_len, vsync_len); printf("endmode\n");
Le script Octave "cvtmode" est utilis�.
#!/bin/sh # Shell script to convert XF86Config file to fb.modes file. # Uses octave script cvtmode.m if [ -z $1 ]; then FILE=/etc/X11/XF86Config else FILE=$1 fi i=1 LEN=`grep Modeline $FILE | wc -l` while expr $i \< $LEN> /dev/null ; do CURLINE=`grep Modeline $FILE | cut -d'"' -f 3-20 | head -$i | tail -1 ` ./cvtmode.m $CURLINE echo " " i=`expr $i + 1` done
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:40