Wine : Windows comme si vous y étiez !

avec l'écran bleu en moins

Il vous reste encore quelques programmes Windows dont vous ne pouvez pas vous passer, mais vous n'avez pas envie de "rebooter votre Linux" chaque fois que vous avez à vous en servir ? Si vous êtes dans ce cas, Wine est fait pour vous!

Wine (Pour 'WINdows Emulator' ou 'Wine Is Not an Emulator') est un projet qui a démarré en 1993 dans le but de faire fonctionner les exécutables Windows sur les systèmes UNIX tournant sur PC (sont actuellement supportés Linux, FreeBSD, NetBSD, OpenBSD et Solaris x86). Actuellement, le code source de Wine, disponible sous une licence similaire à la licence BSD, est constitué d'environ 360000 lignes de code.

Celui-ci contient non seulement l'émulateur lui-même, mais réimplémente également la plupart des DLL de Windows (comctl32, comdlg32, shell32, etc.) ce qui permet deux types de configuration :

Soit vous avez Windows installé sur votre machine et Wine utilisera les DLL d'origine de Windows; soit vous n'avez pas Windows et Wine utilisera sa propre implémentation des DLL. Cependant, un certain nombre de programmes ne fonctionneront pas dans ce cas, car la réimplémentation des bibliothèques de Windows n'est pas encore très complète. Réimplémenter toutes ces fonctionnalités est un travail long et fastidieux du fait que très peu de documentation existe sur le fonctionnement interne de Windows, ce qui oblige les développeurs de Wine à procéder par tâtonnements pour découvrir les API cachées de Windows.

Jusqu'à il y a de cela quelques mois, WINE ne permettait que de faire tourner des exécutables Win16 ou Win32. Cependant, depuis Novembre 1998, WINE supporte également les programmes MS-DOS.

Le développement de Wine était jusqu'à présent très lent du fait du manque de documentation sur le fonctionnement interne de Windows. D'autre part, peu de personnes travaillaient sur ce projet.

Avec le récent support de la part de Corel, qui compte utiliser Wine pour faciliter le portage de certaines de ces applications Windows sous Linux, son développement s'est accéléré et l'émulateur permet maintenant de faire fonctionner un assez grand nombre d'applications Windows ; aussi bien Win16 (Windows 3.1) que Win32 (Windows 95/98/NT).

Wine peut être utilisé de 2 manières différentes : soit en tant qu'émulateur, soit en temps que bibliothèque pour compiler du code source Win32 sous Linux.

Utilisé en tant que bibliothèque, Wine fournit un ensemble de fichiers d'entête, un compilateur de ressources et une bibliothèque dynamique qui permettent de compiler du code source Win32 et d'obtenir un exécutable Linux natif. Actuellement, seul le code C est supporté ; le C++ devrait l'être d'ici quelques mois.

Utilisé en tant qu'émulateur, la syntaxe est la suivante :

wine [options] programme.exe

wine reconnaît beaucoup d'options sur sa ligne de commande (la liste complète est disponible dans la page de manuel de wine); cependant les options les plus utiles sont :

- managed : les fenêtres de 1er niveau ouvertes sont gérées par le gestionnaire de fenêtres plutôt que par Wine lui-même.

- winver version (où version=win31 ou win95 ou nt351 ou nt40) : spécifie quelle version de Windows Wine doit émuler.

- dosver x.xx (version du DOS a émuler (par exemple: 6.22). cette option n'est valide que si l'on a choisi d'émuler Windows 3.1.

Cependant, avant de pouvoir utiliser Wine, vous devrez configurer le fichier /etc/wine.conf (ou ~/.winerc) en fonction de votre installation. Ce fichier de configuration reprend d'assez près la syntaxe des fichiers ".ini" de Windows. Ce fichier doit contenir une section pour chacun des lecteurs qui seront disponibles pour les programmes tournant sur l'émulateur. Une section wine contient les paramètres généraux : emplacement de Windows sur votre disque dur, définition des PATH et répertoires temporaires, etc.

La section Tweak.Layout permet de définir le "look" des applications: soit Windows 3.1, soit Windows 95. Notons au passage qu'il est tout à fait possible d'émuler Windows 95 mais en demandant à utiliser le "look" de Windows 3.1 ou vice-versa.

Voici un exemple de ce que devra contenir votre fichier de configuration de Wine :

; Fichier /etc/wine.conf

; La partition Windows qui est montée sur /dos

[Drive C]

Path=/dos

Type=hd

Label=MS-DOS

Filesystem=msdos

; Créer un disque virtuel H: qui correspond au réper ; toire

; personnel de l'utilisateur

[Drive H]

Path=${HOME}

Type=hd

Label=Home

Filesystem=unix

[Drive T]

Path=/tmp

Type=hd

Label=Tmp Drive

[wine]

Windows=c:\windows

System=c:\windows\system

Temp=t:\

Path=c:\windows;c:\windows\system;e:\;f:\

SymbolTableFile=/usr/X11R6/lib/wine.sym

[Tweak.Layout]

;(Les styles possibles sont 'Win31'(default), ;'Win95', 'Win98')

WineLook=Win95

; Fin du fichier wine.conf

Attention : Il est important que le répertoire correspondant à C:\WINDOWS\SYSTEM\ (qui correspond au répertoire Linux /dos/windows/system dans le cas de notre fichier d'exemple) existe. Si vous n'avez pas Windows installé sur votre machine, il vous suffira de créer un répertoire vide. De même, le fichier C:\WINDOWS\WIN.INI doit exister (mais peut être vide).

Parmi les différences notables entre les modes fonctionnement de Wine et de Windows, la gestion de la "registry" par Wine est particulièrement intéressante: Wine utilise la registry "standard" stockée dans les fichiers Windows. Mais, si des modifications doivent y être faites, elles sont enregistrées dans les fichiers ~/.wine/user.reg et ~/.wine/system.reg.

Conséquence : tous les utilisateurs peuvent utiliser des applications Windows simultanément et chacun conserve ses paramètres et changements dans son répertoire personnel, même s'il s'agit d'applications Windows 3.1 (Vous voyez bien que Windows est un système multi-utilisateurs et multi-tâches finalement; il suffit juste de s'en servir à partir de Linux ).

Si vous avez décidé d'installer Wine sur votre machine, vous pouvez soit l'installer à partir d'une archive RPM ou .deb (en fonction de votre distribution) soit le compiler vous-même à partir des sources. Wine utilisant GNU autoconf, il vous suffira de taper './configure && make && make install' pour l'installer.

Attention cependant : un certain nombre de "grosses" applications (comme celles qui composent Office 97 par exemple) marchent encore très mal, voire pas du tout sous Wine du fait qu'un certain nombre de fonctions de Windows n'ont pas encore été implémentées sous Wine. Une nouvelle version de Wine sort tous les 15 jours. Bien que la qualité s'améliore généralement de version en version, il arrive cependant que certaines versions marchent assez mal (un peu comme les kernels de développement pour Linux). Par conséquent, vérifiez bien que vos applications marchent toujours avec la nouvelle version de Wine avant d'écraser la version précédente de votre disque. Wine étant encore en phase de béta-test, les numéros des versions font pour le moment référence à la date de sortie; par exemple la version la plus récente au moment où cet article est écrit est la "990131" grâce à laquelle ont été prises les captures d'écran, qui, sauf erreur, devraient illustrer cet article.

Notons enfin que parmi les 140 noms cités dans le fichier CREDITS de Wine, un certain nombre ne sont pas inconnus, pour n'en citer que quelques-uns : Linus Torvalds (inutile de le présenter ;), Miguel de Icaza (auteur de Midnight Commander et leader du projet GNOME), Peter Mac Donald (créateur de la distribution SLS), Gordon Chaffee (auteur de l'implémentation du système de fichiers FAT pour Linux), ...

Vincent Renardias <vincent@pipo.com>

 

Références

Site principal pour le développement de Wine.

http://www.winehq.com/

Beaucoup d'informations destinées aux développeurs.

comp.emulators.ms-windows.wine

Newsgroup Wine.

http://www.debian.org/Packages/unstable/other osfs/wine.html -

Lien sur la dernière version de Wine en paquet Debian.

http://www.qbc.clic.net/~krynos/wine_en.html

Dernière version de Wine en paquet RPM.

ftp://metalab.unc.edu/pub/Linux/ALPHA/wi ne/development/

Site FTP principal ; pour ceux qui sont intéressés par le code source.


© Copyright 2000 Diamond Editions/Linux magazine France. - Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1or any later version published by the Free Software Foundation; A copy of the license is included in the section entitled "GNU Free Documentation License".