Cette page web fait partie d’un ensemble de petits projets qui explorent les possibilités de la carte Smart Zynq.
Ce projet est également publié sur HelloFPGA, un site recommandé pour les lecteurs chinois. Il existe aussi une courte vidéo qui illustre la méthode décrite sur cette page.
Introduction
Sur les ordinateurs Linux, il est possible pour un logiciel graphique d’ouvrir une fenêtre sur un autre ordinateur. Autrement dit, le logiciel (par exemple Google Chrome) peut s’exécuter sur une machine, tandis que l’utilisateur de ce logiciel se trouve devant une autre machine. Il existe des solutions similaires avec Microsoft Windows, mais celles-ci offrent généralement une mauvaise expérience utilisateur. Linux est bien mieux adapté au travail à distance.
Cette fonctionnalité n’est pas souvent utilisée, car les gens travaillent généralement sur leur propre ordinateur ou portable. Mais lorsqu’un ordinateur n’a pas d’écran qui lui est connecté, cette fonctionnalité peut s’avérer utile.
Ce tutoriel explique comment exécuter un logiciel graphique sur Xillinux alors que la souris, le clavier et l’écran sont connectés à un ordinateur Microsoft Windows.
Le serveur X
La base du bureau Linux est X-Windows. C’est un logiciel très ancien, mais qui fonctionne toujours bien aujourd’hui. Contrairement aux ordinateurs Microsoft Windows, l’interface graphique repose sur le serveur X (X server). Il s’agit d’un programme informatique ordinaire (s’exécutant dans l’espace utilisateur) qui implémente un serveur TCP/IP. Ce serveur écoute habituellement sur le port 6000. Tout programme qui veut afficher une fenêtre sur l’écran de l’ordinateur se connecte à ce serveur via TCP/IP. Toutes les informations graphiques sont transmises par cette connexion TCP/IP. Les frappes clavier et les mouvements de souris de l’utilisateur sont également transmis par cette connexion.
Le programme qui contrôle la fenêtre peut s’exécuter sur le même ordinateur ou sur un autre. Cela n’a pas d’importance, car la connexion repose sur TCP/IP.
Sur la plupart des ordinateurs Linux actuels, il n’est pas possible de se connecter directement au serveur X via TCP/IP depuis un autre ordinateur. Cette fonctionnalité est désactivée pour des raisons de sécurité. Il existe d’ailleurs une alternative sûre pour établir une telle connexion entre deux ordinateurs Linux : « ssh -X ». Néanmoins, les programmes graphiques qui s’exécutent sur un ordinateur Linux sont généralement capables de se connecter à l’affichage d’un autre ordinateur.
Il est donc utile d’exécuter un serveur X (X server) sur un ordinateur Microsoft Windows. Ce serveur X permet à des programmes qui s’exécutent sur un autre ordinateur de présenter leur interface graphique sur l’ordinateur Microsoft Windows. Je vais présenter deux options : d’abord un bureau Linux complet apparaîtra sur l’ordinateur Microsoft Windows ; ensuite, je montrerai comment présenter une seule fenêtre appartenant à un programme qui s’exécute sur l’ordinateur Linux.
Préparation
Tout d’abord, téléchargez et installez vcxsrv. La procédure d’installation est la même que pour n’importe quelle application Microsoft Windows.
L’étape suivante consiste à trouver l’adresse IP de l’ordinateur qui exécute Microsoft Windows : utilisez ipconfig dans une invite de commande (Command Prompt) comme suit :
> ipconfig
Windows IP Configuration
Ethernet adapter Ethernet:
Connection-specific DNS Suffix . :
IPv4 Address. . . . . . . . . . . : 192.168.1.11
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.1.3
L’étape suivante consiste à désactiver le Pare-feu Microsoft Windows Defender. Sinon, les programmes qui s’exécutent sur Xillinux ne pourront pas se connecter au serveur X. En fait, même un ping depuis Xillinux échouera.
Évidemment, désactiver le pare-feu rend l’ordinateur vulnérable aux attaques venant du réseau. Il est donc recommandé de vérifier au préalable si le réseau informatique est protégé par un pare-feu externe avant de procéder.
Allez dans « Activer ou désactiver le Pare-feu Windows Defender » (Turn Windows Defender Firewall on and off).
Puis désactivez le pare-feu :
Après avoir désactivé le pare-feu, vérifiez que la carte Xillinux peut communiquer avec l’ordinateur Microsoft Windows. Par exemple, essayez la commande ping sur Xillinux :
root@localhost:~# ping 192.168.1.11 PING 192.168.1.11 (192.168.1.11) 56(84) bytes of data. 64 bytes from 192.168.1.11: icmp_seq=1 ttl=128 time=0.797 ms 64 bytes from 192.168.1.11: icmp_seq=2 ttl=128 time=0.790 ms 64 bytes from 192.168.1.11: icmp_seq=3 ttl=128 time=0.782 ms ^C --- 192.168.1.11 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 1998ms rtt min/avg/max/mdev = 0.782/0.789/0.797/0.033 ms
Exécuter un bureau Linux sur Microsoft Windows
Pour démarrer vcxsrv, cliquez sur l’icône nommée XLaunch.
Dans la première fenêtre contextuelle :
- Choisissez « One Large Window » (une seule grande fenêtre).
- Concernant le numéro d’affichage (Display number), choisissez zéro. La valeur par défaut, -1, permet au programme de choisir le numéro du serveur. Cela peut conduire à un comportement déroutant.
Dans la deuxième fenêtre contextuelle : sélectionnez « Start no client » (ne démarrer aucun client).
Dans la troisième fenêtre contextuelle : sélectionnez « disable access control » (désactiver le contrôle d’accès). Cela permet de se connecter depuis la carte Xillinux.
Après ces trois fenêtres contextuelles, vcxsrv ouvre une grande fenêtre vide. Tout est noir dans cette fenêtre.
Nous allons maintenant remplir cette grande fenêtre avec le bureau de Xillinux. Tapez ceci dans un terminal sur la carte Xillinux :
root@localhost:~# DISPLAY=192.168.1.11:0 /etc/X11/Xsession
Le bureau graphique apparaît sur l’ordinateur Microsoft Windows quelques secondes après cette commande.
Il est également possible d’utiliser ssh pour lancer le bureau. Par exemple, supposons que l’adresse IP de la carte Xillinux soit 192.168.1.123. La commande suivante peut être utilisée dans une fenêtre d’invite de commande (Command Prompt) sur l’ordinateur Microsoft Windows.
> ssh root@192.168.1.123 "DISPLAY=192.168.1.11:0 /etc/X11/Xsession"
Il est nécessaire d’avoir défini un mot de passe pour l’utilisateur root avant d’utiliser ssh.
Notez qu’il est possible de copier à l’intérieur de la fenêtre de vcxsrv puis de coller dans une fenêtre ordinaire de Microsoft Windows, et inversement.
« /etc/X11/Xsession » est la commande qui lance le bureau. « DISPLAY=192.168.1.11:0 » affecte une valeur à une variable d’environnement. Cela indique au programme de se connecter à un ordinateur distant.
L’affectation de DISPLAY comporte deux parties. La première est l’adresse IP (192.168.1.11 dans cet exemple). La seconde est le numéro d’affichage (Display Number). Rappelez-vous qu’au démarrage de vcxsrv, le numéro d’affichage choisi était 0. C’est pourquoi la seconde partie de DISPLAY est « :0 ». Cela indique au client TCP de se connecter au port 6000. Si l’on choisit un autre numéro d’affichage, il faut modifier DISPLAY en conséquence. Par exemple, si le numéro d’affichage est 5, il faut utiliser « 192.168.1.11:5 ». Le client TCP tentera alors de se connecter au port 6005.
Ouvrir une seule fenêtre Linux sur Microsoft Windows
Je vais maintenant montrer comment exécuter un programme graphique sur Xillinux de sorte que sa fenêtre s’ouvre sur l’ordinateur Microsoft Windows.
Démarrez vcxsrv comme précédemment, mais avec une différence : au lieu de choisir « One Large Window », choisissez « Multiple Windows ». Hormis cette différence, faites les mêmes choix qu’avant.
Contrairement à la fois précédente, aucune nouvelle fenêtre ne s’ouvrira après les trois fenêtres contextuelles. Il semblera que rien ne se passe après la fin de la configuration. Mais c’est trompeur. Le serveur X (X server) est en cours d’exécution et il attend des requêtes.
Par exemple, essayez ceci sur Xillinux :
root@localhost:~# DISPLAY=192.168.1.11:0 gnome-text-editor &
Cela lance un éditeur de texte sur l’ordinateur Microsoft Windows. Il est également possible d’ouvrir une fenêtre de terminal :
root@localhost:~# DISPLAY=192.168.1.11:0 lxterminal &
Ouvrir une fenêtre de terminal de cette manière présente un avantage : il n’est plus nécessaire d’ajouter la partie « DISPLAY=192.168.1.11:0 ». C’est la valeur par défaut pour toutes les commandes lancées depuis ce terminal.
Comme déjà mentionné, on peut aussi envoyer la commande via ssh : tapez ce qui suit dans l’invite de commande (Command Prompt) de Microsoft Windows pour ouvrir une fenêtre de terminal :
> ssh root@192.168.1.123 "DISPLAY=192.168.1.11:0 lxterminal"
Comme précédemment, cet exemple suppose que l’adresse IP de la carte Xillinux est 192.168.1.123.
Malheureusement, il ne semble pas exister de moyen simple d’arrêter le serveur X. Lorsque le serveur X (X server) fonctionne dans ce mode, aucune fenêtre ne représente le programme. La méthode pour arrêter le serveur consiste donc à utiliser le Gestionnaire des tâches (Task Manager) : trouvez la tâche nommée « VcXsrv windows xserver » et cliquez sur « Fin de tâche » (End Task).





