Construire un système Linux pour six écrans et six utilisateurs

Gazette Linux n°124 — Mars 2006

Deny

Adaptation française

Joëlle Cornavin

Relecture de la version française

Article paru dans le n°124 de la Gazette Linux de mars 2006.

Article publié sous Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Table des matières

1. Introduction
2. Vue d'ensemble
3. Première étape : sélectionner et installer le matériel
4. Deuxième étape : installer Linux
5. Troisième étape : enregistrer la configuration matérielle
6. Quatrième étape : construction de xorg.conf
7. Cinquième étape : modifier gdm.conf
8. Résultats des tests, coûts et problèmes
9. Récapitulatif
10. Bibliographie

1. Introduction

Un système Linux multiposte : ce tutoriel décrit comment construire un système Linux multiécran, multiutilisateur à l'aide d'une distribution Linux récente, de claviers et de souris USB standard. Xorg appelle cette configuration un système multiposte (en anglais, multi-seat).

Avantages d'un système multiposte : les avantages des systèmes multipostes dans les écoles, les cybercafés et les bibliothèques vont bien au-delà d'une simple économie d'argent. Ils offrent une pollution sonore très inférieure, une consommation d'énergie bien moindre et un espace requis réduit. Pour de nombreuses applications, les budgets afférents à l'alimentation et au bruit sont aussi importants que le coût initial.

Prérequis : pour construire un système multiposte, il vous faut un adaptateur vidéo, un clavier et une souris pour chaque poste. Pour six postes, comptez également une carte mère avec une fente AGP et cinq fentes PCI disponibles. Pour notre système de test, nous avons employé uniquement des claviers et des souris USB, mais rien ne vous empêche d'utiliser un clavier et une souris PS/2 pour un des postes si vous le souhaitez.

Xorg 6.9 ou supérieur est requis, toutefois cette version est déjà présente dans la plupart des distributions majeures. Notre système de test emploie la version gratuite de Mandriva 2006©, et nous n'avons pas recompilé le noyau ou installé de paquetages supplémentaires.

2. Vue d'ensemble

Nous divisons l'implémentation d'un système multiposte en cinq étapes principales :

  1. Sélectionner et installer le matériel

  2. Installer Linux

  3. Enregistrer la configuration matérielle

  4. Modifier xorg.conf

  5. Modifier gdm.conf

Après avoir installé le matériel et installé Linux, nous lisons la configuration du matériel via la commande lspci ou le fichier /proc/bus/input/devices. La plus grande partie du travail de la configuration d'un système multiposte consiste à transcrire les informations matérielles dans le fichier xorg.conf.

3. Première étape : sélectionner et installer le matériel

Sélection du matériel : il y a peu d'ensembles de règles prescrivant à quel matériel faire appel dans votre système multiposte. Par nécessité, certains des claviers et souris doivent utiliser l'USB, mais il n'y a aucune exigence relative au processeur ou à la mémoire minimaux. Nous suggérons de construire et de tester un système multiposte avec un ordinateur que vous avez déjà, et d'évaluer vos besoins matériels en vous aidant des résultats du test. Vous risquez d'être surpris des modestes exigences en termes de processeur et de mémoire pour un système multiposte destiné uniquement à la navigation web.

Essayez si possible d'employer des cartes graphiques accélérées, mais pour une fiabilité accrue, évitez les cartes graphiques dotées de ventilateurs. Utilisez des cartes graphiques récentes ; des cartes graphiques plus anciennes ont souvent un problème de partage de bus PCI. Nous avons eu de la chance avec des cartes nVidia© mais vous pouvez essayer des cartes récentes d'autres fabricants également.

Matériel pour notre système de test : pour notre système, nous avons choisi des cartes graphiques reposant sur le jeu de puces nVidia MX4000©. Elles sont accélérées, n'ont pas de ventilateur, et il était agréable d'avoir un seul pilote pour l'ensemble des six cartes graphiques. L'inconvénient de nVidia © est que le pilote est propriétaire, et qu'il faut le télécharger et l'installer. Si vous utilisez une carte nVidia©, n'oubliez pas de consulter sur leur site web les réglages du BIOS recommandés pour votre carte.

Nous avons utilisé une carte mère ECS 755-A2 © avec un processeur AMD64-3200© et 1 Go de mémoire vive. Notre alimentation est une CoolMax 140mm© et le radiateur du processeur est un Thermaltake « Sonic Tower »©. Pendant notre essai, nous avons ajouté un ventilateur à faible bruit pour refroidir les cartes graphiques. Le flux d'air entre par le fond, passe par les cartes graphiques, remonte vers le refroidisseur du processeur et sort par l'alimentation. Ce flux d'air a semblé convenir plutôt bien. Au repos, la température du processeur était de 31° C, s'élevant seulement à 38°  C après une compilation du noyau de quinze minutes. Le courant du secteur au repos était de 0,25 ampères et de 0,35 ampères pendant la compilation du noyau.

Vous aurez probablement besoin de quelques concentrateurs USB pour connecter tous les claviers et souris. Il faudra également réfléchir à la gestion des câbles avant d'installer de façon permanente le matériel. Sept cordons de secteur, six cordons d'écran, trois concentrateurs USB, six cordons de clavier et six cordons de souris : cela fait beaucoup de câblage !

4. Deuxième étape : installer Linux

L'aptitude au multiposte est fournie par Xorg  6.9/7.0, qui est déjà livré avec la plupart des distributions majeures. Quand vous installez Linux, vous pouvez être amené à installer tous les gestionnaires de fenêtres, y compris fluxbox et twm. Si vous avez l'intention d'utiliser les pilotes nVidia©, veillez à installer le source du noyau également.

Procédez à l'installation avec tout le matériel connecté et mis sous tension. Mandriva© a fait du bon travail en détectant et en configurant nos six périphériques graphiques. Choisissez un niveau d'exécution par défaut de 3, de façon à ce que X ne démarre pas automatiquement après l'amorçage. Vous pouvez vérifier l'installation en ouvrant une session et en exécutant startx. Si tout a bien fonctionné, vous devriez pouvoir déplacer votre souris à travers les six moniteurs.

Mandriva© autorise jusqu'à dix lignes dans le répertoire /dev/input. Il nous en a fallu douze puisque nous avons six claviers et six souris. Nous avons augmenté la limite à 16 en changeant la ligne de /etc/udev/ruled.d/50-mdk.rules :

KERNEL=="event[0-9]*", NAME="input/%k", MODE="0600"

en :

KERNEL=="event[0-9a-f]*", NAME="input/%k", MODE="0600" 

5. Troisième étape : enregistrer la configuration matérielle

Tout le matériel de notre ordinateur possède un nom qui le distingue du matériel identique du même ordinateur. Dans cette étape, nous enregistrons les noms de chacune de nos cartes graphiques, claviers et souris. Commençons par les cartes graphiques.

Les cartes graphiques sont identifiées par leur adresse sur le bus PCI. Nous pouvons lister le matériel sur les bus PCI à l'aide de la commande lspci. Dans notre système de test, la commande lspci donne les résultats suivants :


lspci | grep VGA
00:09.0 VGA compatible controller: nVidia Corporation NV18 [GeForce4 MX 4000 AGP 8x] (rev c1)
00:0a.0 VGA compatible controller: nVidia Corporation NV18 [GeForce4 MX 4000 AGP 8x] (rev c1)
00:0b.0 VGA compatible controller: nVidia Corporation NV18 [GeForce4 MX 4000 AGP 8x] (rev c1)
00:0c.0 VGA compatible controller: nVidia Corporation NV18 [GeForce4 MX 4000 AGP 8x] (rev c1)
00:0d.0 VGA compatible controller: nVidia Corporation NV18 [GeForce4 MX 4000 AGP 8x] (rev c1)
01:00.0 VGA compatible controller: nVidia Corporation NV18 [GeForce4 MX 4000 AGP 8x] (rev c1)

L'adresse du bus correspond au premier champ des lignes ci-dessus. Le nombre précédant les deux points identifie le bus PCI dont il s'agit (les ordinateurs en ont souvent plus d'un), et le second nombre indique l'adresse de la carte sur le bus. Vous devrez connaître ces adresses pour construire le fichier de configuration xorg.conf.

Les souris sont faciles à repérer. À chaque souris correspond une ligne dans le répertoire /dev/input. Un ls peut identifier les souris.


ls /dev/input/mouse*


/dev/input/mouse0  /dev/input/mouse2  /dev/input/mouse4
/dev/input/mouse1  /dev/input/mouse3  /dev/input/mouse5

Les claviers sont identifiés en tant que fichier /dev/input/eventN. Faites un more de /proc/bus/input/devices. Chaque clavier aura une ligne qui spécifie le fichier d'événement. Les deux lignes suivantes correspondent aux deux premiers claviers de votre système.


more /proc/bus/input/devices


I: Bus=0003 Vendor=046e Product=530a Version=0001
N: Name="BTC Multimedia USB Keyboard"
P: Phys=usb-0000:00:03.3-4.2.1/input0
H: Handlers=kbd event6
B: EV=120003
B: KEY=1000000000007 ff87207ac14057ff febeffdfffefffff fffffffffffffffe
B: LED=1f

I: Bus=0003 Vendor=046e Product=530a Version=0001
N: Name="BTC Multimedia USB Keyboard"
P: Phys=usb-0000:00:03.3-4.4.1/input0
H: Handlers=kbd event7
B: EV=120003
B: KEY=1000000000007 ff87207ac14057ff febeffdfffefffff fffffffffffffffe
B: LED=1

Un tableau est un moyen pratique pour consulter toutes les informations ci-dessus.

PosteCarte graphiqueClavier (/dev/input)Souris (/dev/input)
000:09:0event6mouse0
100:10:0event7mouse1
200:11:0event8mouse2
300:12:0event9mouse3
400:13:0event10mouse4
500:14:0event11mouse5

Notez le léger changement dans l'adressage des cartes graphiques. En outre, vous trouverez la numérotation des claviers et des souris plus facilement si vous connectez chaque souris dans le même concentrateur que son clavier correspondant. Ne vous préoccupez pas trop de la correspondance entre le connecteur d'écran et le clavier. Une fois que tout est configuré, vous pouvez déplacer à votre gré les écrans si nécessaire.

6. Quatrième étape : construction de xorg.conf

Le fichier xorg.conf comprend des sections décrivant les claviers, souris, cartes graphiques, moniteurs, écrans et postes. Le plus gros du travail lors de la configuration d'un système multiposte est de copier correctement les informations du tableau ci-dessus dans la section appropriée du fichier xorg.conf. Voici ci-dessous notre configuration pour le poste 5. Vous devriez pouvoir utiliser cette configuration comme prototype pour vos postes supplémentaires. Notez les endroits où sont situées les informations sur le clavier, la souris et la carte graphique. Comme nous avons emprunté des moniteurs pour notre test, nous avons forcé tous les moniteurs à être des affichages à écran plat avec une résolution de 1024 par 768.

# Seat 5
Section "InputDevice"
Identifier     "Keyboard5"
Driver         "evdev"
Option         "Device" "/dev/input/event11"
Option         "XkbModel" "pc105"
Option         "XkbLayout" "us"
Option         "XkbOptions" "compose:rwin"
EndSection

Section "InputDevice"
Identifier     "Mouse5"
Driver         "mouse"
Option         "Protocol" "ExplorerPS/2"
Option         "Device" "/dev/input/mouse5"
Option         "ZAxisMapping" "6 7"
EndSection

Section "Device"
Identifier     "device5"
Driver         "nvidia"
VendorName     "NVIDIA Corp."
BoardName      "NVIDIA GeForce4 (generic)"
BusID          "PCI:0:13:0"
EndSection

Section "Monitor"
Identifier     "monitor5"
ModelName      "Flat Panel 1024x768"
HorizSync       31.5 - 48.5
VertRefresh     40.0 - 70.0
ModeLine       "768x576" 50.0 768 832 846 1000 576 590 595 630
ModeLine       "768x576" 63.1 768 800 960 1024 576 578 590 616
EndSection

Section "Screen"
Identifier     "screen5"
Device         "device5"
Monitor        "monitor5"
DefaultDepth    24
SubSection     "Display"
Virtual     1024 768
Depth       24
EndSubSection
EndSection

Section "ServerLayout"
Identifier     "seat5"
Screen      0  "Screen5" 0 0
InputDevice    "Mouse5" "CorePointer"
InputDevice    "Keyboard5" "CoreKeyboard"
EndSection

Il y a une astuce simple pour aider à vérifier que tous les nombres dans xorg.conf sont exacts : filtrez le fichier avec sort et uniq :


sort /etc/X11/xorg.conf | uniq

 

sort xorg.conf|uniq -d serait également utile — juste au cas où vous auriez par erreur répété n'importe laquelle des chaînes du dispositif.

 
 -- Ben

Le résultat de la chaîne de commande ci-dessus mettra en évidence toute erreur dans la numérotation des différents claviers et consorts.

Tester votre fichier Xorg.conf : il est judicieux de tester votre configuration et de trier vos claviers et souris en mettant en fonction les connecteurs un par un. Connectez-vous à distance, de façon à n'utiliser aucun des périphériques graphiques. Saisissez les commandes suivantes pour chacun des six postes (de 0 à 5). (Les commandes ci-dessous concernent le poste 5.)


X -novtswitch -sharevts -nolisten tcp -layout seat5 :5 &
xterm -display :5 &

Si la commande ci-dessus échoue, examinez les messages d'erreur et vérifiez le fichier xorg.conf. Si la commande réussit, utilisez xterm pour aider à identifier que tel clavier et telle souris correspondent à tel poste. Comme les claviers, souris et cartes graphiques sont énumérés dans le même ordre à chaque démarrage, il vous suffira de déplacer à votre gré les périphériques pendant la configuration initiale.

Les commandes ci-dessus pourraient suffire si vous n'avez pas besoin de noms de connexion d'utilisateurs (login). Par exemple, un kiosque de six postes pourrait ne nécessiter que X et un navigateur web sur chaque poste.

7. Cinquième étape : modifier gdm.conf

Si vous souhaitez utiliser des noms de connexion d'utilisateurs, vous devrez modifier la configuration de votre gestionnaire d'affichage favori. Les instructions indiquées concernent gdm, mais les changements sont très similaires pour kdm ou pour le gestionnaire d'affichage de X, xdm.

Modifiez la section [servers] au bas du fichier /etc/X11/gdm/gdm.conf pour indiquer à gdm quels serveurs X démarrer. Les lignes devraient être :

0=Standard0
1=Standard1
2=Standard2
3=Standard3
4=Standard4
5=Standard5

Vous devez indiquer à gdm comment démarrer le serveur X sur chaque poste. Voici les lignes pour ce faire :

[server-Standard5]
name=Standard server
command=/usr/X11R6/bin/X -nolisten tcp -novtswitch -sharevts -layout seat5
flexible=true

Vous aurez besoin d'une section comme celle ci-dessus pour chaque poste. Le nom du serveur, Standard5 dans l'exemple ci-dessus, doit correspondre au nom indiqué dans la section [servers]. Adaptez les options de la ligne de commande de X pour répondre aux exigences de votre propre système.

Une fois que tout est configuré, vous devriez pouvoir démarrer en mode graphique en passant au niveau d'exécution 5 :


telinit 5

Si tout fonctionne, fixez par défaut le niveau d'exécution 5 en modifiant /etc/inittab ou en le définissant à l'aide de drakconf

8. Résultats des tests, coûts et problèmes

Bilan des performances : entre les réinitialisations, nous avons constaté que les performances étaient excellentes pour six utilisateurs effectuant des tâches PC classiques, dont la navigation web, le courrier électronique, le traitement de texte et les jeux. Il semble que les cartes graphiques accélérées aient effectué la majeure partie du travail, de sorte que même les jeux de type arcade et les vidéos en ligne n'ont pas trop augmenté la charge du processeur. Bien que « 3200 » soit une appréciation précise des performances du AMD64-3200©, alors un processeur doté d'une fréquence de « 1600 » aurait été plus que suffisant.

Coût : si l'on n'inclut pas le moniteur, chaque poste de notre système coûte un peu moins de 55,50 €, dont 33,12 € pour la carte graphique de type MX4000©, 16,50 € pour un clavier USB, 4,14 € pour une souris USB et 1,66 € pour un demi-concentrateur USB. Notre systéme de test a fait intervenir des claviers onéreux équipés d'un concentrateur USB> intégré, que nous avons destiné à des cartes à mémoire flash pour chaque utilisateur ou des lecteurs musicaux.

La partie partagée de notre système coûte environ 430,50 €, dont 149 € pour le processeur, 41,40 € pour la carte mère, 74,50 € pour la mémoire vive et 41,40 € pour le radiateur du processeur. L'ensemble que constitue le boîtier, l'alimentation et le lecteur de disque coûte environ 124 €.

Nous donnons simplement ces prix simplement à titre de de comparaison. Vous pouvez trouver des prix inférieurs à ceux-ci et nous ne saurions trop vous recommander de remplacer nos processeur et carte mère de 190 € par un ensemble Athlon 2800+© qui coûte un peu plus de 66 €. Nous n'avons pas inclus le coût des moniteurs du fait que leurs prix sont en baisse et que vos besoins et goûts particuliers peuvent dicter ce que vous dépensez.

Problèmes : avez-vous retenu l'expression « entre les réinitialisations » ci-dessus ? Même si le système fonctionnait parfaitement, il était extrêmement instable. En particulier, nous avons eu assez souvent un kernel oops lors la fermeture de session. Une trace dans syslog d'un tel dysfonctionnement est disponible ici. Nous avons essayé plusieurs méthodes pour résoudre ce problème, parmi lesquelles :

  • mettre en marche et éteindre APIC

  • réduire le nombre de postes

  • essayer les pilotes nv et vesa

  • employer NoInt10

  • mettre à niveau vers la version X11R6.9 officielle

  • mettre à niveau vers le noyau 2.6.15

  • employer xdm et fvwm à la place de gdm et Gnome

Le problème persiste. Faites savoir à si vous avez une idée susceptible d'aider à résoudre ce problème.

Une difficulté beaucoup moins grave est que certains programmes supposent qu'il y a un seul utilisateur sur le PC. Les économiseurs d'écran peuvent consommer une grande partie des ressources du processeur, et KDE, comme Gnome nécessitent une sortie audio. Toute ressource partagée, telle que le son ou un graveur de cédérom, peut poser problème.

Dans le registre des prévisions à plus long terme, nous devrons nous pencher sur les problèmes de sécurité à propos des ordinateurs multipostes. Selon qu'ils s'adressent aux étudiants ou aux patrons de cybercafé, ces systèmes vont être la cible d'attaques délibérées, malveillantes. Pouvons-nous faire confiance à KDE et Gnome pour résister à de telles attaques ?

9. Récapitulatif

Un système multiécran, multiutilisateur sous Linux est désormais envisageable grâce au matériel PC de base et aux distributions Linux standard. Des PC multipostes sous Linux semblent inévitables étant donné les économies potentielles en termes de coût, de bruit et de puissance.

10. Bibliographie

La page de Chris Tyler : Chris Tyler a prévu une aide pour pratiquement toutes les étapes à franchir dans ce projet. Son site web offre un HOWTO qui décrit également comment configurer un système multiposte. Chris est un expert en matière de serveur X et j'attends avec intérêt son prochain livre qui reprendra une partie du contenu présenté dans cet article. Le site web de Chris se trouve sur http://blog.chris.tylers.info/.

Les pages de man de Xorg : Xorg présente un ensemble complet de pages de manuel qui décrit le fichier xorg.conf et toutes les commandes servant au bon fonctionnement de X Window. La page de manuel de xorg.conf se trouve sur http://wiki.x.org/X11R6.9.0/doc/html/xorg.conf.5.html.

Les pages de manuel des commandes X se trouvent sur http://wiki.x.org/X11R6.9.0/doc/html/manindex1.html.

Bob est électronicien amateur et programmeur Linux. Il est un des auteurs de Linux Appliance Design qui doit être publié par No Starch Press.

Adaptation française de la Gazette Linux

L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.

Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://wiki.traduc.org/Gazette_Linux.

Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.