Windows-Programme unter Linux

Aus LinuxUser 10/2000

Windows-Programme unter Linux

Red, Red Wine

Stellen Sie sich vor, Windows-Programme könnten auf jedem Linux-System benutzt werden. Und zwar ohne dass dazu ein schwerfälliger Emulator benötigt wird und ohne die Notwendigkeit, eine Lizenz für ein Windows-Betriebssystem zu besitzen. Einfach so, genauso schnell und bequem wie jedes andere Linux-Programm.

Das geht nicht, sagen Sie? Stimmt in vielen Fällen leider noch. Dass kann nicht gehen? Stimmt nicht! Das Wine-Projekt hat sich nämlich genau dies zur Aufgabe gemacht. In den letzten Jahren haben die Entwickler von Wine große Fortschritte gemacht, so dass schon heute viele Windows-Programme mit Wine unter Linux eingesetzt werden können. In diesem Artikel erfahren Sie, was Wine eigentlich ist, wie es funktioniert und wie Sie Wine auf Ihrem System einrichten können, um Windows-Programme zu benutzen.

Abbildung 1: Praktisch bei der Entwicklung von Web-Seiten. Die beiden Kontrahenten Netscape und Internet Explorer nebeneinander. Wine macht´s möglich

Abbildung 1: Praktisch bei der Entwicklung von Web-Seiten. Die beiden Kontrahenten Netscape und Internet Explorer nebeneinander. Wine macht´s möglich

EXE – was soll das?

Die Tatsache, dass jeder i386-kompatible Prozessor Windows-Programme ausführen kann, reicht für sich genommen noch nicht aus, um solche Programme auch unter Linux/Intel tatsächlich starten zu können. Es wird nämlich noch etwas benötigt, das die auszuführenden Programme von der Festplatte in den Arbeitsspeicher lädt und sie dann zur Ausführung bringt. Diese Aufgabe übernimmt der sogenannte Programmloader. Wenn Sie Windows-Programme unter Windows starten, etwa indem Sie ein Programm im Startmenü auswählen, wird diese Funktion vom Windows-Betriebssystem übernommen. Linux hat selbstverständlich eine ähnliche Funktionalität, mit der native Linux-Programme geladen werden können, z. B. wenn Sie eine Applikation im KDE-Menü, von der Shell aus oder im GNOME-Panel aufrufen. Versucht der Benutzer, ein Programm zu starten, prüft das jeweilige Betriebssystem zunächst, ob die entsprechende Programmdatei auf der Festplatte in dem richtigen Dateiformat vorliegt. So wie Netscape keine StarOffice-Dateien darstellen kann, kann Linux von sich aus nämlich keine Windows-Programme laden. Wird nun festgestellt, dass die auszuführende Datei ein unbekanntes Format besitzt, bricht das Betriebssystem ab und gibt eine Fehlermeldung aus. Um Windows-Programme unter Linux zu starten, wird also ein Loader benötigt, der die Programme in den Arbeitsspeicher lädt und dann zur Ausführung bringt.

Welche API verwendest Du?

Und dann gibt es noch ein zweites Problem: Jedes Betriebssystem stellt bestimmte Funktionen zur Verfügung, die von Programmen benutzt werden, um beispielsweise Dateien zu öffnen oder Daten aus dem Internet zu empfangen. Diese Schnittstellen bezeichnet man als das API des Betriebssystems. Die Art, wie diese Schnittstellen benutzt werden, unterscheiden sich zwischen Windows und Linux. Wie APIs unter Windows benutzt werden, lässt sich am besten an einem Beispiel erklären: Um eine Datei zu öffnen oder zu erzeugen, verwendet man dort das API CreateFile(). Dabei handelt es sich um eine Funktion, die sich in einer Programmbibliothek befindet. Ein Windows-Programm, das diese Funktion benutzen möchte, muss nun die entsprechende Programmbibliothek (in diesem Fall ist das die Bibliothek KERNEL32.DLL) laden. Dabei wird der Funktionsaufruf des Programms mit der Funktion in der Bibliothek verbunden. Wenn die Funktion CreateFile() dann aufgerufen wird, wird die Kontrolle an die Bibliothek übergeben. Abhängig davon, um welche Version von Windows es sich handelt (Windows NT oder Windows 95/98), können schließlich von der Bibliothek aus ganz unterschiedliche weitere Funktionen aufgerufen werden, um die gewünschte Operation (also das Öffnen oder Erstellen einer Datei) auszuführen.

Jetzt verstehe ich Dich!

Wenn man nun ein Windows-Programm unter Linux “einfach so” in den Arbeitsspeicher laden und ausführen würde, würde das Programm in den meisten Fällen also daran scheitern, dass Funktionen wie CreateFile() nicht zur Verfügung stehen (der Linux-Kernel stellt an Stelle dessen eine ähnliche Funktion zur Verfügung, die open() heißt, aber völlig anders aufgerufen wird). Wie lässt sich dieses Problem lösen? Sie haben es wahrscheinlich schon erraten: Es müssen die erforderlichen Programmbibliotheken nachgeschrieben werden. Diese können dann, so wie es unter Windows geschieht, mit dem auszuführenden Programm verbunden werden. Ruft das Programm dann unter Linux beispielsweise das CreateFile()-API auf, dann kann die nachgeschriebene Bibliothek die entsprechenden Linux-Systemaufrufe durchführen und das Ergebnis so aufbereiten, wie es von dem Windows-Programm erwartet wird.

Abbildung 2: Windows-Programme unter Wine und Windows NT im Vergleich

Abbildung 2: Windows-Programme unter Wine und Windows NT im Vergleich

Schichtarbeit

Daraus ergibt sich prinzipiell kein Nachteil gegenüber dem “echten” Windows. Um bei dem Beispiel CreateFile() zu bleiben, müssen unter DOS-basierten Windows-Versionen, wie Windows 95/98, von CreateFile() aus unter Umständen DOS-Routinen aufgerufen werden, um eine Datei tatsächlich zu öffnen. Unter Windows NT oder Windows 2000 wird anstelle dessen von CreateFile() aus das entsprechende NT-API (hier NtCreateFile()) aufgerufen. Genauso wie unter Linux mit Wine werden also auch unter dem “echten” Windows immer mehrere Schichten durchlaufen.

Sicherer als das Original

Was genau stellt nun Wine zur Verfügung? Zum einen den angesprochenen Programmloader für Windows-Programme. Mit ihm lassen sich 32-Bit- und 16-Bit-Windows-Programme, aber auch DOS-Programme in den Arbeitsspeicher laden und zur Ausführung bringen. Der größte Teil von Wine besteht jedoch aus Programmcode, der die von DOS- und Windows-Programmen erwarteten APIs zur Verfügung stellt. Diese befinden sich wie unter Windows in speziellen Bibliotheken, welche vom Loader oder während der Laufzeit mit dem auszuführenden Windows-Programm verbunden werden, so dass es genau die gleiche Funktionalität vorfindet, wie unter Windows.

Aus der Sicht des Linux-Kernels ist Wine ein gewöhnliches Linux-Programm, das nicht einmal besondere Rechte benötigt, um ausgeführt zu werden. Windows-Programme können mit Wine also sicherer ausgeführt werden als beispielsweise unter Windows 98, wo jedes Programm mit den Rechten zum vollständigen Zugriff auf den gesamten Rechner und alle Dateien ausgeführt wird. Die Abkürzung Wine steht übrigens in erster Linie für “Wine is not an Emulator”. Damit soll ausgedrückt werden, dass Wine keinen Windows-Rechner emuliert, sondern Windows-Programme genauso direkt, wie es unter Windows der Fall ist, ausführt. Trotzdem bedeutet Wine auch Windows-Emulator, schließlich kann man die Bereitstellung des Windows-APIs auch als Emulation bezeichnen, das Wort Neu-Implementierung wäre allerdings angebrachter.

Rasante Entwicklung

Bevor es mit der Installation und Konfiguration von Wine losgeht, noch ein Wort zu dem aktuellen Entwicklungsstand von Wine: Das Projekt befindet sich derzeit noch im Alpha-Stadium, also mitten in der Entwicklung. Viele Windows-Programme laufen zwar schon recht stabil mit Wine, viele andere zur Zeit aber leider noch überhaupt nicht. Weil an Wine sehr intensiv gearbeitet wird, kann es auch immer mal passieren, dass ein Programm, welches normalerweise gut mit Wine funktioniert, mit einer neueren Ausgabe nicht mehr läuft. In solchen Fällen kann es sich lohnen, einen Bug-Report an die Wine-Newsgroup im Internet zu schicken und die nächste Version des Programm-Pakets abzuwarten.

Abbildung 3: Noch verbesserungsbedürftig: Der Explorer von Windows 95 im Fenster

Abbildung 3: Noch verbesserungsbedürftig: Der Explorer von Windows 95 im Fenster

Installation

In fast allen Linux-Distributionen sind heute Wine-Pakete enthalten, die über das Paketverwaltungsprogramm der Distribution installiert werden können. Aufgrund der schnellen Entwicklung von Wine sind diese Pakete jedoch meist schon mit dem Erscheinen der Distribution veraltet. Es lohnt sich also, ein aktuelles Wine-Paket aus dem Internet herunterzuladen und dieses zu installieren. Hier besteht entweder die Möglichkeit, ein Binärpaket im RPM- oder Debian-Format zu installieren oder gleich den Wine-Quellcode zu verwenden und diesen auf dem eigenen System zu kompilieren. Das hört sich zunächst komplizierter an als es ist. Die Kompilation auf dem eigenen Rechner bietet den Vorteil, dass das dabei entstehende Wine-Programm genau auf die Software des eigenen Rechners abgestimmt ist. Dabei wird nämlich zuerst genau geprüft, welche Komponenten auf dem System vorhanden sind. Wine kann dann Eigenschaften enthalten, welche diese Komponenten benutzen. So funktioniert die OpenGL-Komponente von Wine nur dann, wenn auf dem System eine OpenGL-Bibliothek mit bestimmten Eigenschaften vorhanden ist. Falls Sie nun ein Binärpaket verwenden, das eine Version von Wine enthält, die für die Unterstützung einer bestimmten OpenGL-Version kompiliert worden ist, die erforderliche OpenGL-Bibliothek aber gar nicht auf Ihrem System installiert ist, dann kann das dazu führen, dass Wine nicht funktionsfähig ist. Anders herum können Sie die OpenGL-Funktionalität nicht nutzen, falls Ihre Wine-Version nicht für die Verwendung von OpenGL übersetzt wurde, sich aber eigentlich eine OpenGL-Bibliothek in Ihrem System befindet. Um eine aktuelle und funktionsfähige Version von Wine zu benutzen, wird deswegen ausdrücklich empfohlen, ein Quellcode-Paket zu verwenden und dieses selbst zu kompilieren.

Softwarevoraussetzungen

Um Wine kompilieren und hinterher einsetzen zu können, ist es erforderlich, dass bestimmte Programme und Dateien auf dem System installiert sind, die zwar alle Bestandteil moderner Distributionen sind, aber deswegen nicht unbedingt auch installiert sein müssen. Damit es während der Kompilation zu keinen Problemen kommt, sollten Sie prüfen, ob die folgenden Komponenten auf Ihrem System vorhanden sind:

  • Linux-Kernel der Versionsfamilie 2.2.x. Wine funktioniert auch mit älteren Kernels der Versionsfamilie 2.0.x. Allerdings kommt es bei diesen Kernels zu Problemen, wenn 32Bit-Programme mit mehreren Threads ausgeführt werden.
  • Die GNU C-Laufzeitbibliothek. Empfohlen wird hier die Version 2.1. Sie können Wine jedoch auch mit der älteren Version 2.0 verwenden. Nicht empfohlen wird die Verwendung der mittlerweile veralteten C-Bibliothek libc5. Neben der eigentlichen Bibliothek, die auf jedem Linux-System installiert ist, benötigen Sie die Entwicklerdateien dazu. Diese Dateien sind unter Debian 2.2 im Paket libc6-dev und unter Suse 7.0 im Paket libc (Serie d) enthalten. Unter Suse müssen zusätzlich noch die Header-Dateien des Kernels installiert werden, sie befinden sich im Paket linclude, Serie d.
  • Wine verwendet normalerweise das X Window System zur Darstellung von Fenstern auf dem Bildschirm. X muss deswegen installiert sein. Desweiteren benötigen Sie die X-Entwicklerdateien (Debian: Paket xlib6g-dev, Suse: Paket xdevel, Serie x)
  • Desweiteren wird die X Pixmap-Bibliothek (libxpm) benötigt. Unter Debian müssen Sie deswegen die Pakete xpm4g und xpm4g-dev installieren. Unter Suse sind die entsprechenden Dateien in den Paketen shlibs und xdevel enthalten.
  • Damit Wine kompiliert werden kann, wird natürlich ein Compiler benötigt. Mindestanforderung ist hier der GNU C-Compiler, Version 2.7.2, empfohlen wird die aktuelle Version 2.95. Diesen Compiler finden Sie sowohl unter Debian als auch unter Suse im Paket gcc.
  • Darüberhinaus benötigen Sie einige Hilfswerkzeuge wie make, bison und flex, die unter Debian und Suse in Paketen mit den entsprechenden Namen enthalten sind.
  • Wine kann optional einige weitere Bibliotheken verwenden. Dazu gehören vor allem die ncurses-Bibliothek (Debian: Pakete libncurses5 und libncurses5-dev. Suse: ncurses, Serie a) und OpenGL-Bibliotheken. Entwicklerdateien für OpenGL finden Sie unter Debian im Paket mesag-dev und unter Suse im Paket mesadev (Serie x3d). Beachten Sie bitte, dass Sie außerdem entweder eine OpenGL-Grafikkarte und einen X-Server mit OpenGL-Unterstützung für Ihre Karte oder die (langsame) Software-OpenGL-Implementierung Mesa (Debian: mesag3. Suse: mesa und mesasoft, Serie x3d) benötigen.

Beschaffung und Installation des Quellcodes

Der jeweils aktuelle Wine-Quellcode kann von einer der folgenden Adressen aus dem Internet heruntergeladen werden:

Sie finden in den jeweiligen Verzeichnissen komprimierte Tar-Archive, die sich aus der Bezeichnung Wine-, dem Datum an dem die jeweilige Version herausgegeben wurde und der Endung .tar.gz zusammensetzen. So enthält die Datei Wine-20000821.tar.gz also beispielsweise den Wine-Quellcode in der Version vom 21. August 2000. Normalerweise sollten Sie die jeweils neueste Version verwenden. Nachdem Sie das Tar-Archiv heruntergeladen und in Ihrem Heimatverzeichnis gespeichert haben, können Sie es mit dem folgenden Befehl entpacken:

$ tar -xvzf Wine-20000821.tar.gz

Selbstverständlich müssen Sie die Bezeichnung des Dateinamens (hier Wine-20000821.tar.gz) anpassen, wenn Sie eine andere Version benutzen.

Kompilation und Installation von Wine

Sobald das Archiv entpackt ist, kann der Quellcode kompiliert und Wine daraufhin installiert werden. Dazu ist zunächst in das Verzeichnis zu wechseln, in das Wine entpackt wurde. Der Name dieses Verzeichnisses setzt sich aus der Zeichenkette wine- und dem Datum der Wine-Version zusammen, es heißt also beispielsweise wine-20000821.

$ cd wine-20000821

Geben Sie dann diesen Befehl ein, um den Quellcode für Ihr System zu konfigurieren:

$ ./configure

Wenn alles gut geht, erscheint nach einer Reihe von Meldungen der folgende Text:

Configure finished.  Do 'make depend && make' to compile Wine.

Sollte dies nicht der Fall sein, liegt das wahrscheinlich daran, dass bestimmte Dateien nicht gefunden worden sind, und es sollte eine entsprechende Fehlermeldung ausgegeben worden sein. Sie müssen dann die fehlenden Pakete nachinstallieren. Ansonsten können Sie der Anweisung folgen und diesen Befehl eingeben:

$ make depend && make

Tipp: Wenn Sie wenig Festplattenplatz zur Verfügung haben und Wine lediglich verwenden, aber nicht debuggen möchten, können Sie auf die Debug-Informationen in den beim Kompilieren erzeugten Binärdateien verzichten. Verwenden Sie dann diesen Befehl, um den Code zu übersetzen:

$ make depend && make CFLAGS=-O2

Nun kann das Programm installiert werden, damit es von allen Benutzern des Systems eingesetzt werden kann. Dies muss selbstverständlich mit den Rechten des Administrators geschehen. Wechseln Sie also ggf. mi

$ su

und anschließender Eingabe des Superuser-Passworts nach root und installieren Sie das selbstkompilierte Wine mi

# make install

Wenn Sie Wine nicht systemweit zur Verfügung stellen wollen, können Sie auf diesen Schritt auch verzichten.

Konfiguration

Die Konfiguration von Wine ist im Vergleich zu anderen Softwarepaketen relativ aufwendig. Das liegt vor allem daran, dass Windows-Programme eine bestimmte Infrastruktur erwarten, die auf einem Windows-System natürlich vorhanden ist, unter Linux jedoch erst erzeugt werden muss. Beispielsweise werden Konfigurationsdaten und andere Informationen unter Windows in der sogenannten Registry abgelegt, die von Wine natürlich auch zur Verfügung gestellt werden muss. Ein wesentlicher Unterschied zwischen Unix/Linux und Windows besteht außerdem darin, dass unter Windows zur Bezeichnung von Dateien Laufwerksbuchstaben verwendet werden. Wenn ein Windows-Programm nun beispielsweise die Datei C:\Eigene Dateien\Brief.doc öffnen möchte, muss Wine diesen Dateinamen in einen gültigen Linux-Dateinamen übersetzen und die entsprechende Datei öffnen. Dazu wird eine Konfigurationsdatei benutzt, in der unter anderem Windows-Laufwerksbuchstaben Verzeichnissen unter Linux zugeordnet werden. So könnte beispielsweise das Laufwerk C: dem Verzeichnis /c zugeordnet sein, so dass durch den Zugriff auf C:\Eigene Dateien\Brief.doc die Datei /c/Eigene Dateien/Brief.doc geöffnet wird.

Abbildung 5: Mit Wine gibt es auch die Registry für Linux, die natürlich mit den Windows-Tools bearbeitet werden kann

Abbildung 5: Mit Wine gibt es auch die Registry für Linux, die natürlich mit den Windows-Tools bearbeitet werden kann

Sie haben die Wahl!

Es gibt grundsätzlich zwei unterschiedliche Methoden, Wine zu konfigurieren: Mit und ohne eine bestehende Windows-Installation. Wenn auf Ihrem Rechner Windows installiert ist (beispielsweise in einer Dual-Boot-Konfiguration) kann Wine diese Installation mitbenutzen. Es werden dann alle Einstellungen und Dateien aus dieser bestehenden Windows-Installation übernommen. Das hat den Vorteil, dass man unter Windows installierte Programme unter Linux mit Wine ausführen kann, ohne sie dafür unter Linux extra neu installieren zu müssen. Außerdem kann Wine dann eine Reihe von Bibliotheken der Windows-Installation verwenden. Weil nämlich momentan noch eine Reihe der von Wine zur Verfügung gestellten Windows-Bibliotheken unvollständig sind, laufen viele Windows-Programme unter Wine besser, wenn die “echten” Bibliotheken benutzt werden. Es besteht übrigens keine Gefahr, dass Wine etwas an Ihrer Windows-Installation verändert. Änderungen an der Registry oder an INI-Dateien, die mit Wine vorgenommen werden, werden nämlich im Heimatverzeichnis des betreffenden Benutzers und nicht in der Windows-Installation gespeichert. Nur wenn Sie Programme mit Wine installieren und dabei Dateien der Windows-Installation überschrieben werden, kann das zu Inkonsistenzen führen.

Mit Windows…

Natürlich muss die Partition mit der Windows-Installation unter Linux verfügbar sein, damit Wine auf sie zugreifen kann. Falls dies auf Ihrem System noch nicht der Fall ist, sollten Sie einen entsprechenden Eintrag in der Datei /etc/fstab vornehmen. Angenommen, Ihre Windows-Installation befindet sich auf der ersten primären Partition Ihrer ersten IDE-Festplatte und sie soll in das Verzeichnis /c eingebunden werden, dann wäre zunächst das Verzeichnis /c anzulegen mi

# mkdir /c

und dann die folgende Zeile in die Datei /etc/fstab aufzunehmen:

/dev/hda1  /c  vfat  defaults

Sollten Sie es vollständig ausschließen wollen, dass Wine irgend etwas an Ihrer Windows-Installation verändert, können Sie die Partition auch ohne Schreibberechtigung einbinden:

/dev/hda1  /c  vfat  defaults,ro

Nun muss die Partition noch tatsächlich eingebunden werden. Dies kann mit diesem Befehl geschehen:

# mount /c

…oder ohne

Natürlich können Sie Wine auch ohne bestehende Windows-Installation verwenden. Sie müssen dann mindestens ein Verzeichnis festlegen, das einem Laufwerksbuchstaben zugeordnet werden soll und dieses Verzeichnis anlegen, falls es noch nicht existiert. Außerdem müssen in dem Verzeichnis einige Unterverzeichnisse erzeugt werden, die in einer Windows-Installation ebenfalls vorhanden sind und es muss eine Registry erzeugt werden. Diese Schritte sowie die Erzeugung einer Konfigurationsdatei lassen sich am einfachsten mit dem Skript wineinstall durchführen, welches sich im Unterverzeichnis tools des Quellcodeverzeichnisses befindet.

Für alle Fälle: wineinstall

Wineinstall kann übrigens durchaus auch benutzt werden, um Wine für die Verwendung mit einer bestehenden Windows-Installation zu konfigurieren. Ob eine solche existiert, erkennt das Skript daran, ob in der Datei /etc/fstab eine Windows-Partition eingebunden ist. Sollten Sie also eine Windows-Installation eingebunden haben und nicht wünschen, diese mit Wine zu verwenden, empfiehlt es sich, den Eintrag auszukommentieren, bevor Sie wineinstall aufrufen. Den Kommentar können Sie hinterher ja wieder entfernen.

Je nachdem, ob Sie wineinstall als root (Systemadministrator) oder als gewöhnlicher Benutzer aufrufen, erzeugt das Skript eine systemweit gültige Konfiguration oder eine Konfiguration die lediglich für den aufrufenden Benutzer gültig ist. Im Fall einer systemweit gültigen Konfiguration werden die Konfigurationsdaten im Verzeichnis /usr/local/etc abgelegt. Die wichtigste Datei in diesem Verzeichnis ist die Datei wine.conf. Es handelt sich dabei um die zentrale Konfigurationsdatei von Wine. Bei einer Benutzerkonfiguration wird die Konfigurationsdatei ins Heimatverzeichnis ~ des aufrufenden Benutzers geschrieben und trägt dort den Namen .winerc (Der Punkt vor dem Dateinamen bedeutet übrigens, dass es sich um eine “versteckte” Datei handelt, die von ls nur dann angezeigt wird, wenn ihm der Zusatzparameter -a mit übergeben wird.) Falls beide Dateien existieren, verwendet Wine übrigens die Datei im Heimatverzeichnis des aufrufenden Benutzers. Geben Sie also – entweder als Benutzer oder als Administrator – den folgenden Befehl ein, um Wine zu konfigurieren:

# tools/wineinstall

Es wird dann zunächst überprüft, ob Wine kompiliert und installiert ist. Falls nicht, werden die entsprechenden Schritte durchgeführt. Danach wird geprüft, ob eine existierende Windows-Installation vorhanden ist. Wenn ja, wird eine entsprechende Konfigurationsdatei erzeugt. Falls nicht, wird gefragt, welches Verzeichnis dem Laufwerk C: entsprechen soll. Dieses Verzeichnis wird erzeugt, falls es noch nicht vorhanden ist. Außerdem wird die Registry erzeugt. Danach wird ebenfalls eine Konfigurationsdatei geschrieben.

Der große Augenblick

Abbildung 5: Praktisch um Word-Dokumente unter Linux zu betrachten. Der kostenlose Word-Viewer von Microsoft. Der Viewer ist unter <link url_id="58122" srcset=

http://officeupdate.microsoft.com/downloadDetails/wd97vwr32.htm erhältlich” width=”300″ height=”226″ /> Abbildung 5: Praktisch um Word-Dokumente unter Linux zu betrachten. Der kostenlose Word-Viewer von Microsoft. Der Viewer ist unter http://officeupdate.microsoft.com/downloadDetails/wd97vwr32.htm erhältlich

Abbildung 6: Auch das ist möglich: Erstellung eines Vortrages über Wine mit Powerpoint

Abbildung 6: Auch das ist möglich: Erstellung eines Vortrages über Wine mit Powerpoint

Nun können Sie versuchen, ein einfaches Windows-Programm auszuführen, um Wine zu testen. Falls Sie eine bestehende Windows-Installation verwenden, könnten Sie beispielsweise das Programm notepad.exe starten. Wenn nicht, können Sie zum Test gleich mit der Installation eines Programms beginnen, wie es weiter unten beschrieben ist. Um Windows-Programme mit Wine von der Kommandozeile aus zu starten, ist zunächst der Name des Programms wine und als Argument der Name des auszuführenden Programms anzugeben. Um also notepad.exe auszuführen, wäre folgender Befehl einzugeben:

$ wine notepad.exe

Sie können den Namen des auszuführenden Programms auch mit absolutem Pfad angeben. Das ist notwendig, wenn es nicht im Suchpfad für Windows-Programme gefunden werden kann, der in der Konfigurationsdatei festgelegt ist. Dabei kann wahlweise der Unix-Pfadname oder der Windows-Pfadname entsprechend der Zuordnungen in der Konfigurationsdatei angegeben werden. Falls also das Verzeichnis /c dem Laufwerk C: zugeordnet ist, hätten die beiden folgenden Befehle die gleiche Wirkung:

$ wine /c/windows/notepad.exe
$ wine c:\\windows\\notepad.exe

Der umgekehrte Schrägstrich wurde bei dem zweiten Befehl jeweils doppelt angegeben, weil er alleine für die Shell eine besondere Bedeutung hat. Egal, wie sie den Dateinamen des auszuführenden Programms angeben, eines muss immer beachtet werden: Jedes auszuführende Windows-Programm muss sich in einem Verzeichnis befinden, dass aufgrund der Zuordnungen in der Konfigurationsdatei einem Laufwerksbuchstaben zugeordnet werden kann. Diese Zuordnungen haben das folgende Format:

[Drive C]
Path=/c
Type=hd
Label=MS-DOS
Filesystem=win95

Wichtig ist hier vor allem die Bezeichnung in den eckigen Klammern, mit welcher der Name des Laufwerks festgelegt wird, und der Wert hinter dem Bezeichner Path, mit dem definiert wird, welchem Unix-Verzeichnis das Laufwerk entspricht. Hinter dem Platzhalter Filesystem sollte übrigens in fast allen Fällen win95 stehen, unabhängig davon, welches Dateisystem tatsächlich auf dem entsprechenden Datenträger benutzt wird. Wenn Sie das gesamte Dateisystem Ihres Rechners mit Wine verfügbar haben wollen, definieren Sie einfach ein weiteres Laufwerk, das dem Wurzelverzeichnis Ihres Systems entspricht:

[Drive R]
Path=/
Type=hd
Label=ROOT
Filesystem=win95

Wird Wine mit einer bestehenden Windows-Installation benutzt, sollten die Laufwerkszuordnungen unter Wine die gleichen wie unter Windows sein. Es kommt sonst zu Problemen, wenn ein Programm eine Datei beispielsweise auf dem Laufwerk C: sucht, die fragliche Datei unter Wine aber nur über das Laufwerk D: gefunden werden kann. Sie können natürlich trotzdem unter Wine zusätzliche Laufwerke definieren, etwa um das Wurzelverzeichnis Ihres Systems oder Ihr eigenes Heimatverzeichnis ansprechen zu können.

Wichtige Kommandozeilenoptionen

Sofern Sie Wine bereits, wie beschrieben, getestet haben, wird Ihnen wahrscheinlich aufgefallen sein, dass von Wine gesteuerte Fenster in dem unter Windows üblichen Design und unabhängig vom Window-Manager erscheinen. Im allgemeinen wird jedoch gewünscht, dass mit Wine ausgeführte Windows-Programme wie normale Linux-Anwendungen erscheinen und sich wie alle anderen Fenster über den Window-Manager steuern lassen. Hierzu dient die Kommandozeilenoption --managed. Soll Notepad also “gemanaged” laufen, wäre Wine so aufzurufen:

$ wine --managed notepad.exe

Darüber hinaus kann Wine im sogenannten Desktop-Modus betrieben werden. Die Fenster von Windows-Programmen werden dann, wie z .B. unter VMWare, alle gemeinsam in einem Fenster dargestellt. Die entsprechende Kommandozeilenoption lautet --desktop. Ihr kann optional die Größe des darzustellenden Desktop-Fenster nachgestellt werden. Um notepad.exe in einem Desktop-Fenster mit einer Größe von 640 mal 480 Punkten auszuführen, wäre Wine folgendermaßen aufzurufen:

$ wine --desktop 640x480 notepad.exe

Manche Windows-Programme laufen nur unter Windows 95 und nicht unter NT, bei anderen ist es genau umgekehrt. Über die Kommandozeilenoption --winver ist es möglich, Wine mitzuteilen, als welche Version von Windows es sich ausgeben soll. Um es für ein Windows-Programm so aussehen zu lassen, als würde es unter Windows NT 4.0 ausgeführt, wäre Wine folgendermaßen aufzurufen:

$ wine --winver nt40 notepad.exe

Und um die Windows Version 3.1 zu “faken”, wäre anstelle des Arguments nt40 der Wert win31 zu verwenden. Weitere mögliche Argumente sind win95 und win98. Wird Wine mit der Kommandozeilenoption --help aufgerufen, gibt es übrigens wie viele Linux-Programme auch alle verstandenen Optionen aus. Eine weitere wichtige Option ist --dll. Hiermit kann angegeben werden, welche Bibliotheken Wine aus einer bestehenden Windows-Installation verwenden soll und welche es selbst zur Verfügung stellen soll. Dazu sind hinter der Option die Namen der Bibliotheken (ohne die Endung .dll) anzugeben, für welche die Voreinstellung überschrieben werden soll, wobei mehrere Bibliotheken durch Kommata voneinander zu trennen sind. Schließlich ist hinter einem Gleichheitszeichen anzugeben, ob die von Wine bereitgestellte Version (b wie built-in) oder die Windows-Version (n wie native) benutzt werden soll. Um beispielsweise die Windows-Versionen der Bibliotheken shell und shell32 zu verwenden, könnte man Wine so aufrufen:

$ wine --dll shell,shell32=n notepad.exe

Die Option --dll bietet noch weitere Möglichkeiten, die in der Manual-Seite zu Wine beschrieben sind. Um die Voreinstellungen zu diesem Thema zu ändern, ist die Konfigurationsdatei entsprechend anzupassen.

Installation von Windows-Programmen unter Wine

Abbildung 7: Installation eines Windows-Programms unter Linux mit Wine. Kommt Ihnen das bekannt vor?

Abbildung 7: Installation eines Windows-Programms unter Linux mit Wine. Kommt Ihnen das bekannt vor?

Wenn Sie keine Windows-Installation zur Verfügung haben, müssen Windows-Programme, die Sie unter Linux verwenden wollen, auch unter Wine installiert werden. Im Prinzip ist das kein Problem, weil es sich bei den Installationsprogrammen ja auch um nichts anderes wie normale Windows-Programme handelt. In der Praxis stellt sich jedoch leider oft heraus, dass gerade die Installationsprogramme besonders “schwierig” sind und noch nicht funktionieren, obwohl die eigentlichen Programme bereits gut mit Wine benutzbar sind. Falls Sie ein Programm unter Wine nicht installieren können, sollten Sie entweder auf eine neuere Wine-Version warten (wie gesagt, die Entwicklung schreitet wirklich schnell voran) oder die Wine-Dokumentation lesen und danach einen Bug-Report verfassen. Die Demonstration der Installation von Windows-Programmen unter Wine soll hier anhand des unter Windows-Benutzern sehr beliebten News-Readers Free Agent (das ist die “Freeware”-Version von Forte Agent) geschehen, er ist unter der URL http://www.forteinc.com/getfa/download.htm zu beziehen. Von dieser Web-Seite kann die Datei fa32-121.exe heruntergeladen werden. Dies ist die 32Bit-Version des Programms. Auf der angegeben Seite ist außerdem eine 16Bit-Version des Programms erhältlich, die ebenfalls benutzt werden kann. Bevor das Programm installiert wird, muss zunächst sichergestellt werden, dass in das Windows-Verzeichnis geschrieben werden darf (Wine ist also gegebenfalls vom Administrator auszuführen). Dann kann Wine mit dem Namen der heruntergeladenen Datei als Argument aufgerufen werden, beispielsweise so:

# wine fa32-121.exe --managed
Abbildung 8: Eh voila! Wine belohnt uns nach all den Strapazen mit einem "managed" Newsreader

Abbildung 8: Eh voila! Wine belohnt uns nach all den Strapazen mit einem “managed” Newsreader

Das Installationsprogramm sollte nun starten. Lassen Sie sich nicht von kleineren grafischen Fehlern stören, die hierbei zur Zeit noch auftreten können, sondern machen Sie alle Angaben so, wie Sie es unter Windows auch tun würden. Das Installationsprogramm erzeugt u. a. einen Eintrag im Startmenü von Windows. Diese Einträge sind zur Zeit noch nicht mit den Startmenüs von GNOME oder KDE verknüpft, so dass Sie Free Agent nach der Installation von der Kommandozeile aus starten müssen (Natürlich können Sie sich manuell einen Menüeintrag zum Start des Programms anlegen). Wenn Sie das Programm in das Verzeichnis C:\Program Files\Agent installiert haben und der Laufwerksbuchstabe C: dem Unix-Verzeichnis /c entspricht, könnten Sie den Newsreader beispielsweise mit der folgenden Kommandozeile starten:

$ wine /c/Program\ Files/Agent/agent.exe --managed

Der Backslash hinter Program ist hier notwendig, um der Shell mitzuteilen, dass das folgende Leerzeichen zum Dateinamen gehört.

Das Programm wird dann gestartet und sollte wie unter Windows benutzt werden können. Wenn Sie es bis hierhin geschafft haben, können Sie nun versuchen, die Programme Ihrer bestehenden Windows-Installation mit Wine auszuführen (Starten Sie doch einmal den Internet Explorer!) oder weitere Programme zu installieren, falls Sie keine Windows-Installation auf dem Rechner haben. Und noch ein Tipp zum Schluss: Wine ist, wie gesagt, z. T. noch recht instabil. Wenn sich das Programm aufhängt, können Sie es mit folgendem Befehl beenden:

$ killall -9 wine

Abbildung 9: Der Wine-Uninstaller ist eines der Hilfprogramme, die sich im Unterverzeichnis <code srcset=

programs des Wine-Quellcodes befinden. Mit ihm können die unter Wine installierten Programme bequem verwaltet werden” width=”300″ height=”291″ /> Abbildung 9: Der Wine-Uninstaller ist eines der Hilfprogramme, die sich im Unterverzeichnis programs des Wine-Quellcodes befinden. Mit ihm können die unter Wine installierten Programme bequem verwaltet werden

Abbildung 10: Mit dem Spiel StarCraft können die Multimedia-Eigenschaften von Wine vorgeführt werden. Die StarCraft-Demo kann unter <link url_id="58123" srcset=

http://www.blizzard.com/starcraft/scdemo.shtml heruntergeladen und unter Wine installiert werden” width=”300″ height=”232″ /> Abbildung 10: Mit dem Spiel StarCraft können die Multimedia-Eigenschaften von Wine vorgeführt werden. Die StarCraft-Demo kann unter http://www.blizzard.com/starcraft/scdemo.shtml heruntergeladen und unter Wine installiert werden

Abbildung 11: Ein weiteres beliebtes Windows-Spiel ist Wing Commander. Es lässt sich ebenfalls mit Wine spielen. Die Demo ist unter <link url_id="58124" srcset=

http://www.wingcommanderprophecy.com/demo.html erhältlich” width=”300″ height=”232″ /> Abbildung 11: Ein weiteres beliebtes Windows-Spiel ist Wing Commander. Es lässt sich ebenfalls mit Wine spielen. Die Demo ist unter http://www.wingcommanderprophecy.com/demo.html erhältlich

Abbildung 12: Erkennen Sie noch Unterschiede? Der Internet Explorer mit der Homepage des Wine-Projekts und HTML-Hilfe

Abbildung 12: Erkennen Sie noch Unterschiede? Der Internet Explorer mit der Homepage des Wine-Projekts und HTML-Hilfe

Weiterführende Informationen

Selbstverständlich kann ein Artikel in diesem Rahmen nur einen Einblick in die Möglichkeiten von Wine geben. Weitere Informationen finden Sie im Dokumentationsverzeichnis des Wine-Quellcodes. Dort befindet sich auch eine ausführliche deutschsprachige Installationsanleitung (Dateiname: installation-und-konfiguration.german). Im Internet ist die Homepage des Wine-Projekts (URL: http://www.winehq.com) sehr zu empfehlen. Dort finden Sie Links auf das Wine-FAQ sowie ein Wine-HOWTO. Online-Support finden Sie u. U. in der Wine-Newsgroup, die den Namen comp.emulators.ms-windows.wine trägt.

Zur Schreibweise GNU/Linux oder Linux

Fairerweise möchten wir von der Redaktion anmerken, dass der Autor in seinem Text grundsätzlich von “GNU/Linux” statt “Linux” gesprochen hat – dazu eine kurze Erklärung: Das GNU-Projekt (GNU: GNU is Not Unix, http://www.gnu.org) hat den größten Teil aller unter Linux eingesetzten Tools entwickelt und unter der freien Lizenz GPL veröffentlicht. Vergleicht man für eine “typische” Linux-Distribution die Anteile an eigentlichem Linux-Code (im wesentlichen nur der Kernel) und an GNU-Code, wird klar, dass Linux ohne GNU recht nutzlos wäre. Daher vertreten viele Linux-Anwender die Auffassung, das Betriebssystem müsse “GNU/Linux” genannt werden, um den Beitrag des GNU-Projektes angemessen zu würdigen. Auch der Autor dieses Textes hat einheitlich die Bezeichnung “GNU/Linux” verwendet, die wir im ganzen Artikel durch “Linux” ersetzt haben, weil wir eine durchgehende Bezeichnung im ganzen LinuxUser wünschen.

Glossar

i386

Bezeichnung für die vom amerikanischen Chip-Hersteller Intel entwickelte Prozessorarchitektur. Zu den Intel-386-kompatiblen Prozessoren gehören Intels 80386er, 80486er, 80586er (Pentium), 80686er (Pentium II) Prozessoren, aber auch Prozessoren anderer CPU-Herstellers wie AMDs Athlon oder VIAs Cyrix III. Die i386er Architektur hat sich vor allem im Bereich der Desktop-Computer durchgesetzt. Man spricht bei i386-kompatiblen Rechnern oft auch von PCs oder IBM-kompatiblen Rechnern.

API

Application Programmers Interface. Damit bezeichnet man die Schnittstellen eines Betriebssystems, einer Systemkomponente oder auch einer Programmbibliothek, die von anderen Programmen benutzt werden kann.

Programmbibliothek

Hierbei handelt es sich um eine Datei mit vom Prozessor ausführbarem Programmcode, der jedoch für sich selbst kein vollständiges Programm darstellt. Im allgemeinen fehlt Programmbibliotheken die sogenannte main()-Funktion, die vom Betriebssystem aufgerufen wird, um ein Programm zu starten. Der Code in Programmbibliotheken kann vielmehr von ausführbaren Programmen benutzt werden. Eine Programmbibliothek kann beispielsweise Funktionen zur Darstellung von Fenstern auf dem Bildschirm bereitstellen. Programme, die diese Bibliothek dann benutzen brauchen den entsprechenden Code nicht selbst zu enthalten, wodurch Speicherplatz gespart wird. Außerdem lässt sich so ein einheitliches Aussehen aller Fenster von Programmen gewährleisten, welche die Bibliothek benutzen. Programmbibliotheken haben unter Windows meist die Dateinamensendung .DLL (Dynamic Link Library) und unter Unix/Linux die Endung .so (shared object).

OpenGL

Bei der Entwicklung von Programmen, die aufwendige Grafiken verwenden (z. B. Spiele, CAD-Programme, Simulationen), wäre es für die Programmierer viel zu mühsam, jedes Mal von Neuem Hardware-nahe Funktionen zu schreiben, mit denen sie ihre Grafikkarte dazu bewegen können, bestimmte geometrische Figuren u. ä. zu zeichnen, zumal sie diese für jeden Grafikkartentyp individuell anpassen müssten. OpenGL ist eine solche Sammlung von elementaren Grafikfunktionen, die, im Gegensatz zu anderen elementaren Grafikbibliotheken (wie z. B. Direct3D unter MS Windows) den enormen Vorteil hat, nicht nur Hardware-unabhängig, sondern auch noch Plattform-übergreifend (d. h. v. a.auch Betriebssystem-übergreifend!) zu sein. Näheres dazu finden Sie auch unter http://www.opengl.org.

debuggen

Dieses merkwürdige Wort stammt, wie so vieles in der Computerwelt, aus dem Englischen (to debug) und bezeichnet im Fachjargon der Programmierer den Vorgang des “Entwanzens” (bug= Käfer, Wanze), also der Bereinigung des Quellcodes von Fehlern.

LinuxUser 10/2000 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben