• Aucun résultat trouvé

Il existe bien sûr d’autres applications clientes utilisant le serveur X

N/A
N/A
Protected

Academic year: 2022

Partager "Il existe bien sûr d’autres applications clientes utilisant le serveur X"

Copied!
8
0
0

Texte intégral

(1)

TP : utilisation de X11 1-Fonctionnement rapide de l’affichage graphique.

Sous le système d'exploitation UNIX/GNU-Linux l'affichage graphique utilise le mode client serveur. Le serveur X-Window/Xorg, en abrégé le serveur X, gère la totalité de l 'affichage en exécutant les requêtes des clients lui demandant de faire un affichage. Un des premiers clients est le gestionnaire de fenêtre chargé de donner un aspect identique à toutes les fenêtres : le « look and feel ». Il existe bien sûr d’autres applications clientes utilisant le serveur X :

les applications « terminal »,

le gestionnaire de fichiers graphique,

les outils « images » tel que gimp,

les lecteurs multimédias : xine, mplayer, vlc,

Le serveur X accepte des requêtes provenant de 2 sources une locale et une distante. Le moyen de communication local est une « socket » de type UNIX, se trouvant dans le répertoire /tmp/.X11 ou /tmp/.X11-unix.

Les requêtes distantes arrivent au serveur X par l'intermédiaire d'une

« socket » supportant le protocole TCP. Un socket réseau est caractérisée par le numéro de port qui lui est affecté. Un serveur X donné écoute le port 6000+no_d_afficheur, 6000 pour :0, 6001 pour :1, … Lorsqu’une application X est lancée elle contacte le serveur X défini par la variable d'environnement DISPLAY ou celui défini par un paramètre de la ligne de commande. La variable d’environnement DISPLAY est définie de la manière suivante par la documentation sur serveur X :

[hostname]:displaynumber[.screennumber]

que l’on traduira par :

machine:numéro_afficheur.numéro_écran

machine : est le nom ou l’adresse IP de la machine à laquelle l’afficheur est connecté, si aucun nom n’est donné le moyen de communication le plus efficace pour communiquer avec le serveur X de la machine locale sera utilisé ;

numéro_afficheur : décrit un ensemble de moniteurs qui partagent les mêmes claviers et dispositif de pointage (souris, tablette graphique ...).

En général une machine ne dispose que d'un clavier et un dispositif de pointage. Sur une machine serveur il peut en exister plusieurs sous la forme d’un ensemble d' « écran-clavier-souris », les afficheurs sont numérotés à partir de 0, on peut assimiler afficheur à carte graphique ;

(2)

numéro_écran : certains afficheurs partagent le même ensemble clavier- souris entre plusieurs moniteurs, dans ce cas les moniteurs sont numérotés à partir de 0. Lors de la création d'une fenêtre si le numéro d'écran n'est pas donné l'écran 0 est utilisé.

Exemple 1 : utilisation de la valeur par défaut pour créer un terminal : xterm

Exemple 2 : création d'un terminal sur le second écran attaché à la première carte graphique :

xterm -display :0.1

Exemple 3 création d'un terminal sur le premier écran attaché à la seconde carte graphique :

xterm -display :1.0

Lorsque le serveur accepte des requêtes provenant du réseau il est possible d'exécuter une application sur une machine donnée dont l'affichage est réalisé sur un écran attaché à une autre machine. Dans l'exemple suivant:

Les commandes : xterm

xterm -display 192.168.1.134:0.0 xterm -display 127.0.0.1:0.0 xterm -display localhost:0.0

exécutées sur la machine du haut créeront un terminal s'affichant sur le premier écran de la première carte graphique.

Carte graphique 0 Carte graphique 1

Carte graphique 0 Écran 0

Écran 0

Écran 1

Écran 0

Écran 1 IP:192.168.1.34

IP:192.168.1.128

DISPLAY=192.168.1.34:0.0

DISPLAY=192.168.1.34:1.0 DISPLAY=192.168.1.34:1.1

DISPLAY=192.168.1.128:0.0

DISPLAY=192.168.1.128:0.1

(3)

Les commandes suivantes, exécutées sur la même machine afficheront un terminal sur un des écrans de la seconde machine :

xterm -display 192.168.1.128:0.0

export DISPLAY=192.168.1.128:0.1; xterm

Dans la dernière forme la variable DISPLAY ayant pris la valeur 192.168.1.128:0.1 toute les applications lancées par la suite ne modifiant pas la valeur de cette variable s'afficheront sur le même écran.

Ces fonctionnalités permettent une très grande souplesse dans le lancement d'applications graphiques en permettant leur affichage de manière locale ou distante ou en permettant d'afficher sur plusieurs écrans différents connectés à la même carte graphique. En voici quelques exemples :

Une carte graphique ayant deux sorties SVGA et DVI :

sur la sortie SVGA : un moniteur

sur la sortie DVI : un vidéo-projecteur

affichage en mode « Clone » : le vidéo-projecteur est identique au moniteur

affichage en mode Grand-Bureau : on peut glisser une fenêtre d'un écran à l'autre

dans les deux cas on ne dispose que d'un seul écran

affichage en mode séparé : on choisit sur quel écran, 0 ou 1, s'affiche l'application lancée.

Avec GNU/Linux le nombre de terminaux créés par la virtualisation de l'utilisation clavier/écran permet de disposer de plusieurs dispositifs d'affichage. En mode caractère le passage de l'un à l'autre est réalisé par utilisation de combinaison de touches Alt Fn, en mode graphique par Alt Ctrl Fn.

Le nombre de serveurs X fonctionnant sur une machine n'étant pas limité à un il est possible :

d'avoir un serveur X s'affichant sur l'écran unique,

deux serveurs X gérant le même écran local ou des écrans locaux différents,

deux serveurs X, un gérant l'écran local, le second s'affichant sur un autre écran connecté à une carte graphique sur une machine distante,

Les configurations comportant plusieurs écrans et leur mode de fonctionnement sont déterminées par le fichier de configuration /etc/X11/xorg.conf.

Sécurité :

Les nombreuses possibilités énoncées précédemment sont contrôlées par des règles de sécurité mises en œuvre par le système d'exploitation et par le serveur X lui-même. De manière standard les requêtes réseau sont refusées par le serveur. Pour le vérifier tapez la commande suivante : ps awx | grep X

Vous devez obtenir une réponse semblable à ceci : La ligne :

/usr/X11R6/bin/X :0 ...-nolisten tcp vt7 indique :

(4)

que le serveur X actif gère le premier afficheur « :0 »,

qu'il est attaché à la console virtuelle 7 : /dev/tty7 (Alt F7 ou Alt Ctrl F7 pour voir son affichage)

qu'il refuse les connexions provenant du réseau « -nolisten tcp ».

L'utilisateur ayant lancé le serveur X, de manière explicite, commande startx par exemple, ou implicite en s'étant identifié par un écran de connexion graphique, comme gdm, est le propriétaire du serveur et est le seul autorisé à lancer des applications s'affichant par l'intermédiaire de ce serveur. Le fichier /etc/X11/xinit/xserverrc détermine les condition de fonctionnement du serveur X.

Lorsque le serveur X accepte les connexions réseau la commande xhost permet d'autoriser, xhost +machine, d'interdire, xhost -machine, des applications distantes à s'afficher localement. Sans paramètre la commande liste les machines autorisées à utiliser l'affichage.

Dans ce second exemple un deuxième serveur X a été lancé il gère le DISPLAY 1 et accepte les connexions provenant du réseau, il est attaché au terminal virtuel 8, /dev/tty8 qui était le premier terminal libre, non attaché à un processus. Pour y accéder il faudra donc utiliser la combinaison de touches Alt Ctrl F8 ou Alt F8.

ATTENTION : local signifie que l'application envoie directement ses requêtes au serveur X et pas par l'intermédiaire du réseau.

Distant signifie que les clients envoient leurs requêtes à l'aide d'un des moyens de communication réseau. Un client s'exécutant localement, envoyant ses requêtes par le réseau sera considéré comme un client distant. Si la variable DISPLAY vaut :0.0 ou unix:0.0 la connexion est locale, les applications graphiques utilisent la socket de type UNIX pour envoyer leurs requêtes au serveur X. Si la variable DISPLAY est de la forme machine:X.Y les requêtes sont envoyées en utilisant la socket TCP et cela même si la variable DISPLAY est égale à localhost:0.0.

(5)

2- Utilisation des possibilités d'affichage graphique en local.

2.1- Création de plusieurs fenêtres terminal.

Logez vous sur l'écran graphique et ouvrez deux fenêtres dans lesquelles vous ferez afficher la valeur de la variable DISPLAY par la commande :

echo $DISPLAY Que vaut cette variable dans : la fenêtre 1 :

la fenêtre 2 :

2.2- Vous êtes propriétaire du serveur X, vous pouvez donc lancer des applications graphiques:

Logez vous sur un écran caractère (Alt F1 ou Ctrl Alt F1 par exemple) et faites afficher la variable DISPLAY. Quelle est sa valeur?

Lancez la commande xterm, xfce4-terminal ou gnome-terminal que se passe-t-il ?

Modifiez la variable DISPLAY en lui affectant la valeur de la question 2.1, relancez la même commande. Quel est son résultat ?

Repassez sur l'écran graphique, Alt F7, combien de fenêtres sont affichées ?

root n'est pas un utilisateur privilégié pour le serveur X, il lui est impossible de lancer des applications graphiques. Connectez root sur une console caractère et vérifiez le. Donnez la procédure de test :

2.3- Détermination des caractéristiques du serveur X.

Comment a été lancé le serveur X que vous utilisez?

À quel terminal est-il attaché ?

Accepte-t-il les connexions distantes ?

(6)

3- Utilisation d'un serveur X à distance.

Autorisez le serveur X à accepter les requêtes distantes, pour cela il existe plusieurs moyens, utiliser l'écran de connexion graphique dans la partie Sécurité s'il le permet, modifier le fichier /etc/lightdm/lightdm.conf, modifier /etc/X11/xinit/xserverrc, lancer manuellement le serveur X en le paramètrant correctement, ...

L'écran de connexion graphique est lightdm, examinez le fichier /etc/lightdm/lightdm.conf dans la partie options par défaut (SeatDefaults) cherchez la ligne autorisant TCP et mettez la à true.

Quelles modifications faire ?

Relancez lightdm et le serveur X en exécutant /etc/init.d/lightdm restart ou service lightdm restart. A l'aide de la commande nestat -atn vérifiez que la socket utilisant le port 6000 est bien dans l'état LISTEN :

Proto Recv-Q Send-Q Adresse locale Adresse distante Etat tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN Vérifiez que vous pouvez obtenir l'affichage d'un terminal depuis une machine distante sur votre écran.

Quelles sont les commandes exécutées sur la machine distante distante.

4- Lancement d'un second serveur X en local.

4.1- Lancement du serveur X en utilisant les possibilités du gestionnaire de connexion graphique, de l'environnement de bureau ou de l'économiseur d'écran.

Avec gnome : Allez dans :

Bureau -> Clore la session sélectionnez :

Basculez d'utilisateur

Un nouvel écran de connexion graphique s'affiche.

Avec xfce : la procédure est complexe et nécessite la modification de fichiers de configuration.

Avec l'économiseur d'écran :

Si le bouton NEW LOGIN est opérationnel il suffit de l'utiliser.

4.2- Lancement du serveur X à l'aide de la commande startx.

La commande startx est un fichier de commande utilisant divers fichiers de configuration pour lancer une session X. Contrairement aux méthodes précédentes il n'est pas nécessaire d'être propriétaire du serveur X actuel pour l'utiliser. Sa syntaxe est la suivante :

(7)

startx –- options du serveur X

Les options de la ligne de commande suivant les deux caractères – sont des options qui sont passées au serveur X lors de son lancement. man X ou man xserver vous indiqueront quelles sont toutes les options que l'on peut passer au serveur X. Citons :no_display définissant le display à gérer et vt no pour définir le terminal virtuel de rattachement.

Logez vous dans un terminal en mode caractère et lancez la commande suivante pour démarrer une nouvelle session:

startx -- :1 -nolisten tcp vt8 À quel terminal ce nouveau serveur est-il rattaché?

Connectez vous sur une machine distante par ssh et lancez une application s'affichant sur le serveur nouvellement créé.

Quelle valeur de la variable DISPLAY faut-il utiliser?

Que se passe-t-il?

Que faut-il faire pour éliminer le/les problème(s)?

Terminez tous les serveurs X que vous avez lancé en leur envoyant un signal de terminaison à l'aide de la commande :

kill -HUP no_processus

La commande ps ax vous permettra de connaître les numéros de processus à utiliser.

4.3- Lancement du serveur X manuellement sans utiliser les automatismes.

Dans une session caractère lancez la commande : X :3.0 vt9 -dpi 96

créant un serveur X gérant le DISPLAY :3.0 attachée au terminal virtuel 9.

Changez de terminal caractère et logez vous une nouvelle fois.

Quelle valeur de la variable DISPLAY faut-il utiliser pour adresser le premier écran géré par ce serveur?

(8)

Exportez la valeur de cette variable et lancer un terminal xterm, gnome- terminal, xfce4-terminal… en tâche de fond (commande&).

Basculez l'affichage sur le terminal virtuel correspondant au serveur, remarquez l'aspect de la fenêtre terminal créée qui ne possède aucun habillage ou bordure cela est du au fait qu'il n'existe encore pas de gestionnaire de fenêtres pour ce serveur.

Dans cette fenêtre faites afficher la valeur de la variable DISPLAY. Est-elle correcte?

Que vaut-elle?

Pour lancer le gestionnaire de fenêtres xfce4 dans cette fenêtre, tapez xfce4-session, les erreurs affichées sont sans importance.

Que se passe-t-il?

4.4- Utilisation d'un tunnel ssh pour l 'affichage local d'applications distantes.

Le paramètre -X de la commande ssh permet de créer un tunnel crypté de liaison entre une application graphique distante et le serveur X local.

On peut se dispenser d'utliser -X lorsque la partie cliente et serveur ont été configurées pour faire cela automatiquement, ce qui est le cas sur les machines du département informatique. Le paramètre -x désactive cet automatisme.

Connectez vous par ssh sur une machine quelconque et faites afficher la variable DISPLAY. Que vaut-elle?

Existe-t-il un serveur X supplémentaire?

Références

Documents relatifs

Ainsi, lorsqu'un utilisateur se connecte à internet à l'aide d'une application cliente configurée pour utiliser un serveur proxy, celle-ci va se connecter en premier lieu au

Il faudra seulement rajouter une route vers le

Nous avons commencé par demander à des participants de deuxième année, dans le cadre d’un cours de psychologie à l’Université de Genève, de remplir les

Les résultats sont présentés sous forme de matrice T dont le nombre de libges est mmax; le nombre total d'incrément de temps et le nombre de colonnes est n le nombre de points.

[r]

[r]

Or cette configuration manuelle peut être fastidieuse pour un nombre important de périphériques car pour chaque machine il faut entrer manuellement l'adresse IPv4, le masque

[r]