Personal tools
You are here: Home Membres Accueil de fbarriere Docs Cygwin
Document Actions

Cygwin

by françois Barriere last modified 11-10-2005 19:55

Bon alors, vous etes obligé de travailler sur un PC windows, alors comment lui donner un air civilisé? Article qui commence a dater, mais une bonne partie des infromations qu'il contient sont toujours d'actualité...

1 - Avant de commencer

Cette introduction a cygwin n'est pas parfaite, et toutes les remarques, precisions, ajouts (par un vrai gourou cygwin) sont les bienvenus, de memes que les corrections (fautes de frappe et d'orthographe). Si certaines parties ne sont pas clairs, faites le moi savoir, je tenterais (autant que possible) de les rendre plus accessibles.

Les captures d'ecran et les tests qui m'ont permis d'ecrire ce document on été réalisés sur un vieux coucou (Ppro 200) sous windows 98 et Mandrake 9.1 (machine: gotham, IP:192.168.0.1) et un portable sous windows 2000 (machine: gattaca, IP:192.168.0.2).

2 - Présentation

Cygwin, kesako?

Cygwin, c'est tout d'abord une librairie partagée windows (une DLL), qui assure la transcription des appels UNIX en appel de fonction de l'API win32 (l'API de windows). Cette librairie permet donc de porter simplement un code écrit pour un systeme UNIX vers windows.

Cygwin c'est aussi tout un ensemble de logiciels GNU portés sur windows et utilisant cette DLL avec un certain nombres d'utilitaires faisant le lien entre les deux mondes. Parmis ces logiciels, se trouvent des outils de dévelopement (make, ld, gcc), des shells (zsh, bash), mais aussi le serveur X11, les librairies X11, des gestionnaires de fenetres (windowmaker, fvwm).

Cygwin a d'abord été developé par l'equipe de Cygnus (sociéte de service autour de Linux) qui était notament très active dans le dévelopement de GCC (et EGCS), puis, depuis le rachat de Cygnus par RedHat, le dévelopement de Cygwin continue sous le controle (et le financement) de RedHat.

3 - Installation

3.1 - Les modes d'installation

Cygwin peut s'installer de plusieurs manières, sachant que la DLL et le portage des logiciels GNU sur windows/Cygwin évoluent rapidement, l'installation est tres orientée vers l'internet. Toute l'installation se base sur un installeur (un setup.exe que vous pouvez trouver sur la page principal du site de cygwin) qui permet de télécharger et d'installer les differents élements de Cygwin. Il est possible avec cet installeur de télécharger des packages dans un repertoire local, d'installer le contenu d'un repertoire local (issue d'un précédent téléchargement) ou d'enchainer les deux etapes de facon transparente.

Il est aussi possible, apres avoir télécharge les packages de Cygwin, de créer un CD pour ensuite installer a partir de celui-ci.

3.2 - Téléchargement

A partir du site de Cygwin vous trouverez une liste de sites mirroirs a partir desquels il est possible de télécharger la version a jours de Cygwin.

En general les mirroirs maintiennent plusieurs versions des packages ainsi que leurs sources. Si vous téléchargez la totalite du mirroir Cygwin cela peut etre long et important (compter environ 1,5GB pour un mirroir complet). Pour tenir sur un CD il est possible de supprimer les sources (attention au respect de la GPL dans le cas ou vous redistribuez le resultat). Pour cela la commande suivante fera l'affaire:

find . -name *-src.tar.bz2 -print -exec /bin/rm {} \;

Attention, l'installeur est tres sensible et refuse de fonctionner si les regles suivantes ne sont pas respectées:

  • l'arborescence menant aux packages doit etre maintenu a partir du repertoire release.
  • le fichier setup.ini doit se trouver au meme niveau que l'installeur (setup.exe) et dans un repertoire parent de release.
  • le tout (release, setup.exe et setup.ini) ne devra pas se trouver sous la racine du CD (ou du lecteur windows).

Si vous voulez créer un CD pour installer Cygwin plus tard, il vous faudra donc le repertoire release, et les fichier setup.exe et setup.ini.

Apres un certain nombre de CD perdus (annonce: donne CD de Cygwin inutilisables pour utilisation en dessous de verres...), je pense que la bonne configuration a utiliser durant la gravure contient les options suivantes:

  • extensions joliet (et rock-ridge)
  • multiple . dans le noms des fichiers
  • noms longs (31 chars)
  • generation des fichiers TRANS.TBL (a vérifier, c'est plus une incantation magique qu'une certitude).

4 - Utilisation

4.1 - Premiers contacts

Si vous avez slectionné la génération des racourcis sur le bureau, et dans le menu Démarrer, vous pouvez lancer un shell bash via le racourcis Cygwin qui se trouve sur le bureau, ou en passant par le menu Démarrer. Sinon, sous C:\cygwin (a remplacer par l'emplacement de l'installation de Cygwin si vous avez modifié la valeur par defaut), se trouve un fichier cygwin.bat que vous pouvez utiliser pour lancer un shell (les racourcis pointent vers ce fichier).

Lors de l'installation Cygwin a créé un fichier /etc/passwd a partir des informations fournies par windows concernant les utilisateurs declarés. Dans certains cas, ce fichier n'est pas correct, par exemple si l'installation s'est faite alors que l'ordinateur n'était pas connecté au reseau. En effet dans ce cas il n'est pas possible de contacter le controleur de domaine windows. Dans ce cas, cous pouvez modifier le fichier /etc/passwd a la main, ou utiliser l'utilitaire mkpasswd (avec les options -d -l) afin de re-créer un fichier passwd. L'utilitaire mkgroups permet de créer un fichier /etc/groups.

Une fois lancé, une fenetre de type DOS s'ouvre, et vous voila avec un shell bash. Allez-y, si, si, essayez, un petit ls pour commencer; Vous verrez, c'est comme a la maison...

Se trouvent sous /cygdrive montes les lecteurs windows et la racine /, est en fait le repertoire ou vous avez installe Cygwin (C:\cygwin par defaut).

5 - Bon, et X11 alors

La cerise sur le gateau, X11 (XFree86, les libs et tout le merdier) est porté sur Cygwin. Dès lors, grace a cela, votre PC windows devient un terminal X qui vous permet d'afficher des applications fonctionnant sur un serveur Linux 'le remote display standard), grace a XDMCP, vous pouvez aussi vous connecter a une machine Linux (ou UNIX commercial, tel que Solaris), et il est aussi possible de compiler et utiliser des applications X11 locales.

Dans tous les cas décris dans les sections suivantes, vous aurez dans la barre de tache windows un joli X qui vous affichera un beau menu lorsque vous clicquez dessus. Ce menu permet entre autre de stopper le serveur X11. Le serveur X11 peut aussi etre arrété par la combinaison de touches control-halt-backspace (attention, pas de control-halt-delete) ou control-F4.

5.1 - Affichage déporté

Ici pas de grande difficultées, il s agit de faire afficher une application tournant sur un serveur Linux sur l'ecran de votre machine windows. Pour cela il faut demarrer un serveur X11 sur la machine windows (dans un shell cygwin, taper XWin, par exemple), puis de lancer l'application sur le serveur Linux avec comme affichage la machine windows: xterm -display 192.168.0.2:0

Remplacer l'adresse IP (192.168.0.2) de ma machine de test par l'adresse IP de votre machine windows.

Bon, c est la version courte, car il faudra s'occuper des autorisations X11, et peut-etre d'un gestionnaire de fenetres: c'est a dire, soit lancer XWin avec l'option -ac (supprime les authorisations X11, accepte toutes les connections), soit utiliser xhost +gotham pour authoriser la machine gotham a exporter de l'affichage sur gattaca.

5.2 - Connection distante

Le but ici, est de se connecter a une machine distante et de n'utiliser presque que l'écran de la machine windows (il faut quand meme un peu de CPU pour le serveur X11). Sur la machine distante il faut accepter les connections XDMCP, sur la machine windows, il suffit donc (a partir d'un shell Cygwin) de lancer un serveur X11 avec la commande:

XWin -query 192.168.0.1

Ou vous remplacerez 192.168.0.1 par le nom ou l'adresse IP de la machine a laquelle vous souhaitez vous connecter. Si vous n'avez rien oublié (et si votre karma est bon), vous devriez voir une fenetre de connection s'afficher. Vous pouvez utiliser le script /usr/X11R6/bin/startxdmcp.bat (apres l'avoir modifié) pour lancer ce type de connection.

Attention: verifiez vos pare-feu! En effet tout passe par le reseau sur les ports 177 et 6000 (par defaut, si vous ne gerez qu'un ecran). Il vous faudra donc parametrer ou desactiver les pare-feu sur la machine windows et sur le serveur.

Sur le serveur (gohtam, 192.168.0.1), si vous utilisez le gestionnaire de connection XDM, il vous faudra modifier, le fichier /etc/X11/xdm/xdm-config et commenter la ligne

DisplayManager.requestPort: 0

ou la remplacer par:

DisplayManager.requestPort: 177

Les demandes de connections XDMCP utilisant ce port. Il faudra aussi modifier le fichier /etc/X11/xdm/Xaccess afin d'autoriser la machine client (gattaca) a se connecter. Pour cela basez vous sur les commentaires du fichier, ils sont tres clairs.

Si vous utilisez GDM (display manager GNOME), il faudra modifier le fichier /etc/X11/gdm/gdm.conf et dans la section [xdmcp] verifier que la ligne

Enable=true

est présente. Modifiez aussi la section [chooser] (les variables Hosts et Broadcast) si vous souhaitez relayer les requetes vers d'autres serveurs (voir la doc XDMCP/X11).

5.3 - Tout local

Vous pouvez aussi demarrer Cygwin et lancer, comme sur une machine Linux startx afin de lancer une session X11. Dans ce cas, le fichier '.xinitrc'qui se trouve dans votre repertoire de connection sera executé. Dans ce fichier vous pouvez démarrer un gestionnaire de fenetres (windowmaker, fvwm,...) par example.

Par defaut, le seveur X11 ouvre une fenetre windows qui prend tout l'ecran, et fait fonctionner le gestionnaire de fenetres dans cet espace. Il est cependant possible de rendre le fond transparent et d'obtenir une gestion des fenetre X11 par windowmaker au milieu de votre bureau windows.

5.4 - Le mode 'rootless'

Le mode rootless du serveur X11 permet de se passer de la fenetre windows de fond representant le fond d'ecran X11 (background window). Pour activer ce mode, il suffit d'utiliser l'option -rootless sur la ligne de commande lancant le serveur X11 (XWin -rootless).

Dans ce mode, les fenetres X11 et les menus se supperposent au bureau windows. Attention, X11 gère ses fenetres mais en dehors windows règne. En, clair il devient impossible d'accéder au menu du gestionnaire de fenetres en cliquant entre les fenetres, car vous vous trouvez en territoire windows, c'est donc le menu windows qui s'affiche. Pour windowmaker, la touche F12 (a vérifier) vous sauvera et fera s'afficher le menu.

Mais, bon, c'est beau et ca fait vrai geek!

5.5 - Le mode 'multiwindow'

Le truc fun avec Cygwin! Le mode multiwindow permet d'avoir un serveur X11 qui se comporte un peu comme si il etait plusieurs, un par fenetre. Dans ce mode, pas de gestionnaire de fenetres, c'est windows qui s'en occupe (le pied, windows réduit au role de window manager sous la direction d'un serveur X11 libre!), et vos fenetres et applis X11/UNIX qui s'affichent tout naturellement sur votre bureau comme n'importe quelle autre application windows.

Pour accéder a ce niveau superieur de maitrise, il suffit, dans une fenetre Cygwin de demarrer le serveur X11 par: XWin -mutiwindow (en arriere plan). Un petit X devrait se manifester dans la barre de taches windows (en cliquant dessus vous pouvez faire afficher la fenetre de fond, ou arreter le serveur).

Ensuite il vous suffit de lancer vos applications (xterm, ...) avec l'option -display 127.0.0.1:0 pour les voir s'afficher.

5.6 - Lancer un xterm depuis le menu 'Demarrer'

Le truc suppreme pour impressioner, faire geek version guru: lancer un xterm en passant par le menu Demarrer de windows.

Pour cela il existe un utilitaire (faisant partie du package cygutils) qui se nomme mkshortcut. Pour tous les détails, je vous laisse consulter le manuel, mais il permet de créer un raccourcis windows (fichier de type .lnk) vers un programme. Il devient donc possible de lancer X11 au demarrage de windows, mais aussi de lancer des programmes tels que xterm a partir du menu Démarrer.

Il vous faudra quand meme régler quelques problemes de chemin d'accès aux bibliothèques X. Je n'en dit pas plus, ce document a beau etre sous GNU FDL, l'acces a certains renseignements reste payant (une biere fera l'affaire). Bon allez, je vous fais crédit, sur un windows 9X, dans le fichier autoexec.bat vous pouvez ajouter a la variable PATH les chemins necessaires menants aux bibliothèques cygwin et X11. Pour cela ajoutez la ligne:

PATH=%PATH%;C:\cygwin\bin;C:\cygwin\usr\bin;C:\cygwin\usr\X11R6\bin;C:\cygwin\usr\X11R6_lib;

Le dernier truc a savoir concerne l'horrible fenetre DOS qui s'ouvre a chaque fois que vous lancer un programme a partir du menu 'Démarrer': il existe, toujours dans le package cygutils un utilitaire run.exe qui permet de lancer n'importe quoi (ou presque) sans passer par cete fenetre DOS. Le premier parametre de cette commande est le nom (chemin relatif ou absolu) de la commande a éxécuter, les autres parametres sont passés tel quel a la commande (parametre premier, essayez de suivre un peu!).

Bon pour résumer, pour ajouter une entrée pour Xterm dans le menu Démarrer, tapez:

mkshortcut -n "Xterm" -A -P -a "/usr/X11R6/bin/xterm.exe -display 127.0.0.1" /usr/X11R6/bin/run.exe

6 - Comment en rajouter

Bon, c'est bien, mais il vous manque une application (non pas Emacs, il y est déja). pas de probleme, vous pouvez la compiler! La distribution de cygwin contient GCC (et tous ces amis). Pour vérifier que je n'écrivais pas de conneries, je l'ai fait. J'ai donc compilé glib, gtk+ et geg (un soft en Gtk+ qui permet d'afficher des courbes a partir de leurs fonction mathématiques). Vous pouvez d'ailleurs voir geg en action sur les copies d'écran fournies a la fin de ce document (avec de beaux sinus et cosinus).

Bon, c'est dommage mais il n'y a rien de spécial a raconter, vous devez récuperer les sources de ce que vous voulez compiler, lancer le configure (comme d'habitude) puis le make et laisser faire.

Pour glib j'ai été obligé de mettre les mains dans le code, la premiere passe se terminant sur une erreur (et hop, une seconde biere pour obtenir le renseignement).

En savoir plus...

  • Le site principal de Cygwin (anglais)
  • Le site Cygwin+XFree (anglais)
  • http://cygnome.sourceforge.net/
  • http://cygnome.sourceforge.net/steven.obrien/

  • Powered by Plone, the Open Source Content Management System

    This site conforms to the following standards: