« Hardware-hard plus-pca2 » : différence entre les versions

De Lea Linux
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
(balises code)
 
Ligne 3 : Ligne 3 :
= Deux utilisateurs simultanément sur un seul PC =
= Deux utilisateurs simultanément sur un seul PC =


<div class="leatitre">Deux utilisateurs simultanément sur un seul PC</div><div class="leapar">[mailto:thierry.chabot@free.fr Thierry Chabot]</div><div class="leadesc">Avec Deux écrans, deux cartes graphiques deux souris, deux clavier MAIS '''un seul PC''', on peut travailler à  deux en même temps.</div>
<div class="leatitre">Deux utilisateurs simultanément sur un seul PC</div><div class="leapar">[mailto:thierry.chabot@free.fr Thierry Chabot]</div><div class="leadesc">Avec Deux écrans, deux cartes graphiques deux souris, deux clavier MAIS '''un seul PC''', on peut travailler à  deux en même temps.</div>


== Introduction ==
== Introduction ==
Ligne 9 : Ligne 9 :
Après plusieurs essais infructueux, voici une configuration (sans doute pas la seule, mais celle que j'ai réussi) qui m'a permis de le faire.
Après plusieurs essais infructueux, voici une configuration (sans doute pas la seule, mais celle que j'ai réussi) qui m'a permis de le faire.


J'ai travaillé à  partir d'une Mandrake 10.0 avec le kernel 2.6.3-7mdk
J'ai travaillé à  partir d'une Mandrake 10.0 avec le kernel 2.6.3-7mdk


Mon matériel  :
Mon matériel :


* 1 carte graphique PCI S3 virge ''ET'' 1 carte graphique AGP NVIDIA Riva TNT2
* 1 carte graphique PCI S3 virge ''ET'' 1 carte graphique AGP NVIDIA Riva TNT2
Ligne 19 : Ligne 19 :
=== Prérequis ===
=== Prérequis ===


* Configuration de XFree (DrakConf ou à  la main)
* Configuration de XFree (DrakConf ou à  la main)
* Téléchargement et décompression de fichiers (en mode graphique ou pas)
* Téléchargement et décompression de fichiers (en mode graphique ou pas)
* Démarrage de linux sans X, mode console, root...
* Démarrage de linux sans X, mode console, root...


=== Résumé du travail à  faire ===
=== Résumé du travail à  faire ===


* Installer et tester le matériel (débrouillez-vous)
* Installer et tester le matériel (débrouillez-vous)
Ligne 36 : Ligne 36 :
Pour éviter les fautes de frappe, faites des copier/coller des instructions avec la souris (tout ce qui est sur fond jaune très pale encadré) dans une console, et ça doit aller tout seul.<br /> Pour savoir ou vous en êtes, vous pouvez cocher les petites cases à chaque étape. Ca détend et ce n'est pas forcément inutile...
Pour éviter les fautes de frappe, faites des copier/coller des instructions avec la souris (tout ce qui est sur fond jaune très pale encadré) dans une console, et ça doit aller tout seul.<br /> Pour savoir ou vous en êtes, vous pouvez cocher les petites cases à chaque étape. Ca détend et ce n'est pas forcément inutile...


# Télécharger et installer les sources du noyau 2.6.3-7 <br /><code>urpmi kernel-source</code> Si vous travaillez déjà avec ce noyau.
# Télécharger et installer les sources du noyau 2.6.3-7 <br /><div class="code">urpmi kernel-source</div> Si vous travaillez déjà avec ce noyau.
# Télécharger le patch <br /><code> wget http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/linux-2.6.2-disable-usb-keyboard.patch</code><br /> et le copier dans le répertoire /usr/src/linux-2.6.3-7mdk/ (en mode root)<br /><code>cp linux-2.6.2-disable-usb-keyboard.patch /usr/src/linux-2.6.3-7mdk/</code>  
# Télécharger le patch <br /><div class="code"> wget http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/linux-2.6.2-disable-usb-keyboard.patch</div><br /> et le copier dans le répertoire /usr/src/linux-2.6.3-7mdk/ (en mode root)<br /><div class="code">cp linux-2.6.2-disable-usb-keyboard.patch /usr/src/linux-2.6.3-7mdk/</div>  
# Patcher le noyau (en mode root) <br /><code>cd /usr/src/linux-2.6.3-7mdk/</code><br /><code>patch -p0 < linux-2.6.2-disable-usb-keyboard.patch</code>  
# Patcher le noyau (en mode root) <br /><div class="code">cd /usr/src/linux-2.6.3-7mdk/</div><br /><div class="code">patch -p0 < linux-2.6.2-disable-usb-keyboard.patch</div>  
# Compiler (je n'ai eu à  changer aucune option) <br /><code>make clean && make bzImage && make modules && make modules_install</code> *C'est très long (2h sur un 1,2 Ghz)
# Compiler (je n'ai eu à  changer aucune option) <br /><div class="code">make clean && make bzImage && make modules && make modules_install</div> *C'est très long (2h sur un 1,2 Ghz)
# Copier le nouveau noyau dans le répertoire /boot <br /><code>cp arch/i386/boot/bzImage /boot/vmlinux-2.6.3-7-usb</code>  
# Copier le nouveau noyau dans le répertoire /boot <br /><div class="code">cp arch/i386/boot/bzImage /boot/vmlinux-2.6.3-7-usb</div>  
# Ajouter le nouveau noyau dans /etc/lilo.conf <div class="code">''image=/boot/vmlinux-2.6.3-7-usb<br /> label="263-7-usb"<br />'' root=/dev/hdxx (xx= a1, a2, b1 , etc.. voir les autres lignes du fichier)<br /> initrd=/boot/initrd-2.6.3-7mdk.img<br /> append="devfs=mount acpi=ht splash=silent"<br /> vga=788<br /> read-only</div><nowiki>*Je n'ai changé que les deux premières lignes par rapport aux autres images de lilo.</nowiki>  
# Ajouter le nouveau noyau dans /etc/lilo.conf <div class="code">''image=/boot/vmlinux-2.6.3-7-usb<br /> label="263-7-usb"<br />'' root=/dev/hdxx (xx= a1, a2, b1 , etc.. voir les autres lignes du fichier)<br /> initrd=/boot/initrd-2.6.3-7mdk.img<br /> append="devfs=mount acpi=ht splash=silent"<br /> vga=788<br /> read-only</div><nowiki>*Je n'ai changé que les deux premières lignes par rapport aux autres images de lilo.</nowiki>  
# Exécuter lilo pour que les changements soient pris en compte. <br /><code>lilo</code>  
# Exécuter lilo pour que les changements soient pris en compte. <br /><div class="code">lilo</div>  
Vérifier si la modification a fonctionné  : <br /><code>cat /proc/bus/input/devices</code><br /> Avant de redémarrer sur le nouveau noyau,vous devez trouver pour les deux claviers une ligne du genre ''Handlers=kbd event1''<br /> En démarrant sur le noyau modifié,vous devez trouver la même chose pour le clavier PS/2, mais pour le clavier usb les lettres "kdb" présentes dans l'ancien noyau doivent avoir disparu avec le nouveau noyau.
Vérifier si la modification a fonctionné : <br /><div class="code">cat /proc/bus/input/devices</div><br /> Avant de redémarrer sur le nouveau noyau,vous devez trouver pour les deux claviers une ligne du genre ''Handlers=kbd event1''<br /> En démarrant sur le noyau modifié,vous devez trouver la même chose pour le clavier PS/2, mais pour le clavier usb les lettres "kdb" présentes dans l'ancien noyau doivent avoir disparu avec le nouveau noyau.


== XFree ==
== XFree ==
Ligne 51 : Ligne 51 :
Les commandes sont à taper dans l'ordre indiqué en tant que simple utilisateur dans votre console et tout doit bien ce passer
Les commandes sont à taper dans l'ordre indiqué en tant que simple utilisateur dans votre console et tout doit bien ce passer


# Télécharger les sources de XFree. Je ne sais plus pourquoi j'ai téléchargé des sources de XFree 4.4 (ça fonctionne avec XFree 4.3) <br /><code>mkdir sources-xfree</code><br /><code>cd sources-xfree/</code><br /><code>wget ftp://ftp.xfree86.org/pub/XFree86/4.4.0/source/XFree86-4.4.0-src*.tgz</code>  
# Télécharger les sources de XFree. Je ne sais plus pourquoi j'ai téléchargé des sources de XFree 4.4 (ça fonctionne avec XFree 4.3) <br /><div class="code">mkdir sources-xfree</div><br /><div class="code">cd sources-xfree/</div><br /><div class="code">wget ftp://ftp.xfree86.org/pub/XFree86/4.4.0/source/XFree86-4.4.0-src*.tgz</div>  
# Décompresser les 7 fichiers sources téléchargés (je ne sais pas s'ils sont tous utiles) <br /><code>for i in *.tgz;do tar zxvf $i;done</code>
# Décompresser les 7 fichiers sources téléchargés (je ne sais pas s'ils sont tous utiles) <br /><div class="code">for i in *.tgz;do tar zxvf $i;done</div>
# Télécharger le patch <br /><code>wget http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/XFree86-4.3.0-unified.patch</code> *Le patch est fait pour XFree4.3, mais a fonctionné sans erreur avec XFree4.4.  
# Télécharger le patch <br /><div class="code">wget http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/XFree86-4.3.0-unified.patch</div> *Le patch est fait pour XFree4.3, mais a fonctionné sans erreur avec XFree4.4.  
# Patcher les sources de XFree dans le répertoire créé en décompressant  : <br /><code>patch -p1 < XFree86-4.3.0-unified.patch</code>  
# Patcher les sources de XFree dans le répertoire créé en décompressant : <br /><div class="code">patch -p1 < XFree86-4.3.0-unified.patch</div>  
# Entrer dans le répertoire créé lors de la décompression<br /><code>cd xc</code>
# Entrer dans le répertoire créé lors de la décompression<br /><div class="code">cd xc</div>
# compiler (c'est à peu près aussi long que pour le noyau) <br /><code>make World >& world.log </code> (en faisant dans un autre terminal un <br /><code>tail -f world.log</code> _à  partir du même répertoire_ vous pouvez patienter en regardant ce que fait le compilateur). Si vous avez autant de chance que moi, la compilation réussira. (Il faut si besoin avoir installé "bison" et "flex" :urpmi...)
# compiler (c'est à peu près aussi long que pour le noyau) <br /><div class="code">make World >& world.log </div> (en faisant dans un autre terminal un <br /><div class="code">tail -f world.log</div> _à  partir du même répertoire_ vous pouvez patienter en regardant ce que fait le compilateur). Si vous avez autant de chance que moi, la compilation réussira. (Il faut si besoin avoir installé "bison" et "flex" :urpmi...)
# Installer le nouveau XFree. Passer en mode root et taper: <br /><code>make install </code>(il ne faut pas avoir changé de répertoire....)  
# Installer le nouveau XFree. Passer en mode root et taper: <br /><div class="code">make install </div>(il ne faut pas avoir changé de répertoire....)  
# Redémarrer X pour voir si ça marche encore.<br /> *En cas de problème, pour retrouver votre ancien X il faut réinstaller la version fournie avec la distribution: <br /><code>rpm -i --replacefiles /mnt/cdrom/Mandrake/RPMS/XFree86-server-4.3-30mdk.i586.rpm</code>(sans l'option ''replacefiles'' ça ne marche pas.). Il faut aussi réinstaller de la même manière XFree86-4.3-30mdk.i586.rpm XFree86-xfs-4.3-30mdk.i586.rpm et XFree86-75dpi-fonts-4.3-30mdk.i586.rpm<br /><code>mv /etc/rc5.d/S30dm /etc/rc5.d/S99dm</code>
# Redémarrer X pour voir si ça marche encore.<br /> *En cas de problème, pour retrouver votre ancien X il faut réinstaller la version fournie avec la distribution: <br /><div class="code">rpm -i --replacefiles /mnt/cdrom/Mandrake/RPMS/XFree86-server-4.3-30mdk.i586.rpm</div>(sans l'option ''replacefiles'' ça ne marche pas.). Il faut aussi réinstaller de la même manière XFree86-4.3-30mdk.i586.rpm XFree86-xfs-4.3-30mdk.i586.rpm et XFree86-75dpi-fonts-4.3-30mdk.i586.rpm<br /><div class="code">mv /etc/rc5.d/S30dm /etc/rc5.d/S99dm</div>


== XFree (configuration) ==
== XFree (configuration) ==
Ligne 72 : Ligne 72 :
<div class="code">Section "InputDevice"<br /> Identifier "Keyboard0"<br /> Driver "Keyboard"<br /> Option "device" "/dev/input/event1"<br /> Option "Protocol" "usbev"<br /> Option "XkbModel" "pc105"<br /> Option "XkbLayout" "fr"<br /> Option "XkbOptions" ""<br /> Option "XkbRules" "xfree86"<br /> EndSection<br /><br /> Section "InputDevice"<br /> Identifier "Keyboard1"<br /> Driver "Keyboard"<br /> Option "Protocol" "usbev"<br /> Option "device" "/dev/input/event2"<br /> Option "XkbModel" "pc105"<br /> Option "XkbLayout" "fr"<br /> Option "XkbOptions" ""<br /> EndSection</div>
<div class="code">Section "InputDevice"<br /> Identifier "Keyboard0"<br /> Driver "Keyboard"<br /> Option "device" "/dev/input/event1"<br /> Option "Protocol" "usbev"<br /> Option "XkbModel" "pc105"<br /> Option "XkbLayout" "fr"<br /> Option "XkbOptions" ""<br /> Option "XkbRules" "xfree86"<br /> EndSection<br /><br /> Section "InputDevice"<br /> Identifier "Keyboard1"<br /> Driver "Keyboard"<br /> Option "Protocol" "usbev"<br /> Option "device" "/dev/input/event2"<br /> Option "XkbModel" "pc105"<br /> Option "XkbLayout" "fr"<br /> Option "XkbOptions" ""<br /> EndSection</div>


<nowiki>* Important  : mon clavier PS/2 est le Keyboard0 et l'usb Keyboard1 mais il FAUT la ligne </nowiki>''Option "Protocol" "usbev"'' sur les DEUX.<br /> Pour savoir sur quel /dev/input/eventX (ou /dev/input/mouseX) sont vos périphériques, tapez  : <br /><code>cat /dev/input/eventX</code> et essayez les. Celui concerné envoie alors des caractères (n'importe quoi) sur la console.
<nowiki>* Important : mon clavier PS/2 est le Keyboard0 et l'usb Keyboard1 mais il FAUT la ligne </nowiki>''Option "Protocol" "usbev"'' sur les DEUX.<br /> Pour savoir sur quel /dev/input/eventX (ou /dev/input/mouseX) sont vos périphériques, tapez : <br /><div class="code">cat /dev/input/eventX</div> et essayez les. Celui concerné envoie alors des caractères (n'importe quoi) sur la console.


==== Les souris ====
==== Les souris ====
Ligne 88 : Ligne 88 :
<div class="code">Section "Device"<br /> Identifier "device1"<br /> BoardName "RIVA TNT2"<br /> Driver "nv"<br /> BusID "PCI:2:0:0"<br /> Option "DPMS"<br /> Option "IgnoreEDID" "1"<br /> EndSection<br /><br /> Section "Device"<br /> Identifier "device0"<br /> Driver "s3virge"<br /> BusID "PCI:1:10:0"<br /> Option "DPMS"<br /> Option "IgnoreEDID" "1"<br /> EndSection</div>
<div class="code">Section "Device"<br /> Identifier "device1"<br /> BoardName "RIVA TNT2"<br /> Driver "nv"<br /> BusID "PCI:2:0:0"<br /> Option "DPMS"<br /> Option "IgnoreEDID" "1"<br /> EndSection<br /><br /> Section "Device"<br /> Identifier "device0"<br /> Driver "s3virge"<br /> BusID "PCI:1:10:0"<br /> Option "DPMS"<br /> Option "IgnoreEDID" "1"<br /> EndSection</div>


<nowiki>* J'ai fait un certain nombre d'essais. Ca marche avec ces paramètres mais ils ne sont peut-être pas tous utiles.</nowiki><br /> Pour trouver la valeur de BusID, taper  : <br /><code>lspci| grep VGA</code> Pour moi, ça a donné  : <br />''01:0a.0 VGA compatible controller: S3 Inc. ViRGE/DX or /GX (rev 01)<br /> 02:00.0 VGA compatible controller: nVidia Corporation NV5M64 [RIVA TNT2 Model 64/Model 64 Pro] (rev 15)''
<nowiki>* J'ai fait un certain nombre d'essais. Ca marche avec ces paramètres mais ils ne sont peut-être pas tous utiles.</nowiki><br /> Pour trouver la valeur de BusID, taper : <br /><div class="code">lspci| grep VGA</div> Pour moi, ça a donné : <br />''01:0a.0 VGA compatible controller: S3 Inc. ViRGE/DX or /GX (rev 01)<br /> 02:00.0 VGA compatible controller: nVidia Corporation NV5M64 [RIVA TNT2 Model 64/Model 64 Pro] (rev 15)''


Il faut transformer l'hexadécimal en décimal, et on a alors  :<br /> pour la carte S3virge  : ''01:0a.0 donne dans XF86Config "PCI:1:10:0"''<br /> et pour l'autre ''02:00.0 donne "PCI:2:0:0"''
Il faut transformer l'hexadécimal en décimal, et on a alors :<br /> pour la carte S3virge : ''01:0a.0 donne dans XF86Config "PCI:1:10:0"''<br /> et pour l'autre ''02:00.0 donne "PCI:2:0:0"''


Rappel  : aux valeurs hexadécimales ''a, b, c, d, e'' et ''f'' correspondent les valeurs décimales ''10, 11, 12, 13, 14'' et ''15''.
Rappel : aux valeurs hexadécimales ''a, b, c, d, e'' et ''f'' correspondent les valeurs décimales ''10, 11, 12, 13, 14'' et ''15''.


==== la section screen ====
==== la section screen ====
Ligne 108 : Ligne 108 :
<div class="code">Section "ServerLayout"<br /> Identifier "X0"<br /> InputDevice "Mouse0" "CorePointer"<br /> InputDevice "Keyboard0" "CoreKeyboard"<br /> Screen 0 "screen0" 0 0<br /> Option "IsolateDevice" "1:10:0"<br /> Option "SingleCard" "True"<br /> EndSection<br /><br /> Section "ServerLayout"<br /> Identifier "X1"<br /> InputDevice "Keyboard1" "CoreKeyboard"<br /> InputDevice "Mouse1" "CorePointer"<br /> Screen 0 "screen1" 0 0<br /> Option "IsolateDevice" "2:0:0"<br /> Option "SingleCard" "True"<br /> EndSection</div>
<div class="code">Section "ServerLayout"<br /> Identifier "X0"<br /> InputDevice "Mouse0" "CorePointer"<br /> InputDevice "Keyboard0" "CoreKeyboard"<br /> Screen 0 "screen0" 0 0<br /> Option "IsolateDevice" "1:10:0"<br /> Option "SingleCard" "True"<br /> EndSection<br /><br /> Section "ServerLayout"<br /> Identifier "X1"<br /> InputDevice "Keyboard1" "CoreKeyboard"<br /> InputDevice "Mouse1" "CorePointer"<br /> Screen 0 "screen1" 0 0<br /> Option "IsolateDevice" "2:0:0"<br /> Option "SingleCard" "True"<br /> EndSection</div>


<nowiki>* Là  encore, je ne sais pas si tout est utile (surtout les options)...</nowiki><br />Attention : l'écran ''primaire'' du bios (celui qui s'allume le premier, soit AGP soit PCI -pour moi le PCI-) '''DOIT''' être relié au '''obligatoirement''' au clavier PS/2 (ici tous les "0")
<nowiki>* Là  encore, je ne sais pas si tout est utile (surtout les options)...</nowiki><br />Attention : l'écran ''primaire'' du bios (celui qui s'allume le premier, soit AGP soit PCI -pour moi le PCI-) '''DOIT''' être relié au '''obligatoirement''' au clavier PS/2 (ici tous les "0")


== Test et modification de xdm ==
== Test et modification de xdm ==


C'est presque fini.... Petit test pour voir ce que ça donne  : <br /><code>kde -- -layout X0</code> (ça doit marcher d'un coté) <br /><code>kde -- -layout X1</code> (ça doit marcher de l'autre coté) <br />
C'est presque fini.... Petit test pour voir ce que ça donne : <br /><div class="code">kde -- -layout X0</div> (ça doit marcher d'un coté) <br /><div class="code">kde -- -layout X1</div> (ça doit marcher de l'autre coté) <br />


* Configurer '''xdm''' pour avoir X sur les deux écrans au démarrage et y choisir son login. <div>dans le fichier ''/etc/X11/xdm/Xservers'' commenter les lignes qui commencent par 0 et 1 et ajouter ces deux lignes  : <div class="code">  :0 local /usr/X11R6/bin/X  :0 -nolisten tcp vt6 -layout X1 -nopciaccessdisable -novtswitches -delay 6<br />  :1 local /usr/X11R6/bin/X  :1 -nolisten tcp vt6 -layout X0 -nopciaccessdisable</div></div>
* Configurer '''xdm''' pour avoir X sur les deux écrans au démarrage et y choisir son login. <div>dans le fichier ''/etc/X11/xdm/Xservers'' commenter les lignes qui commencent par 0 et 1 et ajouter ces deux lignes : <div class="code"> :0 local /usr/X11R6/bin/X :0 -nolisten tcp vt6 -layout X1 -nopciaccessdisable -novtswitches -delay 6<br /> :1 local /usr/X11R6/bin/X :1 -nolisten tcp vt6 -layout X0 -nopciaccessdisable</div></div>
* Redémarrer ou taper <br /><code>/etc/init.d/dm start</code>
* Redémarrer ou taper <br /><div class="code">/etc/init.d/dm start</div>


Voilà , c'est déjà  fini  !!
Voilà , c'est déjà  fini !!


<div class="note">NOTE : Je viens de réinstaller le driver propriétaire NVIDIA sans problème après ces manipulations. Il faut faire attention à  ne pas avoir la ligne ''Load "dri"'' dans la section Modules et changer ''nv'' par ''nvidia'', comme avant. Celui qui veut la 3D sur ses deux cartes (si les 2 ne sont pas des NVIDIA), se reportera au "XFree-Local-multi-user-HOWTO" (le lien est ci-dessous).</div>
<div class="note">NOTE : Je viens de réinstaller le driver propriétaire NVIDIA sans problème après ces manipulations. Il faut faire attention à  ne pas avoir la ligne ''Load "dri"'' dans la section Modules et changer ''nv'' par ''nvidia'', comme avant. Celui qui veut la 3D sur ses deux cartes (si les 2 ne sont pas des NVIDIA), se reportera au "XFree-Local-multi-user-HOWTO" (le lien est ci-dessous).</div>


=== Problèmes connus ===
=== Problèmes connus ===
Ligne 132 : Ligne 132 :
* Ajouter une section "ServerLayout" du genre :<br /><div class="code">Section "ServerLayout"<br /> Identifier "X2"<br /> InputDevice "Keyboard0" "CoreKeyboard"<br /> InputDevice "Mouse0" "CorePointer"<br /> Screen "screen1"<br /> Screen "screen2" LeftOf "screen1"<br /> Option "IsolateDevice" "0:12:0"<br /> Option "SingleCard" "True"<br /> Option "Xinerama"<br /> EndSection</div>
* Ajouter une section "ServerLayout" du genre :<br /><div class="code">Section "ServerLayout"<br /> Identifier "X2"<br /> InputDevice "Keyboard0" "CoreKeyboard"<br /> InputDevice "Mouse0" "CorePointer"<br /> Screen "screen1"<br /> Screen "screen2" LeftOf "screen1"<br /> Option "IsolateDevice" "0:12:0"<br /> Option "SingleCard" "True"<br /> Option "Xinerama"<br /> EndSection</div>
* Démarrer en mode interactif et ne pas démarrer X
* Démarrer en mode interactif et ne pas démarrer X
* taper <code>kde -- -layout X2</code> une fois connecté
* taper <div class="code">kde -- -layout X2</div> une fois connecté


=== Sources de documentation ===
=== Sources de documentation ===

Dernière version du 3 mai 2012 à 20:07


Deux utilisateurs simultanément sur un seul PC

Deux utilisateurs simultanément sur un seul PC
Avec Deux écrans, deux cartes graphiques deux souris, deux clavier MAIS un seul PC, on peut travailler à deux en même temps.

Introduction

Après plusieurs essais infructueux, voici une configuration (sans doute pas la seule, mais celle que j'ai réussi) qui m'a permis de le faire.

J'ai travaillé à partir d'une Mandrake 10.0 avec le kernel 2.6.3-7mdk

Mon matériel  :

  • 1 carte graphique PCI S3 virge ET 1 carte graphique AGP NVIDIA Riva TNT2
  • 1 clavier PS2 ET 1 Clavier usb (logitech) (Il faut obligatoirement : une connexion PS/2 et une usb mais ça marche avec deux clavier PS/2 dont un branché avec un adaptateur PS2-USB)
  • 1 souris PS2 (microsoft) ET 1 souris usb (logitech)

Prérequis

  • Configuration de XFree (DrakConf ou à la main)
  • Téléchargement et décompression de fichiers (en mode graphique ou pas)
  • Démarrage de linux sans X, mode console, root...

Résumé du travail à faire

  • Installer et tester le matériel (débrouillez-vous)
  • Modifier le kernel
  • Modifier et configurer XFree86
  • Tester et modifier xdm

Le kernel

Pour éviter les conflits entre les deux claviers, il faut empêcher le noyau 2.6 de reconnaître le clavier usb. Voici la procédure.

Pour éviter les fautes de frappe, faites des copier/coller des instructions avec la souris (tout ce qui est sur fond jaune très pale encadré) dans une console, et ça doit aller tout seul.
Pour savoir ou vous en êtes, vous pouvez cocher les petites cases à chaque étape. Ca détend et ce n'est pas forcément inutile...

  1. Télécharger et installer les sources du noyau 2.6.3-7
    urpmi kernel-source
    Si vous travaillez déjà avec ce noyau.
  2. Télécharger le patch

    et le copier dans le répertoire /usr/src/linux-2.6.3-7mdk/ (en mode root)
    cp linux-2.6.2-disable-usb-keyboard.patch /usr/src/linux-2.6.3-7mdk/
  3. Patcher le noyau (en mode root)
    cd /usr/src/linux-2.6.3-7mdk/

    patch -p0 < linux-2.6.2-disable-usb-keyboard.patch
  4. Compiler (je n'ai eu à changer aucune option)
    make clean && make bzImage && make modules && make modules_install
    *C'est très long (2h sur un 1,2 Ghz)
  5. Copier le nouveau noyau dans le répertoire /boot
    cp arch/i386/boot/bzImage /boot/vmlinux-2.6.3-7-usb
  6. Ajouter le nouveau noyau dans /etc/lilo.conf
    image=/boot/vmlinux-2.6.3-7-usb
    label="263-7-usb"
    root=/dev/hdxx (xx= a1, a2, b1 , etc.. voir les autres lignes du fichier)
    initrd=/boot/initrd-2.6.3-7mdk.img
    append="devfs=mount acpi=ht splash=silent"
    vga=788
    read-only
    *Je n'ai changé que les deux premières lignes par rapport aux autres images de lilo.
  7. Exécuter lilo pour que les changements soient pris en compte.
    lilo

Vérifier si la modification a fonctionné  :

cat /proc/bus/input/devices


Avant de redémarrer sur le nouveau noyau,vous devez trouver pour les deux claviers une ligne du genre Handlers=kbd event1
En démarrant sur le noyau modifié,vous devez trouver la même chose pour le clavier PS/2, mais pour le clavier usb les lettres "kdb" présentes dans l'ancien noyau doivent avoir disparu avec le nouveau noyau.

XFree

Il faut maintenant patcher Xfree pour pouvoir démarrer deux sessions (+clavier+souris) différentes en même temps. La mandrake 10.0 utilise la version 4.3 de Xfree.

Les commandes sont à taper dans l'ordre indiqué en tant que simple utilisateur dans votre console et tout doit bien ce passer

  1. Télécharger les sources de XFree. Je ne sais plus pourquoi j'ai téléchargé des sources de XFree 4.4 (ça fonctionne avec XFree 4.3)
    mkdir sources-xfree

    cd sources-xfree/

  2. Décompresser les 7 fichiers sources téléchargés (je ne sais pas s'ils sont tous utiles)
    for i in *.tgz;do tar zxvf $i;done
  3. Télécharger le patch
    *Le patch est fait pour XFree4.3, mais a fonctionné sans erreur avec XFree4.4.
  4. Patcher les sources de XFree dans le répertoire créé en décompressant  :
    patch -p1 < XFree86-4.3.0-unified.patch
  5. Entrer dans le répertoire créé lors de la décompression
    cd xc
  6. compiler (c'est à peu près aussi long que pour le noyau)
    make World >& world.log
    (en faisant dans un autre terminal un
    tail -f world.log
    _à partir du même répertoire_ vous pouvez patienter en regardant ce que fait le compilateur). Si vous avez autant de chance que moi, la compilation réussira. (Il faut si besoin avoir installé "bison" et "flex" :urpmi...)
  7. Installer le nouveau XFree. Passer en mode root et taper:
    make install
    (il ne faut pas avoir changé de répertoire....)
  8. Redémarrer X pour voir si ça marche encore.
    *En cas de problème, pour retrouver votre ancien X il faut réinstaller la version fournie avec la distribution:
    rpm -i --replacefiles /mnt/cdrom/Mandrake/RPMS/XFree86-server-4.3-30mdk.i586.rpm
    (sans l'option replacefiles ça ne marche pas.). Il faut aussi réinstaller de la même manière XFree86-4.3-30mdk.i586.rpm XFree86-xfs-4.3-30mdk.i586.rpm et XFree86-75dpi-fonts-4.3-30mdk.i586.rpm
    mv /etc/rc5.d/S30dm /etc/rc5.d/S99dm

XFree (configuration)

Si tout s'est bien passé, il faut maintenant modifier le fichier /etc/X11/XF86Config-4 pour qu'il gère le tout.

Pour ne pas trop me casser la tête, j'ai utilisé DrakConf pour configurer ma carte AGP et son écran, copié XF86Config, puis recommencé avec ma carte PCI et son écran.
Il m'a suffi ensuite de tout mettre dans le même en ne modifiant que quelques détails.

Voici quelques lignes importantes de mon fichier de configuration.

Les claviers

Section "InputDevice"
Identifier "Keyboard0"
Driver "Keyboard"
Option "device" "/dev/input/event1"
Option "Protocol" "usbev"
Option "XkbModel" "pc105"
Option "XkbLayout" "fr"
Option "XkbOptions" ""
Option "XkbRules" "xfree86"
EndSection

Section "InputDevice"
Identifier "Keyboard1"
Driver "Keyboard"
Option "Protocol" "usbev"
Option "device" "/dev/input/event2"
Option "XkbModel" "pc105"
Option "XkbLayout" "fr"
Option "XkbOptions" ""
EndSection

* Important  : mon clavier PS/2 est le Keyboard0 et l'usb Keyboard1 mais il FAUT la ligne Option "Protocol" "usbev" sur les DEUX.
Pour savoir sur quel /dev/input/eventX (ou /dev/input/mouseX) sont vos périphériques, tapez  :

cat /dev/input/eventX

et essayez les. Celui concerné envoie alors des caractères (n'importe quoi) sur la console.

Les souris

Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "IMPS/2"
Option "Device" "/dev/input/mouse0"
Option "ZAxisMapping" "4 5"
Option "Buttons" "3"
EndSection

Section "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Protocol" "IMPS/2"
Option "Device" "/dev/input/mouse1"
Option "ZAxisMapping" "4 5"
Option "Buttons" "3"
EndSection
  • la configuration m'a semblé ici plus souple. J'ai une souris PS/2 (Mouse0) et une usb (Mouse1).

Les écrans

Section "Monitor"
Identifier "monitor0"
....vos paramètres
EndSection
Section "Monitor"
Identifier "monitor1"
....vos paramètres
EndSection

Les cartes graphiques

Section "Device"
Identifier "device1"
BoardName "RIVA TNT2"
Driver "nv"
BusID "PCI:2:0:0"
Option "DPMS"
Option "IgnoreEDID" "1"
EndSection

Section "Device"
Identifier "device0"
Driver "s3virge"
BusID "PCI:1:10:0"
Option "DPMS"
Option "IgnoreEDID" "1"
EndSection

* J'ai fait un certain nombre d'essais. Ca marche avec ces paramètres mais ils ne sont peut-être pas tous utiles.
Pour trouver la valeur de BusID, taper  :

lspci| grep VGA

Pour moi, ça a donné  :
01:0a.0 VGA compatible controller: S3 Inc. ViRGE/DX or /GX (rev 01)
02:00.0 VGA compatible controller: nVidia Corporation NV5M64 [RIVA TNT2 Model 64/Model 64 Pro] (rev 15)

Il faut transformer l'hexadécimal en décimal, et on a alors  :
pour la carte S3virge  : 01:0a.0 donne dans XF86Config "PCI:1:10:0"
et pour l'autre 02:00.0 donne "PCI:2:0:0"

Rappel  : aux valeurs hexadécimales a, b, c, d, e et f correspondent les valeurs décimales 10, 11, 12, 13, 14 et 15.

la section screen

J'ai recopié tel que le contenu de la configuration des écrans, et ajouté pour l'un

Identifier "screen0"
Device "device0"
Monitor "monitor0"

et pour l'autre

Identifier "screen1"
Device "device1"
Monitor "monitor1"

Enfin la section ServerLayout

Section "ServerLayout"
Identifier "X0"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
Screen 0 "screen0" 0 0
Option "IsolateDevice" "1:10:0"
Option "SingleCard" "True"
EndSection

Section "ServerLayout"
Identifier "X1"
InputDevice "Keyboard1" "CoreKeyboard"
InputDevice "Mouse1" "CorePointer"
Screen 0 "screen1" 0 0
Option "IsolateDevice" "2:0:0"
Option "SingleCard" "True"
EndSection

* Là encore, je ne sais pas si tout est utile (surtout les options)...
Attention : l'écran primaire du bios (celui qui s'allume le premier, soit AGP soit PCI -pour moi le PCI-) DOIT être relié au obligatoirement au clavier PS/2 (ici tous les "0")

Test et modification de xdm

C'est presque fini.... Petit test pour voir ce que ça donne  :

kde -- -layout X0

(ça doit marcher d'un coté)

kde -- -layout X1

(ça doit marcher de l'autre coté)

  • Configurer xdm pour avoir X sur les deux écrans au démarrage et y choisir son login.
    dans le fichier /etc/X11/xdm/Xservers commenter les lignes qui commencent par 0 et 1 et ajouter ces deux lignes  :
    :0 local /usr/X11R6/bin/X :0 -nolisten tcp vt6 -layout X1 -nopciaccessdisable -novtswitches -delay 6
    :1 local /usr/X11R6/bin/X :1 -nolisten tcp vt6 -layout X0 -nopciaccessdisable
  • Redémarrer ou taper
    /etc/init.d/dm start

Voilà , c'est déjà fini  !!

NOTE : Je viens de réinstaller le driver propriétaire NVIDIA sans problème après ces manipulations. Il faut faire attention à ne pas avoir la ligne Load "dri" dans la section Modules et changer nv par nvidia, comme avant. Celui qui veut la 3D sur ses deux cartes (si les 2 ne sont pas des NVIDIA), se reportera au "XFree-Local-multi-user-HOWTO" (le lien est ci-dessous).

Problèmes connus

  1. Une barre noire horizontale apparait parfois sur l'écran primaire s'il n'y a pas d'utilisateur connecté.
  2. Il ne faut pas déplacer les connexions USB, cela change l'ordre des périphériques d'entrée dans /dev/input/eventX et il faut alors modifier XF86Config-4

Extensions

Philippe LAFORGE propose une solution pour pouvoir en plus utiliser xinemara (le même utilisateur utilise les deux écrans en même temps) :

  • Ajouter une section "ServerLayout" du genre :
    Section "ServerLayout"
    Identifier "X2"
    InputDevice "Keyboard0" "CoreKeyboard"
    InputDevice "Mouse0" "CorePointer"
    Screen "screen1"
    Screen "screen2" LeftOf "screen1"
    Option "IsolateDevice" "0:12:0"
    Option "SingleCard" "True"
    Option "Xinerama"
    EndSection
  • Démarrer en mode interactif et ne pas démarrer X
  • taper
    kde -- -layout X2
    une fois connecté

Sources de documentation




@ Retour à la rubrique Matériel

Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Thierry Chabot le 19/08/2004.

Copyright

Copyright © 19/08/2004, Thierry Chabot

Creative Commons License
Creative Commons Attribution iconCreative Commons Share Alike iconCreative Commons Noncommercial
Ce document est publié sous licence Creative Commons
Attribution, Partage à l'identique, Contexte non commercial 2.0 :
http://creativecommons.org/licenses/by-nc-sa/2.0/fr/