Installations- und Bedienungsanleitung für WINE Peter Ganten peter@ganten.org 7. Juli 2000 1. Zusammenfassung Dieser Text beschreibt die Installation, Einrichtung und Bedienung von WINE. WINE ist eine Laufzeitumgebung zum Ausführen von Programmen für MS-Windows unter GNU/Linux und anderen UNIX-kompatiblen Betriebssystemen auf Intel-x86-kompatiblen Computern, das Programm kann außerdem dazu genutzt werden, den Quellcode existierender Windows-Programme nach UNIX zu portieren. In diesem Text geht es in erster Linie jedoch um die Installation und Konfiguration der Laufzeitumgebung für Windows-Programme. Der Text wurde ursprünglich als Begleitmaterial für einen Vortrag über WINE und die Integration von Windows-Anwendungen unter GNU/Linux auf dem LinuxTag 2000 vom 30. Juni bis zum 2. Juli 2000 in Stuttgart geschrieben. 2. Einleitung Mit WINE wird ein umfassender Ansatz zur Integration von Windows-Anwendungen unter GNU/Linux verfolgt. WINE besteht u.a. aus einem Loader, mit dem Windows- und DOS-Programme unter Linux in den Speicher geladen und vom Prozessor des Rechners ausgeführt werden können. Außerdem stellt das Programm einen großen Teil der Schnittstellen (APIs) Windows-basierter Betriebssysteme zur Verfügung. Diese Schnittstellen werden von Windows-Programmen, die mit WINE ausgeführt werden, benutzt, so dass solche Programme die selbe, erwartete Umgebung vorfinden, wie unter Windows. Weil diese Schnittstellen mit WINE vorhanden sind und deren Definitionen in Form von Header-Dateien vorliegen, kann WINE auch benutzt werden, um den Quellcode von Windows-Programmen nach GNU/Linux oder anderen UNIX-basierten Betriebssystemen zu portieren. Es entstehen dann echte UNIX/Linux-Programme, welche die selbe Funktionalität haben, wie ihre äquivalenten Programme unter Windows. Die Verwendung eines einheitlichen APIs unter Windows und Linux hat für Softwarehersteller den Vorteil, dass nur eine einzige Version des Quellcodes gepflegt und weiterentwickelt werden muss, die sich unter beiden Betriebssystemfamilien verwenden lässt. Das WINE-Projekt wurde 1993 gestartet, es wird im wesentlichen von Freiwilligen getragen, die über Mailinglisten miteinander kommunizieren. In letzter Zeit hat WINE zusätzliche Unterstützung durch mehrere kommerzielle Unternehmen erfahren, die WINE dazu einsetzen, ihre Windows-Programme nach GNU/Linux zu portieren. WINE ist heute in der Lage, einen großen Teil der existierenden Windows-Programme (16- und 32bit) unter Linux auszuführen, in einem begrenzten Umfang können auch DOS-Programme mit WINE benutzt werden. WINE führt Windows-Programme direkt unter Linux aus, es benötigt dazu keine speziellen Kernelerweiterungen, keine besonderen Rechte und keine existierende Windows-Installation. Das Design erlaubt es, die betreffenden Programme unter Linux genauso schnell auszuführen, wie unter Windows, weil keine Emulation im Sinne einer Interpretation von Prozessoranweisungen stattfindet. Zur Ausführung eines bestimmten Programms werden unter GNU/Linux mit WINE theoretisch dieselben Systemressourcen benötigt wie unter Windows. Optional kann WINE eine bestehende Windows-Installation verwenden. Es ist dann möglich, die Einstellungen dieser Installation für Windows-Programme zu übernehmen und einige Original-Bestandteile von Windows mit WINE zu verwenden, welche in WINE noch nicht in ausreichendem Umfang zur Verfügung stehen. Im folgenden wird beschrieben, wie WINE auf einem GNU/Linux-System installiert und eingerichtet werden kann. Ausgegangen wurde dabei urspruenglich von der Linux-Distribution Debian GNU/Linux 2.2 (potato) und der WINE-Version 20000614. Mittlerweile wurde der Inhalt auf neuere Wine-Versionen (200105xx) angepasst. Bei Verwendung einer anderen Linux-Distribution oder einer anderen WINE-Version sind die beschriebenen Schritte entsprechend anzupassen. Mittlerweile gibt es bei Debian von Ove Kaaven ein perfekt angepasstes Wine-Package ("wine"), das zusammen mit "winesetuptk" kinderleicht verwendet werden kann. 3. Binärpaket oder Quellcode? In den meisten Linux-Distributionen sind heute WINE-Pakete enthalten. Hierbei handelt es sich um Binärpakete, die WINE in einer Form enthalten, in der es direkt ausgeführt werden kann. Aktuelle Versionen solcher Pakete lassen sich auch von verschiedenen Internetseiten herunterladen. Theoretisch sollte WINE nach der Installation eines Binärpakets sinnvoll konfiguriert und sofort benutzbar sein. Tatsächlich ist es in vielen Fällen jedoch notwendig, die mit dem Paket installierte Konfiguration zu überarbeiten. Aufgrund der schnellen Entwicklung von WINE wird zur Zeit empfohlen, an Stelle eines Binärpakets den aktuellen Quellcode zu verwenden. Der Quellcode muss, nachdem man ihn sich beschafft hat, entpackt, konfiguriert und kompiliert (übersetzt) werden. Dabei entsteht dann eine Binärdatei, die genau an das eigene System angepasst ist und deshalb eine höhere Wahrscheinlichkeit für optimale Ergebnisse bietet, als Binärpakete, die u.U. für ein anders konfiguriertes System erstellt wurden. Die Verwendung des Quellcodes bietet außerdem die Möglichkeit, das Programm relativ einfach aktualisieren zu können, wobei nicht immer wieder das komplette Paket heruntergeladen werden muss. Darüberhinaus kann mit der Verwendung des aktuellen Quellcodes sichergestellt werden, dass evtl. auftretende Fehler wirklich in WINE vorhanden sind und nicht bereits behoben worden sind. Dadurch wird die Möglichkeit gesteigert, sinnvolle Fehlerberichte an die WINE-Entwickler schicken zu können. Die Installation von Binärpaketen ist abhängig vom eingesetzten Paketformat der Distribution (zumeist wird das Redhat- oder Debian-Format benutzt) sowie der Distribution selbst. Die hierzu benötigten Informationen sollten sich in der Dokumentation der von Ihnen eingesetzten Distribution finden. In diesem Text wird die Installation aus dem Quellcode von WINE beschrieben. 4.0 Systemvoraussetzungen Damit WINE auf dem System übersetzt und ausgeführt werden kann, müssen die folgenden Programme und Dateien installiert sein: 1. Linux-Kernel ab der Versionsfamilie 2.2.x. (WINE lässt sich auch unter Linux-Kernels der Versionsfamilie 2.0.x ausführen, allerdings unterstützen diese Kernels bestimmte von WINE benötigte Eigenschaften nicht. Dies macht sich insbesondere dann bemerkbar, wenn 32Bit-Windowsprogramme mit WINE ausgeführt werden sollen, bei denen mehrere Threads gleichzeitig ausgeführt werden.) Die Versionsnummer des aktuell ausgeführten Linux-Kernels wird angezeigt, wenn der folgenden Befehl an der Kommandozeile eingegeben wird: uname -r 2. Es wird empfohlen, die GNU C-Bibliothek (libc6) ab Version 2.1 einzusetzen. Die Versionsnummer der aktuell eingesetzten C-Bibliothek kann angezeigt werden, indem der folgende Befehl benutzt wird: ls -l /lib/libc.so.* Auf einigen Systemen ist sowohl die ältere C-Bibliothek libc5, als auch die neuere Bibliothek libc6 vorhanden. Entscheidend ist dann in der Regel die neuere Version. Die C-Bibliothek muss Reentrant sein, damit WINE Multithreading unterstützen kann. Dies ist bei allen neueren Linux-Distributionen der Fall. Die C-Bibliothek befindet sich im Paket libc6. Um WINE zu übersetzen werden zusätzlich die Entwicklerdateien zur C-Bibliothek benötigt. Diese befinden sich unter Debian im Paket libc6-dev. 3. Weil WINE das X Window System benutzt, werden die X-Bibliotheken und, wenn WINE übersetzt werden soll, die Entwicklerdateien für X benötigt. Die Bibliotheken sind unter Debian im Paket xlib6g und die Entwicklerdateien im Paket xlib6g-dev enthalten. 4. Für Programme, die im Textmodus ausgeführt werden, kann WINE die Bibliothek libncurses verwenden. Damit die Unterstützung dafür in das Programm eingebunden wird, müssen die Entwicklerdateien für diese Bibliothek installiert sein (Paket libncurses5-dev). Die Verwendung der ncurses-Bibliothek ist jedoch optional. 5. Ebenfalls optional ist die Unterstützung einer OpenGL-kompatiblen Bibliothek, wie z.B. Mesa. Wenn die Unterstützung für OpenGL in das Programm eingebunden werden soll, müssen die OpenGL-Entwicklerdateien auf dem System installiert sein, wie sie z.B. durch das Paket mesag-dev bereitgestellt werden. Zusätzlich sind dann natürlich die OpenGL-Bibliotheken selbst erforderlich. 6. Um WINE zu übersetzen, muss der GNU-C-Compiler benutzt werden. Empfohlen wird zur Zeit Version 2.95. Weiter werden einige Standardwerkzeuge wie make, (f)lex, yacc oder bison benötigt, die auf den meisten Linuxsystemen bereits installiert sein sollten. Je nachdem, ob in dem zu erzeugenden Binärcode Debug-Informationen enthalten sein sollen, werden für die Übersetzung und die Installation von WINE zwischen ca. 100 MB und ca. 250 MB Speicherplatz auf der Festplatte benötigt. An den Prozessor des Rechners werden keine besonderen Anforderungen gestellt, so ist ein Prozessor der Pentium-Klasse mit 133 Mhz ausreichend, um mit WINE beispielsweise Textverarbeitungsprogramme auszuführen. Für Spiele und andere Multimedia-Anwendungen wird allerdings in der Regel ein schnellerer Rechner benötigt. Wichtig ist, dass sich in dem Rechner ausreichend Arbeitsspeicher (RAM) befindet. Zur Ausführung größerer Windows-Programme sollte der Rechner mit 64 MB RAM ausgestattet sein. 5.0 Beschaffung und Installation des Quellcodes WINE kann von verschiedenen Servern im Internet per FTP oder HTTP heruntergeladen werden. Normalerweise kann der jeweils aktuelle Quellcode u.a. von den folgenden Adressen bezogen werden: * ftp://metalab.unc.edu/pub/Linux/ALPHA/wine/development/ * ftp://ftp.infomagic.com/pub/mirrors/linux/sunsite/ALPHA/wine/development/ * ftp://orcus.progsoc.uts.edu.au/pub/wine/development/ * http://metalab.unc.edu/pub/Linux/ALPHA/wine/development/ Bei der Entwicklung von WINE werden zur Zeit noch keine Versionsnummern benutzt. An Stelle dessen trägt jede Ausgabe eine Zahl, welche nach dem Schema Jahreszahl, Monat, Tag dem Datum entspricht, an welchem die betreffende Version herausgegeben wurde. Die Datei Wine-20000614.tar.gz in einem der oben aufgeführten Verzeichnisse enthält also die Version von WINE. die am 14. Juni 2000 herausgegeben wurde. Prinzipiell ist es zu empfehlen, die jeweils neueste Version zu verwenden. Nachdem der Quellcode heruntergeladen worden ist, kann er durch die Eingabe des folgenden Befehls im aktuellen Arbeitsverzeichnis entpackt werden: tar -xvzf Wine-20000614.tar.gz Dabei ist Wine-20000614.tar.gz natürlich durch den Namen der heruntergeladenen Datei zu ersetzen. Der Quellcode wird dann in ein Unterverzeichnis des aktuellen Verzeichnisses entpackt, dessen Name sich aus der Bezeichnung wine und, getrennt von einem Bindestrich, dem Herausgabedatum der benutzten Version zusammensetzt, also beispielsweise wine-20000614. Normalerweise empfiehlt es sich, dieses Verzeichnis in wine umzubenennen, wie es durch Eingabe des folgenden Befehls geschehen kann: mv wine-20000614 wine 5.1 Aktualisieren des Quellcodes mit Patchdateien Neben den komprimierten Tar-Archiven, welche den Quellcode von WINE beinhalten, befinden sich in den aufgeführten Verzeichnissen auch so genannte Patch-Dateien, welche lediglich die Änderungen enthalten, die zwischen zwei Ausgaben an WINE vorgenommen wurden. Diese Dateien sind normalerweise viel kleiner als der komplette Quellcode, so dass es sich empfiehlt, sie zu verwenden, wenn das Programm von einer Version auf die nächste aktualisiert werden soll. Falls auf einem Rechner beispielsweise Wine-20000614 installiert ist und auf WINE-20000614 aktualisiert werden soll, so wäre die Datei WINE-20000614.diff.gz herunterzuladen. Die in der Datei beschrieben Veränderungen können auf den installierten Quellcode angewandt werden, indem zunächst in das Basisverzeichnis des Quellcodes (also in das Verzeichnis wine, welches durch die oben beschriebenen Schritte entstanden ist) gewechselt wird und dann das Programm patch wie folgt aufgerufen wird: gunzip -c ../Wine-20000526.diff.gz | patch -p1 Hier wird davon ausgegangen, dass sich die Patch-Datei in dem Verzeichnis befindet, welches dem WINE-Verzeichnis (wine) übergeordnet ist und den Namen Wine-20000526.diff.gz trägt. Der Dateiname ist entsprechend anzupassen, wenn eine Datei mit einem anderen Namen oder aus einem anderen Verzeichnis benutzt wird. 5.2 Herunterladen und Aktualisieren von WINE mit CVS Alternativ kann der Quellcode vom CVS-Server des WINE-Projektes installiert werden. Der Vorteil dieses Verfahrens besteht darin, dass es jederzeit unkompliziert möglich ist, den eigenen Quellcode an den Entwicklungsstand des Projekts anzupassen ohne dass auf eine neue Ausgabe des Programms gewartet werden muss. Für jeden, der plant, selbst an dem Projekt mitzuarbeiten, ist die Verwendung von CVS normalerweise erforderlich. Damit CVS benutzt werden kann, muss das Programm cvs natürlich installiert sein. Unter Debian ist es in dem gleichnamigen Paket enthalten. Wenn dies sichergestellt ist, kann durch die Umgebungsvariable CVSROOT eingestellt werden, von wo der Quellcode bezogen, bzw. aktualisiert werden soll. Bei Verwendung der Bash kann dazu der folgende Befehl eingegeben werden: export CVSROOT=:pserver:cvs@cvs.winehq.com:/home/wine Danach kann man sich bei dem CVS-Server anmelden. Hierzu dient dieser Befehl: cvs login Das Programm erfragt dann ein Passwort für den Zugriff auf den Server. Hier ist das Passwort cvs zu verwenden. Nun kann der Quellcode vom Server heruntergeladen werden, indem der nächste Befehl eingegeben wird: cvs -z 3 checkout wine Im aktuellen Arbeitsverzeichnis wird dann ein Unterverzeichnis mit der Bezeichnung wine angelegt. Sobald der Befehl abgeschlossen ist, befinden sich in diesem Verzeichnis der aktuelle Quellcode des Projekts und einige zusätzliche Dateien, die von CVS benötigt werden. Um den Quellcode auf den neuesten Stand zu bringen, kann dieser Befehl benutzt werden: cvs -z 3 update -PAd WINE Informationen über die hier verwendeten Parameter beim Aufruf von CVS und über weitere Möglichkeiten des Programms befinden sich u.a. in der Manualseite zu cvs(1) sowie auf der CVS-Homepage, die unter http://www.sourcegear.com/CVS zu erreichen ist. Weitere wichtige Hinweise im Hinblick auf CVS und WINE sind unter der Adresse http://www.winehq.com/development/ verfügbar. 6.0 Konfiguration und Übersetzung des Quellcodes Vorausgesetzt, der Quellcode befindet sich im Unterverzeichnis wine des aktuellen Arbeitsverzeichnisses, ist zunächst in dieses Verzeichnis zu wechseln, um alle weiteren Schritte durchzuführen: cd wine Dann kann das Skript configure aufgerufen werden. Dieses Skript führt eine Reihe von Tests durch, die u.a. untersuchen, ob das System alle notwendigen Eigenschaften erfüllt und die benötigten Entwicklerdateien installiert sind. Daraufhin erzeugt es die Dateien, durch welche die Übersetzung des Quellcodes gesteuert wird. Dem Skript können verschiedene Parameter übergeben werden, mit denen sich beispielsweise bestimmen lässt, dass in den zu erzeugenden Programmen und Bibliotheken keine Debug-Mitteilungen enthalten sein sollen. Die vollständige Liste der verfügbaren Optionen für configure wird angezeigt, wenn das Skript mit der Option --help aufgerufen wird. Normalerweise reicht es aus, das Skript folgendermaßen aufzurufen: ./configure Falls wichtige Dateien oder Eigenschaften des Systems von configure nicht gefunden werden können, erfolgt unter Umständen eine Warn- oder Fehlermeldung. Solche Fehler sollten behoben werden, bevor mit der Übersetzung des Quellcodes fortgefahren wird. Im nächsten Schritt wird der Quellcode übersetzt. Dazu sind hintereinander die folgenden beiden Befehle zu benutzen: make depend make Auf der Partition, auf welcher sich das Verzeichnis mit dem Quellcode befindet, werden für die komplette Übersetzung zur Zeit ungefähr 230 MB Speicherplatz benötigt. Der größte Teil dieses Speicherplatzes wird dabei von den Debug-Informationen in den Objektdateien, die beim Übersetzen erzeugt werden, benötigt. Falls nicht beabsichtigt wird, irgendwelche Fehler in WINE zu untersuchen, können die Binärdateien auch ohne Debug-Informationen erzeugt werden, dazu ist der letzte der beiden oben genannten Befehle durch den nächsten Befehl zu ersetzen (für die Übersetzung werden dann nur noch ungefähr 80 MB Speicherplatz benötigt). make CFLAGS="-O2" Nun kann WINE auf dem System installiert werden. Hierzu ist mit den Rechten des Administrators der folgende Befehl einzugeben: make install Dadurch werden die ausführbaren Programme von WINE standardmäßig in das Verzeichnis /usr/local/bin, die Programmbibliotheken in das Verzeichnis /usr/local/lib, die Manualseiten unterhalb des Verzeichnisses /usr/local/man und einige Header-Dateien in das Verzeichnis /usr/local/include/wine installiert. Achtung: Standardmäßig wird bei einigen Distributionen (z.B. bei Debian GNU/Linux) in dem Verzeichnis /usr/local/lib nicht nach Programmbibliotheken gesucht. Falls beim Start von WINE gemeldet wird, dass bestimmte Bibliotheken nicht geladen werden können, sollte der Name dieses Verzeichnisses in die Datei /etc/ld.so.conf (in eine eigene Zeile) eingetragen und danach das Programm ldconfig aufgerufen werden. 7.0 Konfiguration Wie viele UNIX-Programme kann WINE entweder über eine systemweit gültige Konfigurationsdatei oder über eine benutzerspezifische Datei im Heimatverzeichnis des betreffenden Benutzers konfiguriert werden. Die benutzerspezifische Konfigurationsdatei trägt den Namen ~/.wine/config. 7.1 Aufbau der Konfigurationsdatei Das Format orientiert sich an den von Windows her bekannten *.ini-Dateien, allerdings leicht abgeändert im Wine-Registry-Format. Die Datei besteht aus einzelnen Blöcken, welche durch Bezeichner eingeleitet werden, die in eckigen Klammern und in einer eigenen Zeile stehen. Innerhalb eines Blockes befinden sich Paare von Variablen und Werten, die durch ein Gleichheitszeichen miteinander verbunden sind. Diese Paare stehen ebenfalls jeweils in einer Zeile. Kommentare werden in der Datei durch ein Semikolon eingeleitet. Außerdem dürfen leere Zeilen benutzt werden, um die Datei zu strukturieren. Ein Beispiel für einen solchen Block wäre also: [Drive C] "Path" = "/home/karl" "Type" = "hd" "Label" = "Laufw.C" "Filesystem" = "win95" Außerdem ist es möglich, innerhalb der Konfigurationsdatei mit Werten von Umgebungsvariablen zu arbeiten. Dazu ist an Stelle eines Wertes der Name der zu verwendenden Umgebungsvariablen in DOS Schreibweise anzugeben, d.h. die Variable wird in Prozentzeichen eingeschlossen. Soll beispielsweise der Variablen Path aus dem obigen Beispiel der Wert zugeordnet werden, den die Umgebungsvariable HOME zur Zeit der Ausführung von WINE hat, so wäre die entsprechende Zeile folgendermaßen zu schreiben: "Path" = "%HOME%" Vom Basisverzeichnis des WINE-Quellcodes aus befindet sich in der Datei documentation/samples/config ein Beispiel als Vorlage für die Erstellung einer eigenen Konfigurationsdatei. Die Datei enthält alle wichtigen Blöcke und Variablen, sie muss jedoch an die eigene Konfiguration angepasst werden, bevor WINE das erste Mal benutzt wird. Angenommen, das Basisverzeichnis des WINE-Quellcodes trägt den Namen wine und ist ein Unterverzeichnis des eigenen Heimatverzeichnisses, dann kann diese Vorlage durch den folgenden Befehl an den richtigen Platz kopiert werden: cp ~/wine/documentation/samples/config ~/.wine/config Die Werte, welche Variablen in der Konfigurationsdatei zugewiesen werden, lassen sich in drei Typen einteilen: Zeichenketten, Zahlen und Boolsche Werte. Im Fall von Boolschen Werten lässt sich entweder true oder false, 1 oder 0 beziehungsweise yes oder no angeben. In den folgenden Beispielen wird die true / false -Schreibweise benutzt. 7.2 Konfiguration von Laufwerksbuchstaben Zwischen UNIX/Linux auf der einen und DOS bzw. Windows auf der anderen Seite gibt es einige Unterschiede in der Art, wie Datenträger und Dateien bezeichnet werden. Unter UNIX/Linux gibt es ein Dateisystem mit einem Wurzelpunkt (/), in das unterschiedliche Datenträger durch einen speziellen Befehl (mount) eingebunden werden. Alle Dateien auf eingebundenen Datenträgern können deswegen innerhalb dieses Dateisystems angesprochen werden. DOS und Windows verwenden jedoch für jeden erkannten Datenträger ein eigenes Dateisystem. Um eine bestimmte Datei eindeutig zu bezeichnen, ist es bei diesen Betriebssystemen deswegen notwendig, neben dem Pfad- und Dateinamen einen so genannten Laufwerksbuchstaben anzugeben. Üblicherweise entspricht dabei der Laufwerksbuchstabe A dem ersten Diskettenlaufwerk und der Buchstabe C der ersten Festplattenpartition des Systems. Weil Programme, die für DOS oder Windows geschrieben sind, Laufwerksbuchstaben verwenden, um Dateien zu bezeichnen, muss WINE diese Buchstaben auf das UNIX-Dateisystem abbilden. Das Problem ist auf die folgende Art gelöst: In der Konfigurationsdatei (~/.wine/config) wird jedem Laufwerksbuchstaben ein Verzeichnis im UNIX-Dateisystem zugeordnet. Dieses Verzeichnis stellt dann (aus Sicht der Windows- Programme) das Basisverzeichnis des entsprechenden Laufwerks dar. Ist also beispielsweise das Verzeichnis /var/winroot dem Laufwerksbuchstaben C zugeordnet und würde ein Windows-Programm unter WINE versuchen, die Datei C:\Dokumente\finanzamt.doc zu öffnen, so würde in Wirklichkeit die Datei /var/winroot/Dokumente/finanzamt.doc geöffnet werden, vorausgesetzt, diese Datei existiert tatsächlich. Durch diesen Mechanismus kann auch erreicht werden, dass von Windows-Programmen, die unter WINE ausgeführt werden, nur auf einen Teil des UNIX-Dateisystems zugegriffen werden kann. Ein weiterer Unterschied zwischen den Dateisystemen unter DOS und Windows auf der einen und UNIX/Linux auf der anderen Seite besteht in der Berücksichtigung von Groß- und Kleinschreibung bei Dateinamen. Während es unter Linux durchaus möglich ist, dass sich in einem Verzeichnis gleichzeitig Dateien mit den Namen brief.txt, Brief.txt und brief.TXT befinden, ist dies unter Windows ausgeschlossen, hier wird beispielsweise die Datei brief.txt geöffnet, falls diese existiert, aber eigentlich die Datei Brief.txt angefordert wurde. Die meisten Programme, die für DOS oder 16Bit-Windows geschrieben wurden, erwarten darüberhinaus, dass Dateinamen aus nicht mehr als acht Zeichen zuzüglich einer drei Zeichen langen Erweiterung bestehen. WINE muss aus diesen Gründen entscheiden, welche Datei tatsächlich geöffnet wird, wenn es aufgrund von Groß- und Kleinschreibung unterschiedliche Möglichkeiten gibt. Außerdem muss es die Dateinamen in acht Zeichen lange Namen übersetzen, falls sie von 16bit-Programmen abgefragt werden. Wenn WINE mit einer bestehenden Windows-Installation benutzt werden soll, sollte darauf geachtet werden, dass die Laufwerksbuchstaben unter Windows und WINE übereinstimmen. Befindet sich die Windows-Installation also beispielsweise auf der Partition /dev/hda1, welche unter Windows über den Laufwerksbuchstaben C angesprochen wird, so sollte diese Partition unter GNU/Linux in ein beliebiges Verzeichnis eingebunden werden und dieses Verzeichnis in der Konfigurationsdatei von WINE wieder dem Laufwerksbuchstaben C zugeordnet werden, da es sonst natuerlich zu Konflikten mit der vorhandenen Konfiguration bereits installierter Programme kommen kann. Ein Beispiel für die Zuordnung von UNIX-Verzeichnissen und Laufwerksbuchstaben in der Konfigurationsdatei wurde weiter oben bereits gebracht. Eine solche Definition besteht aus einem Block, dessen Name sich aus dem Schlüsselwort Drive und dem Buchstaben des Laufwerks zusammensetzt, für das die Definition gelten soll. Ein Beispiel wäre also [Drive C]. Darauf folgen verschiedene Variablen, mit denen die Eigenschaften des Laufwerkes festgelegt werden. Die wichtigste dieser Variablen ist Path. Hiermit wird bestimmt, welchem UNIX-Verzeichnis das Laufwerk entsprechen soll (Beispiele: "Path" = "/home/karl", "Path" = "%HOME%"). Die weiteren Variablen haben die folgende Bedeutung: Type Windows kann Anwendungen mitteilen, von welchem Typ (Festplatte, CDROM usw.) ein bestimmter Datenträger ist. Mit dieser Variablen wird WINE mitgeteilt, welchen Typ das entsprechende Laufwerk haben soll. Mögliche Werte sind floppy (Diskettenlaufwerk), hd (Festplattenpartition), cdrom (CDROM-Laufwerk) und network (Netzwerklaufwerk). Im allgemeinen empfiehlt es sich, hier den Typ anzugeben, der dem UNIX-Verzeichnis, welches dem Laufwerk zugeordnet ist, entspricht. Beispiel: "Type" = "floppy". Label Unter DOS und Windows können Laufwerke eine so genannte Datenträgerbezeichnung haben. Diese Bezeichnung kann von Windows-Anwendungen abgefragt werden. Mit dieser Variable kann angegeben werden, welchen Datenträgerbezeichnung WINE zurückliefern soll, falls eine Anwendung diese für das Laufwerk abfragt. Die Datenträgerbezeichnung darf aus nicht mehr als 11 Buchstaben bestehen. Beispiel: "Label" = "Platte1". Serial Jedes Laufwerk hat unter Windows eine so genannte Seriennummer, die ebenfalls von Windows-Programmen abgefragt werden kann. Mit dieser Variablen lässt sich in Form eine acht-stelligen hexadezimalen Zahl angeben, welche Seriennummer in solchen Fällen zurückgeliefert werden soll. Beispiel: "Serial" = "23f78a6b". Filesystem Hiermit wird bestimmt, welche Eigenschaften das emulierte Dateisystem auf dem betreffenden Laufwerk haben soll. Es sind die folgenden Werte möglich: msdos Auf dem Laufwerk sind nur Dateinamen mit einer Länge von acht Zeichen und einer Erweiterung, die aus drei Zeichen besteht, zugelassen. Unterschiede in Groß- und Kleinschreibung werden nicht berücksichtigt. Alternativ für msdos können die Bezeichnungen dos oder fat für diesen Dateisystemtyp benutzt werden. win95 Auf dem Laufwerk sind lange Dateinamen zugelassen. DOS und 16bit-Windowsprogramme können jedoch weiterhin kurze Dateinamen benutzen. Unterschiede in Groß- und Kleinschreibung werden nicht berücksichtigt. Dies ist die empfohlenen Einstellung für fast alle Anwendungen. Alternativ für win95 kann dieser Dateisystemtyp auch als vfat bezeichnet werden. unix Das Dateisystem auf dem Laufwerk verhält sich ähnlich wie ein typisches UNIX-Dateisystem, d.h. Dateinamen können die normalerweise erlaubte Länge haben und die Groß- und Kleinschreibung ist bedeutsam. Mit dieser Einstellung kommen die meisten Windows-Programme nicht zurecht. Probleme treten beispielsweise dann auf, wenn ein Windows-Programm eine Datei zunächst unter dem Namen Daten speichert und dann unter dem Namen DATEN wieder öffnen will. Achtung: Es ist zu beachten, dass mit dieser Einstellung nicht angegeben wird, welche Eigenschaften das zugrunde liegende UNIX-Dateisystem hat, sondern welche Eigenschaften von WINE für das entsprechende Laufwerk emuliert werden sollen. Es ist also durch aus möglich (und in den meisten Fällen erforderlich) für ein Laufwerk, das sich auf einem UNIX-Dateisystem befindet, die Einstellung win95 zu verwenden. Falls es sich bei dem Datenträger, auf dem sich das dem Laufwerk zugeordnete Verzeichnis befindet, allerdings um ein FAT-Dateisystem handelt, welches mit dem FAT-Treiber von Linux (und nicht, wie üblich, mit dem VFAT-Treiber) betrieben wird, dann muss hier der Dateisystemtyp msdos benutzt werden, weil es sonst passieren könnte, dass WINE versucht, auf dem betreffenden Datenträger Dateien mit langen Namen anzulegen, was dann zu einem Fehler führen würde. Beispiel: "Filesystem" = "win95". Device In besonderen Fällen ist es notwendig, dass die Windows-Programme direkt, also unter Umgehung des Dateisystems, auf den Datenträger schreiben oder von ihm lesen. Damit dies auch mit WINE möglich ist, kann hier der Name der Gerätedatei angegeben werden, welcher den Datenträger unter Linux repräsentiert. Dies ist nur dann sinnvoll, wenn das dem betreffenden Laufwerk zugeordnete Verzeichnis dem Mountpunkt des hier angegebenen Datenträgers entspricht. Der direkte Gerätezugriff sollte normalerweise nur für solche Datenträger gestattet werden, deren Inhalt nicht besonders geschützt werden muss (u.U. Disketten) oder von denen ohnehin nur gelesen werden kann (z.B. CDROMs). Damit auf den Datenträger geschrieben werden kann, ist es zusätzlich natürlich notwendig, dass die Rechte an der betreffenden Gerätedatei ausreichend sind. Beispiel: "Device" = "/dev/fd0". FailReadOnly Eine Reihe von Windows-Programmen öffnen Dateien prinzipiell zum Lesen und Schreiben, auch wenn aus den betreffenden Dateien lediglich gelesen werden soll. Dieses Verhalten führt normalerweise dazu, dass Dateien, in die von WINE nicht geschrieben werden darf oder die sich auf Datenträgern befinden, auf die nicht geschrieben werden kann (etwa CDROMs), nicht geöffnet werden können. Aus diesem Grund öffnet WINE Dateien standardmäßig zum Lesen, falls eine Datei nicht zum Lesen und zum Schreiben geöffnet werden konnte. Wenn die Variable FailReadOnly auf den Wert true gesetzt wird, verhält sich WINE so wie unter UNIX üblich und liefert eine Fehlermeldung an das Windows-Programm, falls eine Datei nicht zum Schreiben geöffnet werden kann. In der Regel empfiehlt es sich, hier die Standardeinstellung zu übernehmen. Beispiel: "FailReadOnly" = "true". ReadVolInfo Wenn der Wert dieser Variablen auf true gesetzt ist, versucht WINE, die Seriennummer und die Datenträgerbezeichnung des betreffenden Laufwerks direkt von dem Datenträger zu lesen. Dazu muss dem Laufwerk eine Gerätedatei zugeordnet sein (Variable device). Diese Einstellung ist vor allem für solche Programme sinnvoll, die nur dann funktionieren, wenn sich beispielsweise die richtige CDROM im Laufwerk befindet und die dies anhand der Seriennummer oder der Datenträgerbezeichnung feststellen. Beispiel: "ReadVolInfo" = "true" 7.3 Allgemeine Einstellungen Im Abschnitt [wine] der Konfigurationsdatei werden die wichtigsten allgemeinen Einstellungen vorgenommen. Im wesentlichen handelt es sich dabei um Verzeichnisangaben. Es ist zu beachten, dass diese Verzeichnisangaben in der unter DOS und Windows üblichen Weise zu erfolgen haben. D.h., jedem Verzeichnis muss ein Laufwerksbuchstabe vorangestellt werden. Laufwerksbuchstaben und Verzeichnis werden durch einen Doppelpunkt voneinander getrennt, außerdem werden einzelne Verzeichnisse nicht durch einen normalen Schrägstrich, sondern durch einen umgekehrten Schrägstrich (Backslash) voneinander separiert. Die Angaben werden durch die im vorherigen Abschnitt beschriebenen Zuordnungen von Laufwerksbuchstaben in UNIX-Dateinamen übersetzt. Windows Unter Windows spielt das Windows-Verzeichnis eine besondere Rolle. Programme legen hier oft Initialisierungsdateien ab und Installationsprogramme kopieren gelegentlich verschiedene Dateien in dieses Verzeichnis. Mit der Variablen Windows wird eingestellt, welches Verzeichnis von den unter WINE ausgeführten Programmen als Windows-Verzeichnis behandelt werden soll. Das hier angegebene Verzeichnis muss existieren, bevor WINE das erste Mal gestartet wird. Wenn WINE eine bestehende Windows-Installation verwenden soll, muss hier das Verzeichnis angegeben werden, in dem sich die Installation befindet. Falls WINE mit einer existierenden Windows-Installation verwendet werden soll und diese Installation sich auf der Festplattenpartition befindet, die unter Windows den Laufwerksbuchstaben C: trägt und unter Linux durch die Gerätedatei /dev/hda1 repräsentiert wird, so könnte diese Partition beispielsweise unter Linux beispielsweise in das Verzeichnis /Windows eingebunden werden. Diesem Verzeichnis wäre dann im Abschnitt, welcher die Laufwerksbuchstabenkonfiguration enthält der Laufwerksbuchstabe C: zuzuordnen: [Drive C] "Path" = "/Windows" "Type" = "hd" "Label" = "windows" "Filesystem" = "win95" Wenn weiter der Name des Windows-Verzeichnisses dieser Installation windows lautet (unter Windows also C:\windows und unter Linux /Windows/windows), so wäre im Abschnitt [wine] der Konfigurationsdatei folgende Angabe vorzunehmen: "Windows" = "C:\\Windows" Soll WINE jedoch ohne existierende Windows-Installation benutzt werden, so kann ein beliebiges Verzeichnis als Wurzelverzeichnis für das Laufwerk dienen, welches das Windows-Verzeichnis beinhaltet, beispielsweise könnte hierfür das Verzeichnis /Windows angelegt werden. In diesem Verzeichnis müsste nun das Windows-Verzeichnis erzeugt werden, welches daraufhin wie oben beschrieben im Abschnitt [wine] als Windows-Verzeichnis deklariert werden müsste. System Das System-Verzeichnis hat eine ähnliche Bedeutung wie das Windows-Verzeichnis. Unter Windows befinden sich in diesem Verzeichnis im wesentlichen die Programmbibliotheken, es ist normalerweise ein Unterverzeichnis des Windows-Verzeichnisses. Dieses Verzeichnis muss ebenfalls existieren, bevor WINE das erste Mal gestartet wird. Auch hier muss das System-Verzeichnis der bestehenden Windows-Installation angegeben werden, falls eine solche benutzt werden soll. Unter Windows 95/98 trägt dieses Verzeichnis normalerweise den Namen system und unter Windows NT den Namen system32. Beispiel: "System" = "C:\\Windows\\System". Temp Das Temp-Verzeichnis wird von vielen Windows-Programmen dazu benutzt, temporäre Dateien abzulegen. Damit dies gelingt, muss hier ein Verzeichnis angegeben werden, welches sich auf einem Laufwerk befindet, das einem UNIX-Verzeichnis entspricht, in dem Schreibberechtigung besteht. Beispiel: "Temp" = "D:\\tmp". Path Diese Variable hat die gleiche Bedeutung wie die Umgebungsvariable PATH unter UNIX. Ihr Wert besteht aus einer Kette einzelner Verzeichnisnamen, die nach einem auszuführenden Programm durchsucht wird, wenn der Name eines solchen Programms nicht mit Verzeichnisnamen angegeben wurde. Es ist zu beachten, dass die einzelnen Elemente diese Variable unter Windows nicht durch einen Doppelpunkt sondern durch ein Semikolon voneinander getrennt werden, außerdem erwarten viele Windows-Programme, dass das Windows- und das System-Verzeichnis in dieser Variablen enthalten sind. Beispiel: "Path" = "C:\\Windows;C:\\Windows\\System;D:\\Winstuff". Profile Diese Variable wird von WINE benutzt, um den benutzerspezifischen Teil der Systemregistratur einer bestehenden Windows-Installation zu laden. Falls es sich bei der bestehenden Installation um Windows 95/98 handelt, das nicht mit mehreren Benutzern betrieben wird oder ohne eine bestehende Windows-Installation gearbeitet werden soll, braucht die Variable Profile nicht gesetzt zu werden. Wenn jedoch eine Windows NT- oder eine Windows 95/98-Installation mit mehreren Benutzern eingesetzt wird, muss hier angegeben werden, aus welchem Verzeichnis WINE die benutzerspezifische Registrationsdaten laden soll. Diese Verzeichnisse befinden sich normalerweise im Unterverzeichnis Profiles des Windows-Verzeichnis und tragen den Namen des Benutzers, dessen Konfigurationsdaten sie beherbergen. Beispiel: "Profile" = "C:\\Windows\\Profiles\\Peter". GraphicsDriver WINE kann unterschiedliche Treiber für die graphische Ausgabe verwenden. Welcher Treiber zu verwenden ist, wird mit dieser Variablen festgelegt. Zur Zeit stehen zwei Treiber zur Verfügung, nämlich x11drv für die Verwendung des X Window Systems und ttydrv für die Verwendung von WINE an der Konsole. Der Treiber ttydrv ist zur Zeit nicht voll funktionsfähig, weswegen sich hier nur die Verwendung des Treibers x11drv empfiehlt, dies ist auch die Standardeinstellung, wenn die Variable nicht gesetzt wird. Beispiel: "GraphicsDriver" = "x11drv". 7.4 Konfiguration der zu verwendenden Bibliotheken Wie UNIX/Linux-Programme bestehen Windows-Programme in der Regel aus der eigentlichen Programmdatei und einer Reihe von Programmbibliotheken, die beim Laden des Programms oder später mit dem Programm verbunden werden. Eine Reihe der Programmbibliotheken unter Windows stellt dabei gleichzeitig die Schnittstelle zum Betriebssystem dar. Neben dem eigentlichen Windows-Programm werden also die Bibliotheken benötigt, um das Programm ausführen zu können. WINE stellt eine große Anzahl der normalerweise unter Windows verfügbaren Bibliotheken zur Verfügung. Diese Bibliotheken liegen entweder in Form eigener Dateien vor, welche sich standardmäßig im Verzeichnis /usr/local/lib befinden, oder sie sind direkt in der Programmdatei wine enthalten. WINE ist jedoch auch in der Lage, die normalen Windows-Bibliotheken zu verwenden; dies ist beispielsweise dann notwendig, wenn von einem Programm eine Bibliothek benötigt wird, bei der es sich nicht um eine standardmäßige Windows-Bibliothek handelt, sondern um eine, die dem System während der Installation des betreffenden Programms hinzugefügt worden ist. Solche Bibliotheken werden normalerweise nicht von WINE zur Verfügung gestellt. Falls WINE mit einer bestehenden Windows-Installation benutzt wird, bietet es sich u.U. an, in einigen Fällen an Stelle der von WINE zur Verfügung gestellten Bibliotheken die Bibliotheken der Windows-Installation zu verwenden. Diese sind in vielen Fällen vollständiger und können dem auszuführenden Programm deswegen eher die erwartete Funktionalität zur Verfügung stellen. Dabei ist jedoch zu beachten, dass dies nur mit solchen Bibliotheken möglich ist, die keine Betriebssystemfunktionen beinhalten. Bibliotheken, die lediglich einfachen Programmcode, wie beispielsweise den für häufig benötigte Dialoge, beinhalten, können hingegen problemlos aus einer bestehenden Windows-Installation benutzt werden. Die meisten Bibliotheken stehen unter Windows (95/98) in zwei verschiedenen Versionen zur Verfügung, einer 32Bit-Version, die von 32Bit-Programmen geladen werden kann und einer 16Bit-Version, die von 16Bit-Programmen benutzt werden kann. Beide Versionen benutzen in der Regel Programmcode aus der jeweils zugehörigen anderen Version (Unter Windows 95/98 befindet sich die eigentliche Funktionalität meist in den 16Bit-Bibliotheken, die von den 32Bit-Versionen geladen und aufgerufen werden). Deswegen ist es erforderlich, dass immer jeweils beide Versionen einer Bibliothek als Windows- oder als WINE-Bibliothek geladen werden, andere Einstellungen führen in der Regel direkt nach dem Aufruf von WINE zu Fehlern. Die folgende Tabelle zeigt, welche der wichtigsten 16- und 32-Bit Bibliotheken zusammen gehören und gibt Auskunft darüber, ob diese Bibliotheken aus einer bestehenden Windows-Installation geladen werden können oder unbedingt von WINE zur Verfügung gestellt werden müssen. Es wird jeweils zunächst die 16-Bit Version und dann die 32-Bit Version genannt. krnl386 kernel32 Diese Bibliothek stellt die Schnittstelle zu den grundlegenden Funktionen, wie Dateizugriff, Ein- und Ausgabe oder Prozesssynchronisation, von Windows-Betriebssystemen zur Verfügung. Deswegen können hier nicht die Bibliotheken einer Windows-Installation benutzt werden. - ntdll Diese Bibliothek enthält die Schnittstelle zu dem Betriebssystem Windows NT. Es muss deswegen die WINE-Version benutzt werden. - advapi32 Hier befinden sich u.a. Funktionen zum Zugriff auf die Windows-Registratur sowie Sicherheitsfunktionen und kryptographische Funktionen. In der Regel empfiehlt es sich, WINEs Version dieser Bibliothek zu verwenden. winsock wsock32 Hier befindet sich die Internet Protokoll (IP) Schnittstelle von Windows. Mit WINE wird die IP-Funktionalität des Betriebssystems (Linux) benutzt, so dass hier die WINE-Versionen dieser Bibliotheken benutzt werden müssen, welche die IP-Aufrufe von Windows-Programmen an Linux weiterleiten. gdi gdi32 GDI steht für Graphics Device Interface. Die Bibliothek stellt eine einheitliche Schnittstelle zur Bildschirmausgabe und zu Druckern dar. Auch hier müssen die WINE-Versionen benutzt werden. user user32 User stellt u.a. Funktionen zur Fensterverwaltung, zu Menüs oder zur Bedienung der Zwischenablage bereit. Die Windows 95/98 Versionen dieser Bibliotheken konnten früher unter bestimmten Bedingungen mit WINE benutzt werden. Die USER-Bibliotheken von Windows NT rufen in der Regel Funktionen im NT-Kernel auf und können deswegen nicht mit WINE benutzt werden. Es empfiehlt sich, die User-Bibliotheken von WINE zu verwenden. lzexpand lz32 Diese beiden Bibliotheken stellen Funktionen zum Dekomprimieren von LZ-Archiven zur Verfügung. Solche Funktionen werden im wesentlichen von Installationsprogrammen benötigt. Die zu Windows gehörenden Versionen dieser Bibliotheken benutzen einige Funktionen aus der Kernel-Bibliothek, die in WINE zur Zeit nicht implementiert sind. Es müssen deswegen die von WINE bereitgestellten Versionen benutzt werden. commctrl comctl32 Diese Bibliothek (common controls) stellt Funktionen zur Erzeugung oft benutzter Fensterelemente, wie Werkzeugleisten oder Statusanzeigen, zur Verfügung. Es können sowohl die Version von WINE als auch die Windows-Version der Bibliothek benutzt werden. commdlg comdlg32 Hier befinden sich komplette Dialoge, die oft von Windows-Programmen benutzt werden (Farbauswahl, Auswahl der Schriftart, Suchen und Ersetzen usw.). Auch hier können wahlweise die Windows- oder WINE-Versionen benutzt werden. shell shell32 Die Shell-Bibliothek beinhaltet den größten Teil der Benutzerschnittstellen von Windows. Sie wird unter Windows besonders vom Explorer (dem Dateimanager) und vielen anderen Anwendungen benutzt, die Funktionen wie beispielsweise Drag-and-Drop unterstützen. Prinzipiell kann sowohl die Windows- als auch die WINE-Version benutzt werden. - crtdll Dies ist die standardmäßige C-Laufzeitbibliothek von Windows. Zur Zeit ist die Windows-Version vollständiger, weswegen einige Programme mit der WINE-Version nicht richtig funktionieren. Neben den hier genannten wichtigsten Systembibliotheken stellt WINE eine Reihe weiterer Bibliotheken zur Verfügung, beispielsweise zur Unterstützung von Multimedia-Anwendungen. Falls eine Windows-Installation zur Verfügung steht, empfiehlt es sich in vielen Fällen, auszuprobieren, ob ein Programm besser mit den WINE-Versionen oder den Windows-Versionen dieser Bibliotheken funktioniert. In der Datei ~/.wine/config gibt es zwei Abschnitte, mit denen bestimmt wird, welche Bibliotheken aus einer Windows-Installation geladen werden sollen. Darüberhinaus können diese Einstellungen beim Aufruf von WINE an der Kommandozeile überschrieben werden. Im allgemeinen empfiehlt es sich, die Einstellungen in der Beispielversion der Konfigurationsdatei (documentation/samples/config) zu übernehmen und diese nur dann zu verändern, falls bestimmte Programme mit den Voreinstellungen nicht richtig funktionieren. Falls die Bibliotheken einer Windows-Installation benutzt werden sollen, ist darauf zu achten, dass diese auch von WINE gefunden werden können. Dies setzt in der Regel voraus, dass mit den Variablen Windows und System im allgemeinen Teil der Konfiguration auf das Windows- bzw. das Systemverzeichnis einer gültigen Windows-Installation gezeigt wird und dass diese beiden Verzeichnisse im Wert der Variablen Path genannt werden. Im Abschnitt [DllDefaults] können die folgenden beiden Einstellungen vorgenommen werden: DefaultLoadOrder Hiermit wird bestimmt, welche Reihenfolge WINE standardmäßig benutzen soll, wenn versucht wird, eine Bibliothek zu laden. Diese Reihenfolge wird durch die folgenden Schlüsselwörter definiert: native Es soll versucht werden, die Windows-Version der betreffenden Bibliothek zu laden. builtin Es soll versucht werden, die WINE-Version der betreffenden Bibliothek zu laden. elfdll Elfdlls sind eine besondere Form von Windows-Bibliotheken, welche von WINE zur Verfügung gestellt werden. Sie sind ursprünglich geplant worden, um die eingebauten Bibliotheken abzulösen, allerdings haben die eingebauten Bibliotheken mit der Zeit viele der für Elfdlls geplanten Funktionen bekommen, so dass diese Form von Bibliotheken zur Zeit keine besondere Bedeutung hat. so In einigen Fällen gibt es von einer Bibliothek Linux- und Windows-Versionen, die sich sowohl hinsichtlich ihrer Funktionalität als auch hinsichtlich der aufrufbaren Funktionen in der Bibliothek nicht unterscheiden. Falls ein Windows-Programm die Windows-Version einer solchen Bibliothek laden will, kann WINE versuchen, an Stelle dessen die Linux-Version zu laden und die Funktionen dieser Version an Stelle der in der Windows-Version aufrufen. Mit dem Schlüsselwort so kann dieses Verhalten hervorgerufen werden. Durch die Reihenfolge, mit der diese Schlüsselwörter der Variablen DefaultLoadOrder zugeordnet werden, wird festgelegt, in welcher Reihenfolge WINE die einzelnen Strategien benutzt. Wurde beispielsweise "DefaultLoadOrder" = "native, builtin, so" angegeben, so versucht WINE, wenn eine Bibliothek geladen werden muss, zunächst die Windows-Version zu laden. Wenn dies nicht funktioniert (in der Regel, weil die Bibliothek nicht vorhanden ist oder nicht gefunden werden kann), wird versucht, die WINE-Version der Bibliothek zu verwenden und falls auch eine solche nicht vorhanden ist, wird versucht, direkt die UNIX-Version der entsprechenden Bibliothek zu laden. Im Abschnitt [DllOverrides] lässt sich das im vorherigen Abschnitt spezifizierte Verhalten für einzelne Bibliotheken wieder überschreiben. Während es nämlich im allgemeinen eine gute Strategie ist, zunächst zu versuchen, die Windows-Versionen von Bibliotheken zu laden, darf dies (wie oben beschrieben) bei bestimmten Bibliotheken auf keinen Fall geschehen und es müssen in jedem Fall die WINE-Versionen benutzt werden. Als Variablen werden in diesem Abschnitt die Bibliotheken genannt, für die eine spezielle Reihenfolge gelten soll. Hinter dem Gleichheitszeichen wird dann die für diese Bibliotheken gewünschte Reihenfolge in der gleichen Form angegeben, wie es im vorherigen Abschnitt beschrieben ist. Beispiel: [DllOverrides] "krnl386, kernel32" = "builtin" "gdi, gdi32" = "builtin" "user, user32" = "builtin" "shell,shell32" = "native, builtin" 7.5 Konfiguration des X11 Graphiktreibers Der X11 Graphiktreiber stellt die Schnittstelle zwischen den Graphikfunktionen der Windows-Betriebssysteme und dem X Window System dar. Er ermöglicht es also, dass Windows-Programme unter WINE das X Window System ähnlich benutzen können, wie sie unter echtem Windows eine normale Graphikkarte benutzen. Das Verhalten des Treibers wird im Abschnitt x11drv der Konfigurationsdatei eingestellt. Dort stehen die folgenden Variablen zur Verfügung: PrivateColorMap Wenn diese Variable auf true gesetzt ist, verwendet WINE eine eigene Farbpalette. Bei X-Servern die mit eine Farbtiefen von 256 Farben (8bpp) oder weniger betrieben werden, hat das zur Folge, dass andere Fenster u.U. in falschen Farben dargestellt werden, wenn zu WINE gehörende Fenster in den Vordergrund geschaltet sind. Dafür kann WINE jedoch Farben besser darstellen als ohne diese Einstellung. Falls der X Server mit einer Farbtiefe von mehr als 256 Farben betrieben wird, ist die Einstellung wirkungslos. AllocSystemColors Wenn WINE keine eigene Farbpalette verwendet, kann hier angegeben werden, wieviele Farben von der systemweit geteilten Palette maximal von WINE benutzt werden dürfen. Der höchstmögliche Wert ist hier 256, weil bei besseren Farbtiefen keine Palette benutzt wird. Beispiel: "AllocSystemColors" = "100". PerfectGraphics An einigen Stellen hat WINE die Möglichkeit, Graphikoperationen entweder so durchzuführen, dass sie besonders schnell sind oder so, dass sie besonders korrekt ausgeführt werden. Wenn diese Variable auf den Wert true gesetzt wird, wird der Genauigkeit Vorzug gegeben. Beispiel: "PerfectGraphics" = "false". UseDGA DGA (Direct Graphics Access) ist eine Erweiterung von XFree86, welche den direkten Zugriff auf den Speicher der Graphikkarte ermöglicht. Dadurch lassen sich Graphikoperationen wesentlich schneller durchführen als normalerweise. Die DirectDraw-Bibliothek (DirectX) von WINE kann diese Erweiterung benutzen, wodurch sich insbesondere Spiele mit einer ähnlichen Geschwindigkeit wie unter Windows ausführen lassen. Weil DGA den direkten Hardwarezugriff erfordert, sind dazu in der Regel Administratorrechte erforderlich. Die Verwendung von DGA wird mit "UseDGA" = "true" ein- und mit "UseDGA" = "false" ausgeschaltet. Achtung: Anwendungen, die DirectDraw benutzen, versuchen normalerweise den Bildschirm in eine bestimmte Auflösung und Farbtiefe zu schalten. WINE kann die Auflösung zwar verändern, falls sich in der Datei XF86Config eine Definition für den angeforderten Modus befindet, weil das X Window System jedoch nicht den Wechsel der Farbtiefe unterstützt, ist es oft erforderlich, den X-Server in der benötigten Farbtiefe zu starten, bevor WINE gestartet wird. DXGrab Diese Option bewirkt, dass der Mauszeiger - bei der Verwendung von DirectDraw (DirectX) - das von DirectDraw gesteuerte Fenster nicht verlassen kann. Dies ist notwendig, um einige Programme richtig bedienen zu können, allerdings wird dadurch verhindert, mit der Maus in ein anderes Fenster zu schalten, beispielsweise um WINE zu beenden. Beispiel: "DXGrab" = "false". ScreenDepth Einige X-Server unterstützen unterschiedliche Farbtiefen auf dem selben Bildschirm. Mit dieser Variable kann ausgewählt werden, welche Farbtiefe in einem solchen Fall benutzt werden soll. Managed WINE kann von Windows-Programmen dargestellte Fenster u.a. unabhängig vom eingesetzten Window-Manager anzeigen oder sie unter die Kontrolle des Window-Managers stellen. Das zweite Verfahren bietet eine bessere Integration von Windows-Programmen in die Arbeitsumgebung unter Linux, weil die Fenster dann genauso wie die von Linux-Programmen erscheinen und zu steuern sind. Welcher der verfügbaren Anzeigemodi verwendet werden soll, wird normalerweise an der Kommandozeile beim Aufruf von WINE angegeben. Durch diese Variable in der Konfigurationsdatei lässt sich festlegen, ob von WINE gesteuerte Fenster standardmäßig den Window-Manager verwenden sollen ("Managed" = "true"). DesktopDoubleBuffered Diese Option sollte auf den Wert true gesetzt werden, wenn mit WINE Programme benutzt werden, die OpenGL benutzen. Hierdurch wird die Darstellung solcher Anwendungen verbessert. 7.6 Konfiguration der zu verwendenden Schriftarten Der X11-Graphiktreiber x11drv verwendet zur Darstellung von Schrift die Schriftarten, die dem X-Server direkt oder über einen Fontserver zur Verfügung stehen. Eine Reihe von Windows-Anwendungen erwarten allerdings ganz bestimmte Schriften, die unter Windows in der Regel verfügbar sind und viele Anwendungen werden anders als unter Windows dargestellt, falls andere Schriftarten benutzt werden müssen. Windows verwendet normalerweise zwei unterschiedliche Typen von Schriftarten, nämlich so genannten TrueType-Schriften und einfache Bitmap-Schriftarten. Beide Schrifttypen können von XFree86 in der Versionsfamilie 3.x standardmäßig nicht zur Verfügung gestellt werden. Allerdings ist es möglich, Windows-Bitmap-Schriftarten in ein Format zu übersetzen, welches von XFree86 eingebunden werden kann. TrueType-Schriftarten können über spezielle TrueType-Fontserver, die mittlerweile in den meisten Distributionen enthalten sind, eingebunden werden. Falls eine Windows-Installation zur Verfügung steht, empfiehlt es sich im allgemeinen, die dort vorhandenen Schriftarten auch unter Linux einzubinden, damit unter WINE ausgeführte Windows-Anwendungen die erwarteten Schriftarten vorfinden. Wenn WINE ohne Windows-Schriftarten benutzt wird, versucht das Programm, die angeforderten Schriften durch die Schriften des X Window Systems zu ersetzen, wodurch sich Veränderungen im Erscheinungsbild der Anwendungen ergeben können. 7.6.1 Einbinden von Bitmap-Schriften Windows Bitmap-Schriftarten befinden sich normalerweise im Unterverzeichnis fonts des Windows-Verzeichnisses und haben die Dateinamensendung .fon. Es ist aber auch möglich, dass sie in ausführbaren Dateien oder in Bibliotheken enthalten sind. Im Unterverzeichnis tools des Basisverzeichnisses mit dem WINE-Quellcode befindet sich das Programm fnt2bdf, mit dem die Fonts aus diesen Dateien extrahiert und in das Bitmap Distribution Format (.bdf) umgewandelt werden können. Dazu ist das Programm folgendermassen aufzurufen: fnt2bdf -o Basisname Schriftdatei Dabei ist für Schriftdatei der Name der Datei anzugeben, in der sich die zu extrahierenden Schriften befinden und für Basisname eine Bezeichnung, mit der die Namen der zu extrahierenden Dateien beginnen sollen. Es ist zu beachten, dass sich in der Regel in einer Windows-Schriftartendatei mehrere Schriftarten befinden, die in unterschiedliche Dateien extrahiert werden. Bei einigen Schriftarten ist es notwendig, dem Programm mitzuteilen, wie die Schriftarten kodiert sind. Hierzu ist die Option -c zu verwenden und dahinter die Bezeichnung der Kodierung anzugeben. Eine Übersicht über alle von dem Programm unterstützten Optionen wird ausgegeben, wenn es ohne Parameter aufgerufen wird. Um also beispielsweise die Bitmap-Schriften aus der Datei SERIFF.FON in Dateien zu extrahieren, deren Namen mit der Bezeichnung seriff beginnen, wäre das Programm so aufzurufen: fnt2bdf -o seriff SERIFF.FON Es werden dann eine Reihe von Dateien mit unterschiedlichen Fonts aus der Originaldatei erzeugt. Im nächsten Schritt sind diese Dateien mit dem Programm bdftopcf(1) in das so genannte Portable Compiled Format zu übersetzen. Dieses Programm sollte Bestandteil jeder X11-Installation sein und ist durch eine Manualseite dokumentiert. Um beispielsweise die Datei seriff_r400-23.bdf zu übersetzen und das Ergebnis in die Datei seriff_r400-23.pcf zu schreiben, könnte das Programm so aufgerufen werden: bdftopcf -o seriff_r400-23.pcf seriff_r400-23.bdf Die auf diese Weise erzeugten Dateien können nun in eines der, von dem X-Server oder einem Fontserver benutzten, Font-Verzeichnis kopiert werden. In diesem Verzeichnis ist danach der Befehl mkfontdir aufzurufen, damit der dort befindlich Fontindex neu erzeugt wird. Bevor die Schriften dann tatsächlich unter X zur Verfügung stehen und damit von WINE benutzt werden können, muss X neu gestartet oder der folgende Befehl an der Kommandozeile eingegeben werden: xset fp +rehash Im Unterverzeichnis tools des WINE-Quellcodeverzeichnisses befindet sich ein Shellskript mit dem Namen font_convert.sh, welches die oben genannten Schritte automatisch durchführt und alle unterhalb eines Verzeichnisses befindlichen Bitmap-Schriftarten automatisch konvertiert und installiert. 7.6.2 Einbinden von TrueType-Schriften Wie bereits erwähnt, können die X-Server von XFree86 in der Versionsfamilie 3.x keine TrueType-Schriften darstellen. Seit XFree86 4.0 hat sich dies allerdings geändert, so dass solche Schriften zukünftig problemlos unter X - und damit auch mit WINE - zur Verfügung gestellt werden können. Leider können über das X-Font-Protokoll nicht alle von manchen Windows-Programmen benötigten Informationen über TrueType-Fonts dargestellt werden, so dass manche Windows-Programme auch dann noch nicht richtig funktionieren, wenn die benötigten Fonts zur Verfügung gestellt worden sind. Mit XFree86 3.x bietet sich der Einsatz eines TrueType-Fontservers an. Zur Zeit stehen drei unterschiedliche solcher Programme zur Verfügung, nämlich: xfs-xtt (Debian-Paket: xfs-xtt), xfstt (Debian-Paket xfstt) und xfsft (im Internet unter der Adresse http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/ verfügbar). Der Autor hat mit dem Programm xfsft die besten Ergebnisse erzielt. Dieser Server lässt sich leicht konfigurieren und ist kompatibel zu herkömmlichen Fontservern, so dass nicht zwei verschiedene Fontserver auf einem Rechner ausgeführt werden müssen. Dieses Programm diente auch als Grundlage für die Integration der TrueType-Unterstützung in XFree86 4.0. Um die von einem Fontserver zur Verfügung gestellten Schriften zu verwenden, muss dem X-Server die Adresse des Fontservers mitgeteilt werden. Dies kann entweder in der Datei /etc/X11/XF86Config oder durch Eingabe dieses Befehls geschehen: xset fp+ tcp/localhost:7100 Dabei muss localhost u.U. gegen den Namen des Rechners ausgetauscht werden, auf dem der Fontserver ausgeführt werden und 7100 durch den Port, der vom Fontserver benutzt wird. Wenn der Fontserver auf dem selben Rechner ausgeführt wird wie der X-Server, dann können zur Kommunikation zwischen X-Server und Fontserver auch UNIX-Domain-Sockets benutzt werden. Der entsprechende Befehl könnte dann folgendermaßen aussehen: xset fp+ unix/:7100 7.6.3 Font-Einstellungen in der WINEs Konfigurationsdatei In der Konfigurationsdatei ~/.wine/config bzw. wine.conf stehen die folgenden Variablen zur Verfügung, mit denen WINEs Umgang mit Schriftarten beeinflusst werden kann: Resolution Unter Windows können Programme die Größe eines zu verwendenden Fonts in Punkten (an Stelle von Pixeln) angeben. Damit die Schriftart dann in der richtigen Größe angezeigt werden kann, muss die tatsächliche Größe des Bildschirms bekannt sein, was unter X nicht unbedingt der Fall ist. Mit der Variable Resolution kann deswegen justiert werden, welche Schriftgrößen in solchen Fällen von WINE ausgewählt werden. Der Standardwert ist 96, sinnvolle Werte liegen zwischen 60 und 120. Beispiel: "Resolution" = "100". Default Mit dieser Variable wird angegeben, welche Schriftart WINE als Standard verwenden soll. Die dabei anzugebende Zeichenkette besteht aus der Herstellerbezeichnung der zu verwendenden Schriftart und ihrem Namen, diese Bezeichnungen werden durch ein Minuszeichen miteinander verbunden, außerdem muss sich zu Beginn und am Ende der Zeichenkette ein Minuszeichen befinden. Die unter X11 verfügbaren Fonts können beispielsweise mit den Programmen xfontsel(1) oder xlsfonts(1) ausgewählt werden. Beispiel: "Default" = "-adobe-times-" DefaultFixed Hiermit wird festgelegt, welchen Font WINE als standardmäßige Schriftart mit gleichmäßiger Buchstabenbreite verwenden soll. Der Name der gewünschten Schrift ist wie bei der Variablen Default anzugeben. Beispiel: "DefaultFixed" = "-sony-fixed-" DefaultSerif Hiermit wird festgelegt, welchen Font WINE als standardmäßige Schriftart mit Serifen verwenden soll. Beispiel: "DefaultSerif" = "-adobe-times-" DefaultSansSerif Hiermit wird bestimmt, welchen Font WINE als standardmäßige Schriftart ohne Serifen verwenden soll. Beispiel: "DefaultSansSerif" = "-adobe-helvetica-" Fontmetric Wenn WINE das erste Mal gestartet wird, fragt es vom X-Server die Eigenschaften der verfügbaren Fonts ab. Weil diese Operation recht zeitaufwendig ist, wird das Ergebnis der Abfrage in einer Datei im Heimatverzeichnis des betreffenden Benutzers gespeichert. Die Abfrage braucht dann bei einem späteren Aufruf des Programms nur ausgeführt zu werden, falls sich die verfügbaren Fonts geändert haben. Mit dieser Variablen kann angegeben werden, in welcher Datei die Fontdaten zwischengespeichert werden sollen. Dadurch lässt sich beispielsweise vermeiden, dass die Abfrage für jeden Benutzer erneut ausgeführt werden muss. Beispiel: "Fontmetric" = "/var/lib/WINE/font.cache". Alias Wie weiter oben bereits angesprochen, kann es vorkommen, dass Windows-Anwendungen bestimmte Schriftarten benutzen wollen, die vom X-Server nicht zur Verfügung gestellt werden. Mit der Variable Alias können solchen Fontnamen anderen, unter X verfügbaren Schriftarten zugeordnet werden. Werte, die dieser Variablen zugeordnet werden, bestehen aus drei Elementen, die durch Kommata voneinander zu trennen sind. Das erste Element ist der Name der zu ersetzenden Schriftart, das zweite Element der Name der X Schriftart, in der Form, wie sie auch bei der Definition der Variablen Default anzugeben ist. Als drittes Element kann optional das Schlüsselwort subst angegeben werden. Dieses Schlüsselwort bewirkt, dass durch die Aliasdefinition eine bereits vorhandene Definition (die von WINE automatisch erstellt wurde) überschrieben wird. Weil es möglich ist, mehrere Alias-Definitionen vorzunehmen, muss der Variablenbezeichnung Alias jeweils eine Zahl nachgestellt werden, mit der angegeben wird, um die wievielte Alias-Definition es sich handelt. Dabei ist mit der Zahl Null zu beginnen, es darf keine Zahl ausgelassen werden. Beispiel: "Alias0" = "System, --international-, subst" 7.7 Konfiguration von Schnittstellen und Hardwarezugriff WINE kann Anwendungen den direkten Zugriff auf serielle und parallele Schnittstellen sowie auf weitere beliebige Ein- und Ausgabeadressen gestatten. Grundsätzlich ist dabei zu bedenken, dass der betreffende WINE-Prozess mit ausreichenden Privilegien ausgestattet sein muss, damit ein solcher Zugriff tatsächlich möglich wird. Wird WINE mit gewöhnlichen Benutzerrechten (und nicht mit den Privilegien des Administrators) ausgeführt, bedeutet dies in der Regel, dass die Zugriffsrechte auf die Gerätedateien, welche Geräte repräsentieren, auf die Windows-Programmen der Zugriff gestattet werden soll, überprüft werden müssen. Der direkte Zugriff auf Ein- und Ausgabeadressen ist unter Linux ausschließlich dem Administrator gestattet. Zur Konfiguration der seriellen Schnittstellen dient der Abschnitt [serialports] in der Konfigurationsdatei. Die einzelnen Variablen in diesem Abschnitt bezeichnen die seriellen Schnittstellen so wie es unter DOS und Windows üblich ist (Com1, Com2 usw.). Als Wert wird diesen Variablen der Name der Gerätedatei übergeben, welche die entsprechende Schnittstelle unter Linux repräsentiert. Falls also Windows-Anwendungen unter WINE über die Schnittstelle Com1 auf das Gerät zugreifen sollen, das unter Linux durch die Gerätedatei /dev/ttyS0 repräsentiert wird, so muss in der Konfigurationsdatei der folgende Abschnitt zu finden sein: [serialports] "Com1" = "/dev/ttyS0" Die Konfiguration paralleler Schnittstellen erfolgt analog zur Konfiguration serieller. Der Name des entsprechenden Abschnitts lautet [parallelports] und die Namen paralleler Schnittstellen unter DOS und Windows lauten Lpt1, lpt2 usw. Wenn also von Windows-Programmen unter WINE über den Namen Lpt1 auf die parallele Schnittstelle zugegriffen werden soll, welche unter Linux durch die Gerätedatei /dev/lp0 repräsentiert wird, so wäre in die Konfigurationsdatei dieser Abschnitt aufzunehmen. [parallelports] "Lpt1" = "/dev/lp0" Um den Zugriff auf bestimmte Ein- und Ausgabeadressen zu ermöglichen, sind die gewünschten Adressen in hexadezimaler Schreibweise im Abschnitt [ports] anzugeben. Als Adressen lassen sich entweder einzelne Adressen (Beispiel: 0x779) oder Adressbereiche angeben. Bei Adressbereichen werden die untere und obere Adresse des gewünschten Bereichs, verbunden durch einen Bindestrich, angegeben (Beispiel: 0x280-0x2a0). Wenn mehrere Adressen oder Adressbereiche konfiguriert werden sollen, sind diese hintereinander - durch Kommata getrennt - anzugeben. Adressen, von denen gelesen werden soll, sind der Variablen read zuzuordnen und solche, auf die geschrieben werden soll, der Variablen write. Falls auf eine bestimmte Adresse sowohl lesend als auch schreibend zugegriffen werden soll, ist sie beiden Variablen zuzuordnen. Beispiel: [ports] "read" = "0x378,0x379,0x220-0x2a0" "write" = "0x379,0x220-0x2a0" 7.7.1 Zugriff auf SCSI-Geräte WINE ermöglicht auch den direkten Zugriff auf SCSI-Geräte (über die ASPI-Schnittstelle). Hierzu sind keine speziellen Angaben in der Konfiguration notwendig, allerdings muss der Kernel des Systems so konfiguriert worden sein, dass er die Unterstützung für generischen SCSI-Zugriff enthält. Außerdem müssen die Gerätedateien, welche die generischen SCSI-Geräte repräsentieren (normalerweise /dev/sg0, /dev/sg1 usw.) mit ausreichenden Rechten für den Zugriff ausgestattet sein. 7.8 Konfiguration der Windows-Systemregistratur Windows-Betriebssysteme stellen eine Datenbank zur Verfügung, in der Programme u.a. Konfigurationsdaten ablegen und später wieder auslesen können. Diese so genannte Registratur wird von WINE ebenfalls bereitgestellt. WINE ist ferner in der Lage, die Registratur einer bestehenden Windows-Installation zu importieren, damit den mit WINE ausgeführten Programmen alle Daten zur Verfügung stehen, die auch unter Windows verfügbar sind. Dies ist insbesondere dann von Bedeutung, wenn Programme unter Windows installiert worden sind und unter WINE ausgeführt werden. Es ist zu beachten, dass WINE die Registratur einer bestehenden Windows-Installation niemals verändert. Falls Programme also unter WINE Daten in die Registratur schreiben, stehen diese unter Windows nicht zur Verfügung. WINE speichert die Registratur vielmehr in eigenen Dateien, welche sich üblicherweise unterhalb des Heimatverzeichnisses des betreffenden Benutzers befinden. Neben den benutzerspezifischen Registraturdaten können vom Administrator systemweit gültige Dateien bereit gestellt werden. Diese befinden sich üblicherweise in dem gleichen Verzeichnis wie die systemweit gültige Konfigurationsdatei, also in /etc oder in /usr/local/etc, wenn WINE mit den Standardeinstellungen übersetzt wurde. Im Abschnitt [registry] der Konfigurationsdatei stehen die folgenden Variablen zur Verfügung, mit denen u.a. bestimmt werden kann, ob eine bestehenden Registratur importiert werden soll und wo WINE die eigene Registratur ablegen soll. LoadGlobalRegistryFiles Wenn diese Variable auf den Wert true gesetzt ist, liest WINE die systemweit gültigen Registraturdaten ein. Dies ist die Standardeinstellung. Beispiel: "LoadGlobalRegistryFiles" = "true" LoadHomeRegistryFiles Wenn diese Variable auf den Wert true gesetzt ist, liest WINE die Registraturdaten aus dem Verzeichnis .wine im Heimatverzeichnis des aufrufenden Benutzers ein. Die Registraturdaten des Benutzers werden nach den systemweit gültigen Daten geladen, so dass Benutzer die Voreinstellungen aus der globalen Registratur mit eigenen Werten überschreiben können. Beispiel: "LoadHomeRegistryFiles" = "true" LoadWindowsRegistryFiles Mit dieser Variablen wird bestimmt, ob die Registratur einer bestehenden Windows-Installation geladen werden soll. Wenn die Variable auf den Wert true gesetzt ist, stellt WINE selbstständig fest, um welche Version von Windows es sich bei der bestehenden Installation handelt und liest die Registraturdaten der Installation ein. Es ist zu beachten, dass dies nur funktioniert, wenn das Windows- und das Systemverzeichnis im allgemeinen Teil der Konfigurationsdatei richtig angegeben worden sind und der bestehenden Installation entsprechen. Außerdem ist es u.U. notwendig, die Variable Profile im allgemeinen Teil richtig zu setzen. Beispiel: "LoadWindowsRegistryFiles" = "true". WriteToHomeRegistryFiles Wird diese Variable auf den Wert true gesetzt, versucht WINE alle Änderungen, die während der Laufzeit von WINE an der Registratur vorgenommen werden, in die Registraturdateien im Verzeichnis .wine des aufrufenden Benutzers zu schreiben. Dies ist in der Regel notwendig, damit Windows-Programme (insbesondere Installationsprogramme) Änderungen an der Konfiguration abspeichern können. Beispiel: "WriteToHomeRegistryFiles" = "true". PeriodicSave Wenn Veränderungen an der Registratur von WINE gespeichert werden sollen, geschieht dies normalerweise automatisch, während WINE beendet wird. Allerdings werden die Änderungen dann nicht gespeichert, wenn WINE aufgrund eines Fehlers nicht korrekt beendet werden kann. Deswegen ist es möglich, mit dieser Variablen anzugeben, in welchem Zeitintervall das Programm die Registratur automatisch sichern soll. Die dieser Variablen übergebene Zahl wird als Zeitintervall in Sekunden interpretiert. Damit die Registratur also beispielsweise alle 10 Minuten automatisch abgespeichert wird, wäre diese Variable so zu setzen: "PeriodicSave" = "600". SaveOnlyUpdatedKeys Mit dieser Variablen kann bestimmt werden, ob WINE lediglich solche Teile der Registratur sichern soll, die sich während der Laufzeit verändert haben oder ob immer die gesamte Registratur gespeichert werden soll. Das folgende Beispiel speichert die Registratur komplett: "SaveOnlyUpdatedKeys" = "false". Hinweis: Weil das Importieren einer großen Windows-Registratur ein relativ zeitaufwendiger Vorgang ist, empfiehlt es sich, die Windows-Registratur nur beim ersten Start von WINE zu importieren ("LoadWindowsRegistryFiles" = "true") und diese dann komplett von WINE speichern zu lassen ("SaveOnleUpdatedKeys" = "false"). Danach liegt die Registratur vollständig in WINEs eigenem Format vor, so dass bei späteren Starts von WINE auf den Import der Windows-Registratur verzichtet werden kann ("LoadWindowsRegistryFiles" = "false"). 7.9 Einstellung des Look and Feel Im Abschnitt Tweak.Layout der Konfiguration lässt sich durch die Variable WINELook bestimmen, welches Look and Feel von Windows durch WINE nachempfunden werden soll. Der Wert Win31 bewirkt, dass WINE alle Fensterelemente in dem Erscheinungsbild erzeugt, wie es von Windows 3.11 bekannt ist. Analog dazu bewirken die Werte Win95 und Win98 ein moderneres Erscheinungsbild. Beispiel: [Tweak.Layout] "WINELook" = "Win98" 7.10 Konfiguration der Windows-Console Im Gegensatz zu 16-Bit-Windows-Versionen ist es mit dem Win32 API wie unter UNIX möglich, Programme für den Textmodus zu erstellen, die unter Windows normalerweise in einem so genannten "MS-DOS-Fenster" ausgeführt werden (obwohl diese Programme nicht viel mit MS-DOS zu tun haben). Unter WINE verwenden solche Programme standardmäßig die Standardeingabe und -Ausgabe des Terminals, von dem aus WINE gestartet wurde. Im Abschnitt [Console] der Konfigurationsdatei ist es möglich, die Eigenschaften der Konsole für Windows-Programme näher zu bestimmen. Drivers Hiermit wird festgelegt, wie die Konsole zur Verfügung gestellt werden soll. WINE kann dazu das mit dem WINE-Prozess verbundene Terminal verwenden oder für jedes Windows-Programm, welches eine neue Konsole anfordert, ein neues Terminalfenster (wie z.B. xterm) starten. Im allgemeinen ist es zu empfehlen, für jede Konsole ein eigenes Terminalfenster zu verwenden, weil es zu unerwünschten Nebeneffekten kommen kann, wenn verschiedene Windows-Prozesse und WINE selbst das selbe Terminal verwenden. Es ist ferner möglich, die ncurses-Bibliothek zu benutzen, um bestimmte Eigenschaften, wie die Darstellung unterschiedlicher Farben, zu benutzen. Der Variablen Drivers kann zur Zeit eine Kombination aus den folgenden Schlüsselwörtern übergeben werden: tty, xterm und ncurses. Wenn mehrere diese Schlüsselwörter benutzt werden, sind diese durch das Plus-Zeichen voneinander zu trennen. Die Angabe tty bewirkt, dass WINE das Terminal für die Konsole verwendet, mit welchem der WINE-Prozess verbunden ist. Durch die Angabe xterm wird ein neues Terminalfenster geöffnet, wenn ein Windows-Programm eine neue Konsole anfordert. Die Angabe ncurses bewirkt, dass die ncurses-Bibliothek benutzt wird. Dies funktioniert nur, wenn die Unterstützung dafür beim Übersetzen des Programms aktiviert wurde. Beispiel: "Drivers" = "ncurses+xterm" XtermProg Hiermit lässt sich angeben, welches Programm aufgerufen werden soll, um die Konsole in einem eigenen Fenster darzustellen (z.B. bei "Drivers" = "xterm"). Es lassen sich alle Terminalemulationsprogramme verwenden, welche die von xterm her bekannten Kommandozeilenargumente verstehen. Beispiel: "XtermProg" = "wterm". InitialRows Mit der Variablen wird angegeben, wieviele Zeilen die Konsole nach ihrem Start haben soll. Beispiel: "InitialRows" = "24". InitialColumns Mit der Variablen wird angegeben, wieviele Spalten die Konsole nach ihrem Start haben soll. Beispiel: "InitialColumns" = "80". TerminalType Hiermit lässt sich festlegen, von welchem Terminaltyp die ncurses-Bibliothek ausgehen soll. Typische Werte sind xterm oder linux. 7.11 Die Zwischenablage Das Konzept der Zwischenablage unterscheidet sich zwischen Windows und dem X Window System etwas. Um beispielsweise einen Text in die Zwischenablage zu stellen, wird dieser unter Windows normalerweise zunächst markiert und dann über einen Menübefehl in die Zwischenablage kopiert oder verschoben. Unter X stehen mindestens zwei Typen von Zwischenablage zur Verfügung. Nachdem ein Text dort markiert worden ist, steht er als so genannte primäre Auswahl zur Verfügung; er kann dann sofort in andere Anwendungen eingefügt werden (etwa durch Betätigung der mittleren Maustaste). Die Zwischenablage ist eine weitere Auswahl, in die Texte oder andere Daten von vielen X-Anwendungen aus kopiert und von dort aus wieder eingefügt werden können. Im Abschnitt [clipboard] der Konfigurationsdatei lässt sich bestimmen, wie die Windows-Zwischenablage mit der Zwischenablage des X Window Systems interagiert. ClearAllSelections Wenn diese Variable auf true gesetzt ist, wird der Inhalt der Windows-Zwischenablage gelöscht und durch den Inhalt der Zwischenablage des X Window Systems ersetzt, falls in einer anderen X Anwendung etwas in die primäre Auswahl gestellt wird. Wird bei Verwendung dieser Einstellung also zunächst etwas mit einem Windows-Programm in die Zwischenablage gestellt und danach mit der Maus ein Text in einer X Anwendung markiert, so geht der ursprüngliche Inhalt der Windows-Zwischenablage verloren und es steht dort der mit der Maus markierte Text zur Verfügung. Falls die Variable auf false gesetzt ist, bleibt der Inhalt der Zwischenablage durch die Veränderung der primären Auswahl unberührt. Um dann beispielsweise einen Text von XEmacs nach Word zu kopieren, reicht es nicht aus, den Text in XEmacs zu markieren, sondern er muss dort explizit in die Zwischenablage kopiert werden, falls sich dort vorher eine Auswahl befand, die von einer Windows-Anwendung aus vorgenommen wurde. Beispiel: "ClearAllSelections" = "true" PersistentSelection Nachdem WINE beendet worden ist, kann der Inhalt der Zwischenablage anderen X Programmen normalerweise nicht mehr zur Verfügung gestellt werden. Wenn diese Variable auf true gesetzt ist, startet WINE deswegen ein kleines Hintergrundprogramm (wineclipsrv) welches den Inhalt der Zwischenablage so lange verfügbar hält, bis dieser durch ein anderes Programm ersetzt wird und sich dann beendet. Beispiel: "PersistentSelection" = "true" 7.12 Konfiguration des PostScript-Druckertreibers WINE kann zwei Typen von Druckertreibern verwenden, nämlich echte 16bit Windows-Druckertreiber, wie Sie von Windows 3.11 oder Windows 95/98 benutzt werden, oder einen eigenen PostScript- Druckertreiber, mit dem sich aus den meisten Windows-Anwendungen heraus im PostScript-Format drucken lässt. Diese PostScript-Ausgabe kann dann über die Spooler-Software des Systems (normalerweise lpr/lpd) auf einen direkt angeschlossenen oder fernen Drucker ausgegeben werden. Hinweise zur Verwendung von 16bit-Windows-Druckertreiber finden sich u.a. in der Datei printing im Unterverzeichnis documentation des WINE-Quellcodeverzeichnisses. Im folgenden soll lediglich auf die Konfiguration des eingebauten PostScript-Druckertreibers eingegangen werden (was generell sowieso bevorzugt wird). Zunächst ist das Vorhandensein des Druckertreibers anzumelden. Dazu sind in der Datei win.ini im Windows-Verzeichnis die folgenden Änderungen vorzunehmen: [windows] device=WINE PostScript Driver,WINEPS,LPT1: [devices] WINE PostScript Driver=WINEPS,LPT1: Falls Sie WINE ohne eine bestehende Windows-Installation verwenden, kann es sein, dass die Datei win.ini noch nicht existiert. In diesem Fall kann die Datei neu angelegt und die oben gezeigten Zeilen dort eingetragen werden. Falls die Datei bereits vorhanden ist, müssen die Abschnitte [devices] und [windows] in der Datei lokalisiert und um die oben gezeigten Zeilen ergänzt werden. Keinesfalls sollten die Abschnitte devices oder windows mehrmals in der Datei vorhanden sein. Damit auch von 32bit Programmen aus gedruckt werden kann, ist es notwendig, einige Einträge in der Registratur vorzunehmen. Diese Einträge sind in der Datei winedefault.reg im Wine-Hauptverzeichnis vorhanden und lassen sich mit dem Programm regedit, welches sich im Unterverzeichnis programs/regedit des Quellcodeverzeichnisses befindet, importieren. Falls noch nicht geschehen, ist regedit dazu zunächst zu übersetzen. Zu diesem Zweck ist in das Verzeichnis programs/regedit zu wechseln und dort der Befehl make einzugeben (dies setzt voraus, dass WINE bereits erfolgreich übersetzt wurde). Danach können die erforderlichen Schlüssel durch die Eingabe des folgenden Befehls importiert werden: ./regedit ../../winedefault.reg Achtung: Bei dem Programm regedit handelt es sich um ein sogenanntes WineLib-Programm. Solche Programme benutzen WINE, um Windows-spezifische Funktionen verwenden zu können. Damit sie ausgeführt werden können, muss bereits eine funktionsfähige WINE-Konfiguration vorhanden sein. Dieser Schritt sollte also nicht durchgeführt werden, bevor die Erstellung der Konfigurationsdatei abgeschlossen und die Funktionsfähigkeit von WINE getestet worden ist. Weiter wird eine so genannte PPD-Datei benötigt. Eine solche Datei beschreibt verschiedene Eigenschaften des Druckers und wird benötigt, damit WINE beispielsweise entscheiden kann, ob in Farbe oder in Schwarz-Weiß gedruckt werden kann. Wenn kein PostScript-fähiger Drucker benutzt wird, dann benötigt man eine PPD-Datei, welche die Eigenschaften des ghostscript-Treibers für den eingesetzten Drucker beschreibt, weil dieses Programm in der Regel zur Umwandlung von PostScript in das Druckerformat benutzt wird. Mit Debian stehen solche Dateien in dem Paket ppd-gs zur Verfügung. Wird dieses Paket benutzt, sollte vorher die Datei /usr/doc/ppd-gs/README gelesen werden. Eine Reihe von PPD-Dateien stehen unter der Adresse ftp://ftp.adobe.com/pub/adobe/printerdrivers/win/all/ppdfiles/ zur Verfügung. In dem Verzeichnis befinden sich selbstauspackende ZIP-Archive, die PPD-Dateien für Drucker verschiedener Hersteller enthalten. Diese Archive können mit dem Programm unzip(1) entpackt werden. Um beispielsweise die Datei hp.exe auszupacken, wäre folgender Befehl einzugeben: unzip -L hp.exe Danach ist die gewünschte PPD-Datei auszuwählen, hierbei muss u.U. ein wenig experimentiert werden, um optimale Ergebnisse zu erzielen. Die Datei kann dann beispielsweise in das Verzeichnis /usr/local/etc/ kopiert werden und muss WINE durch den folgenden Eintrag in der Konfigurationsdatei bekannt gemacht werden: [psdrv] "ppdfile" = "/usr/local/etc/HP4M3_V1.PPD" Falls sich die Datei in einem anderen Verzeichnis befindet oder einen anderen Namen trägt, ist der Wert für die Variable ppdfile natürlich entsprechend anzupassen. Schließlich benötigt WINE die Fontmetric-Dateien der Schriftarten, die auf dem Drucker (oder mit ghostscript) zur Verfügung stehen. Eine Reihe solcher Fontmetric-Dateien lassen sich unter Debian beispielsweise mit dem Paket tetex-extra installieren. Sie befinden sich nach der Installation unterhalb des Verzeichnisses /usr/share/texmf/fonts/afm. Sie haben normalerweise die Dateinamensendung .afm (Adobe FontMetric). Die zu verwendenden Dateien sind im Abschnitt [afmfiles] der Konfigurationsdatei anzugeben. Der Name jeder Datei ist dabei einer Variablen zuzuordnen, deren Name sich aus der Zeichenkette file und einer fortlaufenden Ziffer zusammensetzt. Bei der Auswahl der AFM-Dateien ist zu beachten, dass nur die Dateien angegeben werden brauchen, für die der entsprechende Font tatsächlich in der vorher definierten PPD-Datei genannt wurde. Die Bezeichnungen der Fonts befinden sich normalerweise in den Fontmetric-Dateien, die mit einem Texteditor betrachtet werden können. Der Anfang des entsprechenden Abschnitts in der Konfigurationsdatei könnte beispielsweise folgendermaßen aussehen: [afmfiles] "file1" = "/usr/share/texmf/fonts/afm/adobe/times/ptmb8a.afm" "file2" = "/usr/share/texmf/fonts/afm/adobe/times/ptmbi8a.afm" "file3" = "/usr/share/texmf/fonts/afm/adobe/times/ptmr8a.afm" "file4" = "/usr/share/texmf/fonts/afm/adobe/times/ptmri8a.afm" "file5" = "/usr/share/texmf/fonts/afm/adobe/helvetic/phvbo8an.afm" "file6" = "/usr/share/texmf/fonts/afm/adobe/helvetic/phvb8a.afm" "file7" = "/usr/share/texmf/fonts/afm/adobe/helvetic/phvb8an.afm" "file8" = "/usr/share/texmf/fonts/afm/adobe/helvetic/phvbo8a.afm" "file9" = "/usr/share/texmf/fonts/afm/adobe/helvetic/phvro8an.afm" "file10" = "/usr/share/texmf/fonts/afm/adobe/helvetic/phvr8a.afm" "file11" = "/usr/share/texmf/fonts/afm/adobe/helvetic/phvr8an.afm" "file12" = "/usr/share/texmf/fonts/afm/adobe/helvetic/phvro8a.afm" Auch hier sind die Dateinamen natürlich an die tatsächlich benutzten Fontmetric-Dateien anzupassen. Der Druckertreiber sollte dann als WINE PostScriptDriver in den Druckdialogen der Windows-Anwendungen zur Verfügung stehen. 7.13 Konfiguration des Spoolers Standardmäßig werden Druckdaten in eine Datei im aktuellen Arbeitsverzeichnis ausgegeben, deren Name der Bezeichnung des Druckeranschlusses unter Windows, auf den gedruckt wurde, entspricht. Im Abschnitt [spooler] der Konfigurationsdatei lässt sich die Ausgabe in eine andere Datei umlenken oder an ein anderes Programm weiterleiten. Dazu ist in dem Abschnitt der Name des Anschlusses als Variablenbezeichnung anzugeben (Beispiel: LPT1:) und dieser Variable der Name der Datei zu übergeben, in welche die Druckausgabe gelenkt werden soll. Um die Ausgabe an die Standardeingabe eines Programms zu übergeben, ist der Name des gewünschten Programms hinter dem Pipe-Zeichen (|) anzugeben. Wenn also beispielsweise die Ausgabe auf den Anschluss LPT1: an das Programm lpr übergeben werden soll, um sie dem Spooler zuzuführen, wäre in die Konfigurationsdatei folgender Abschnitt aufzunehmen: [spooler] "LPT1:" = "|lpr" 7.14 Multimedia-Konfiguration Die Multimedia-Architektur unter Windows besteht aus verschiedenen Typen von Treibern und Schnittstellen, die von Windows-Programmen benutzt werden können. Diese Architektur wird von WINE nachgebildet, wobei unterschiedliche Bestandteile mehr oder weniger vollständig vorhanden sind. Eine ausführliche Beschreibung der Multimedia-Architektur von WINE befindet sich in der Datei multimedia im Unterverzeichnis documentation/status des WINE-Quellcodes. WINE stellt einen eigenen Treiber zur Ansteuerung der Soundhardware zur Verfügung. Diese Ansteuerung geschieht über die Gerätedateien /dev/dsp, /dev/audio, /dev/mixer usw. Deswegen muss darauf geachtet werden, dass Schreib- und Leseberechtigung für diese Dateien besteht, falls die Soundunterstützung von WINE benutzt werden soll. Der Treiber setzt auf die OSS- (Open Sound System) Treiber auf, die standardmäßig Bestandteil des Linux-Kernels sind. Bis auf die Bibliotheken winmm und mmsystem lassen sich alle anderen Komponenten des Multimediasystems auch aus einer bestehenden Windows-Installation verwenden. Dies ist vor allem bei einigen MCI-Treibern hilfreich, die in WINE noch nicht vollständig implementiert sind. MCI-Treiber werden geladen, wenn im Abschnitt [mci] der Datei system.ini im Windows-Verzeichnis Anweisungen in der folgenden Form stehen: [mci] cdaudio=mcicda.drv sequencer=mciseq.drv Bei Verwendung einer bestehenden Windows-Installation sollten sich die entsprechenden Anweisungen dort bereits befinden. Wird ohne eine bestehende Windows-Installation gearbeitet, kann die Datei system.ini im Unterverzeichnis documentation/samples des WINE-Quellcodeverzeichnisses als Vorlage dienen. Durch die Variable mci im Abschnitt [options] der Konfigurationsdatei von WINE lassen sich die Definitionen aus der Datei system.ini überschreiben. Das ist sinnvoll, um bestimmte Treiber nicht zu laden, die in der Datei system.ini angegeben sind, weil diese Treiber mit WINE nicht richtig funktionieren. Dies ist zur Zeit mit dem MCI-Treiber videodisk der Fall. Um alle MCI-Treiber (bis auf videodisk) zu laden, könnte in die Konfigurationsdatei der also der folgende Abschnitt aufgenommen werden: [options] "mci" = "CDAUDIO:SEQUENCER:WAVEAUDIO:AVIVIDEO:MPEGVIDEO" Ob ein Treiber aus einer bestehenden Windows-Installation geladen oder der von WINE zur Verfügung gestellte Treiber benutzt werden soll, kann wie bei Bibliotheken im Abschnitt DllOverrides der Konfigurationsdatei festgelegt werden, wie es weiter oben beschrieben wurde. Dabei ist zu beachten, dass die Dateinamensendung .drv bei Treibern - im Gegensatz zu Bibliotheken - mit anzugeben ist. Um beispielsweise die MCI-Treiber mciavi und mcianim aus einer bestehenden Installation zu laden und die übrigen Treiber von WINE zu verwenden, wären dem Abschnitt [DllOverrides] die folgenden Zeilen zuzufügen: "mciavi.drv, mcianim.drv" = "native, builtin" "mcicda.drv, mciseq.drv" = "builtin, native" "msacm.drv, midimap.drv" = "builtin, native" "mciwave.drv" = "builtin, native" 7.15 Einrichten der Registratur Eine Reihe von Windows-Programmen und WINE selbst benötigen bestimmte Einträge in der Registratur, damit sie richtig funktionieren. Wenn WINE ohne eine bestehende Windows-Installation benutzt wird oder die Windows-Registratur nicht importiert werden soll, sind diese Einträge noch nicht vorhanden und müssen mit dem weiter oben bereits erwähnten Programm regapi importiert werden. Als Vorlage kann dazu die Datei winedefault.reg im Quellcodeverzeichnis von WINE dienen. Die Datei sollte jedoch daraufhin überprüft werden, ob alle dort angegebenen Laufwerksbuchstaben und Pfade stimmen, bevor sie importiert wird. Außerdem sollte in der Konfigurationsdatei natürlich festgelegt sein, dass die Registratur bei Beendigung des Programms gespeichert wird, damit die importierten Daten auch beim nächsten Aufruf von WINE zur Verfügung stehen. Danach kann in das Unterverzeichnis programs/regapi des Quellcodeverzeichnisses gewechselt werden. Dort ist das Programm zunächst durch Eingabe des Befehls make zu erstellen, falls dies noch nicht geschehen ist. Danach können die erforderlichen Daten mit dem folgenden Befehl importiert werden: ./regapi setValue < ../../winedefault.reg 8 Aufruf von WINE und Kommandozeilenoptionen WINE lässt sich wie jedes andere Programm von der Kommandozeile aus aufrufen. Der Name des auszuführenden Windows-Programms ist WINE dabei an der Kommandozeile angeben. Programme, die sich in einem Verzeichnis befinden, das in der Variablen Path im Abschnitt WINE der Konfigurationsdatei aufgeführt ist, können dabei ohne Angabe des Pfadnamens aufgerufen werden. Die Angabe der Dateinamensendung .exe ist optional. Falls WINE also gestartet und das Windows-Programm winmine (Minesweeper) geladen werden soll, wäre der folgende Befehl einzugeben, vorausgesetzt, die Datei winmine.exe würde sich in einem Verzeichnis befinden, welches in der Variablen Path aufgeführt ist. wine winmine.exe Sollen Programme gestartet werden, die sich in Verzeichnissen befinden, welche nicht in der Variablen Path befinden, ist es erforderlich, den Pfadnamen mit anzugeben. Hier kann entweder der DOS-/Windows-Pfadname oder der UNIX-Pfadname benutzt werden. Die beiden folgenden Befehle würden also das gleiche bewirken, falls das Laufwerk C: dem UNIX-Verzeichnis /var/winroot zugeordnet wäre. wine c:\\windows\\winmine.exe wine /var/winroot/windows/winmine.exe Der Rückwärts-Schrägstrich hat für die Shell Bash eine besondere Bedeutung und wird deswegen normalerweise nicht an WINE übergeben. Durch die doppelte Angabe dieses Zeichens wird bewirkt, dass ein einfacher Schrägstrich übergeben wird. Datei- und Verzeichnisnamen enthalten unter Windows gelegentlich Leerzeichen. Auch hier ist es notwendig einen Trick anzuwenden, damit die Leerzeichen nicht dazu führen, dass die Shell die einzelnen Teile der Namen in verschiedenen Argumente zerlegt. Der folgende Befehl würde beispielsweise nicht zum gewünschten Ergebnis führen: wine /var/winroot/Programme/Microsoft Games/RoA Trial Version/PACDEMO.EXE Hier würde die Shell WINE vier Argumente übergeben, nämlich /var/winroot/Programme/Microsoft, Games/RoA, Trial und Version/PACDEMO.EXE, woraufhin das zu startende Programm nicht mehr gefunden werden würde. Damit die Shell bei Leerzeichen keine Trennung durchführt, ist den betreffenden Leerzeichen ebenfalls ein rückwärtsgerichteter Schrägstrich voranzustellen: wine /var/winroot/Programme/Microsoft\ Games/RoA\ Trial\ Version/PACDEMO.EXE Falls Argumente dem zu startenden Windows-Programmen übergeben werden sollen, ist dem Programmnamen ein -- voranzustellen, um Wine das Ende der Wine-Optionen anzuzeigen (damit Wine nicht durch Programm- Optionen verwirrt werden kann, die evt. ebenfalls --XXX heissen). Um beispielsweise das Programm notepad.exe zu starten und diesem Programm das Argument readme.1st zu übergeben, wäre WINE so aufzurufen: wine -- notepad readme.1st Wenn mehrere Windows-Programme hintereinander gestartet werden sollen, muss WINE mehrmals hintereinander mit den entsprechenden Programmnamen als Argument aufgerufen werden. 8.1 Kommandozeilenoptionen Neben den Namen der zu startenden Programme versteht WINE eine Reihe von Optionen, mit denen die Operation des Programms global beeinflusst werden kann. Diese Optionen werden direkt von WINE interpretiert und nicht an das aufzurufende Windows-Programm übergeben. --help Die Option bewirkt, dass eine Übersicht über die verfügbaren Optionen ausgegeben wird. --version Die Option bewirkt, dass die Versionsnummer von WINE angezeigt wird. --dll Bibliothek[,Bibliothek ...]=b|n[:Bibliothek[,Bibliothek,...]=b|n] Mit dieser Option lassen sich die Einstellungen aus dem Abschnitt [DllOverrides] aus der Konfigurationsdatei überschreiben, es kann also angegeben werdem, welche Bibliotheken aus einer bestehenden Windows-Installation geladen und welche direkt von WINE zu Verfügung gestellt werden sollen. Der Option ist ein Ausdruck zu übergeben, welcher aus den Namen der betreffenden Bibliotheken besteht, die durch Kommata (ohne Leerzeichen) voneinander getrennt werden. Danach folgt ein Gleichheitszeichen und daraufhin entweder der Buchstabe b, um zu bestimmen, dass die angegebenen Bibliotheken von WINE zur Verfügung gestellt werden sollen, oder der Buchstabe n, damit versucht wird, die Bibliotheken aus einer bestehenden Installation zu laden. Solche Ausdrucke können wiederholt angegeben werden, sie sind dann durch einen Doppelpunkt (ohne Leerzeichen) voneinander zu trennen. Sollen beispielsweise die Bibliotheken shell, commdlg und commctrl mit ihren zugehörigen 32bit Bibliotheken aus einer bestehenden Installation geladen werden und die Bibliothek advapi32 von WINE zur Verfügung gestellt werden, obwohl dies in der Konfigurationsdatei anders angegeben ist, so könnte man die Option so einsetzen: --dll commdlg,comdlg32,commctrl,comctl32,shell,shell32=n:advapi32=b. --debugmsg +|-foo,+|-bar Diese Option dient dazu, zu kontrollieren, welche Art von Informationen WINE zur Fehler- und Ablaufverfolgung ausgeben soll. Es stehen eine Reihe so genannter Kanäle zur Verfügung, deren Namen angezeigt werden, wenn die Option ohne weitere Angaben benutzt wird. Die einzelnen Kanäle entsprechen normalerweise unterschiedlichen Teilbereichen von WINE, deren Verhalten durch die Ausgabe bestimmter Informationen überprüft werden kann. Um beispielsweise die Meldungen für den Kanal file einzuschalten, wäre die Option --debugmsg +file zu benutzen. Wenn die Meldungen der Kanäle file und dosfs ausgegeben werden sollen, wäre --debugmsg +file,+dosfs anzugeben. Weitere Informationen hierzu befinden sich in der Datei debug-msg im Unterverzeichnis documentation des WINE-Quellcodeverzeichnisses. Zwei besonders wichtige Kanäle sind relay und snoop. Wenn der Kanal relay eingeschaltet ist, wird ausgegeben, welche Funktionen in WINE von Windows-Programmen mit welchen Parametern aufgerufen werden und welche Rückkehrwerte diese Funktionen liefern. Der Kanal snoop zeigt an, welche Funktionen aus echten Windows-Bibliotheken aufgerufen werden. Die Ausgabe des Kanals relay dient WINE-Entwicklern oft dazu, festzustellen, wo ein Fehler aufgetreten ist. Deswegen ist es ratsam, bei Fehlerberichten in die WINE-Newsgroup die letzten 200 Zeilen der Ausgabe von WINE mitzuschicken, die bei dem Aufruf des Programms mit der Option --debugmsg +relay vor Auftreten des Fehlers entstanden sind. 9 Fehlerquellen WINE befindet sich zur Zeit noch mitten in der Entwicklung, weswegen viele Windows-Programme nur teilweise oder überhaupt nicht damit funktionieren. Mit großer Wahrscheinlichkeit werden einige Programme sogar nie mit WINE funktionieren, beispielsweise weil sie eigene Windows-Treiber brauchen, die unter Linux nicht geladen werden können. Trotzdem funktionieren viele Windows-Programme ausgesprochen gut mit WINE und die Anzahl funktionierender Programme erhöht sich relativ schnell. Wenn ein Programm nicht wie gewünscht funktioniert, kann es deswegen hilfreich sein, die folgenden Fragen zu untersuchen: WINE funktioniert überhaupt nicht In bestimmten Paketversionen der C-Bibliothek (Version 2.1.3) liegt ein Fehler vor, der dazu führt, dass WINE direkt nach dem Start mit Fehlermeldungen abbricht. Sie können das Problem beheben, indem Sie eine neuere Version der C-Bibliothek installieren oder die Variable LANG auf einen Wert setzen. Bei Verwendung der Bash kann dies beispielsweise durch Eingabe des folgenden Befehls geschehen: export LANG=de_DE. WINE funktioniert immer noch nicht Wenn Sie WINE auf die beschriebene Art installiert haben, sollten Sie überprüfen, dass sich nicht gleichzeitig noch eine andere, ältere Version des Programms auf dem Rechner befindet, welches u.U. von Ihrer Distribution mitinstalliert wurde. Dies könnte nämlich dazu führen, dass versucht wird, inkompatible Bibliotheken zu laden. Windows- und Windows/system-Verzeichnis sind nicht richtig angegeben Die Meldung Invalid path 'c:\windows' for windows directory besagt, dass im Abschnitt WINE der Konfigurationsdatei mit der Variablen Windows ein Windows-Verzeichnis angegeben wurde, welches nicht existiert. Es ist dann zu überprüfen, ob das Windows-Verzeichnis vorhanden ist und ob das Laufwerk, auf dem es sich befindet, dem richtigen UNIX-Verzeichnis zugeordnet ist. Die Zuordnungen der Laufwerksbuchstaben stimmen nicht Wenn beim Start von WINE Meldungen wie Warning: /var/winroot/windows/sol.exe not accessible from a DOS drive ausgegeben werden, teilt WINE mit, dass das auszuführende Programm sich in einem Verzeichnis befindet, das aufgrund der Zuordnungen in der Konfigurationsdatei mit keinem Laufwerk assoziiert ist. Es sollten dann die Laufwerkszuordnungen überprüft werden. Windows-Programme finden Einstellungen und Bibliotheken nicht Wenn WINE mit einer bestehenden Windows-Installation benutzt wird, ist es erforderlich, dass die Laufwerksbuchstaben unter Windows und WINE übereinstimmen. Falls ein Programm nämlich beispielsweise in der Registratur gespeichert hat, dass sich eine bestimmte Komponente im Verzeichnis C:\Windows\System befindet, dann ist es erforderlich, dass dieses Programm die Komponente auch unter WINE in dem selben Verzeichnis findet. Es ist jedoch möglich mit WINE zusätzliche Laufwerke zu verwenden (also z.B. das eigene Heimatverzeichnis einem Laufwerksbuchstaben zuzuordnen), die unter Windows nicht vorhanden sind. Spiele werden im Fenster dargestellt, obwohl Vollbild ausgewählt wurde und sind zu langsam Die meisten Spiele benutzen einen bestimmte Farbtiefe, in die Windows umschaltet, wenn das betreffende Spiel gestartet wird. Mit dem X Window System ist es leider nicht möglich die Farbtiefe während des laufenden Betriebs zu ändern, weswegen WINE die gewünschte Farbtiefe in einem Fenster emulieren muss, falls der X-Server nicht in der richtigen Farbtiefe läuft. Dadurch wird sehr viel Rechenleistung benötigt und außerdem kann nicht in einen Vollbildmodus geschaltet werden. Abhilfe schafft hier nur, den X-Server in der richtigen Farbtiefe zu starten, bevor WINE aufgerufen wird. Hierzu dienen die Optionen -bpp, bei X-Servern des XFree86-Projekts der Versionsfamilie 3.3.x bzw. -depth in der Versionsfamilie 4.0) Gelegentlich empfiehlt es sich auch, einen zweiten X-Server zu starten, was am einfachsten mit dem Befehl xinit(1) geschehen kann. Um beispielsweise das Programm q2test.exe mit WINE auf einem zweiten X-Server mit einer Farbtiefe von 8 Bit pro Pixel aus dem aktuellen Arbeitsverzeichnis zu starten, könnte der folgende Befehl benutzt werden (FIXME: nicht mehr korrekt ?): xinit /usr/local/bin/WINE q2test.exe --display :1 -- -bpp 8 :1 Falls sich WINE in einem anderen Verzeichnis als /usr/local/bin befindet, ist der Befehl natürlich entsprechend anzupassen. Der DGA-Modus funktioniert nicht, obwohl X in der richtigen Farbtiefe ausgeführt wird; Spiele sind immer noch langsam Die Verwendung von DGA ist normalerweise nur dem Systemadministrator gestattet, das betreffende Programm muss also mit dessen Rechten ausgeführt werden. Alternativ dazu reicht es auch aus, Benutzern Schreib- und Leserechte auf die Gerätedatei /dev/kmem zu erteilen. Es ist kein Sound zu hören Zunächst sollte überprüft werden, ob die Soundunterstützung des Linux-Kernels richtig funktioniert, also ob es möglich ist, mit anderen Linux-Programmen die Soundkarte zu verwenden. Im nächsten Schritt kann überprüft werden, ob die Sound-Hardware von einem anderen Programm benutzt wird und WINE deswegen nicht darauf zugreifen kann. Weiterführende Informationen Die zentrale Web-Adresse für Informationen zu WINE ist http://www.winehq.com. Dort befinden sich Links zu vielen weiteren Dokumenten, wie einem WINE-FAQ, einem WINE-HOWTO, einer Anleitung zum Erstellen von Fehlerberichten und vieles mehr.