Wie läuft die Zusammenarbeit von Wine mit 64-Bit- und 32-Bit-Anwendungen ab?
- Einleitung
- Architektur von Wine bezüglich 32-Bit- und 64-Bit-Unterstützung
- Separate Umgebungen und Prefixes
- WOW64-Unterstützung in Wine
- Technische Herausforderungen und Lösungen
- Praxis: Nutzung und Installation
- Fazit
Einleitung
Wine ist eine Kompatibilitätsschicht, die es ermöglicht, Windows-Anwendungen unter Unix-ähnlichen Betriebssystemen wie Linux oder macOS auszuführen. Da Windows sowohl 32-Bit- als auch 64-Bit-Software unterstützt, muss Wine ebenfalls in der Lage sein, mit beiden Architekturen umzugehen. Die Zusammenarbeit von Wine mit 32-Bit- und 64-Bit-Anwendungen ist komplex und erfordert spezielle Mechanismen, um eine reibungslose Ausführung zu gewährleisten.
Architektur von Wine bezüglich 32-Bit- und 64-Bit-Unterstützung
Wine unterstützt sowohl 32-Bit- als auch 64-Bit-Windows-Programme, indem es in einer sogenannten Wine-Architektur betrieben wird, die entweder 32-Bit oder 64-Bit sein kann. Dies resultiert daraus, dass Windows-Programme grundsätzlich entweder für die 32-Bit- oder für die 64-Bit-Architektur kompiliert sind, und sie direkt nur mit der passenden Architektur zusammenarbeiten können. Wine selbst wird entweder als 32-Bit-Version oder 64-Bit-Version installiert, um die jeweilige Zielanwendung optimal auszuführen.
Separate Umgebungen und Prefixes
Um Programme mit unterschiedlichen Architekturtypen parallel zu unterstützen, verwendet Wine sogenannte Wineprefixes. Dies sind isolierte Umgebungen, die eine eigene Windows-Installation simulieren. Dabei kann ein Prefix entweder eine 32-Bit-Umgebung oder eine 64-Bit-Umgebung sein. 32-Bit-Programme laufen innerhalb eines 32-Bit-Wineprefix, während 64-Bit-Programme eine 64-Bit-Wineprefix-Umgebung benötigen. Diese Trennung ist notwendig, weil sich die Registry, Systembibliotheken und Installationspfade innerhalb der Prefixe unterscheiden. Im 64-Bit-Prefix sind beispielsweise sowohl 32-Bit- als auch 64-Bit-Bibliotheken vorhanden, da 64-Bit-Windows auch 32-Bit-Subsysteme (WOW64) unterstützt.
WOW64-Unterstützung in Wine
Windows verwendet die sogenannte WOW64-Komponente (Windows-on-Windows 64), um 32-Bit-Anwendungen nahtlos auf einem 64-Bit-Betriebssystem auszuführen. Wine implementiert eine ähnliche Funktionalität, die es erlaubt, innerhalb eines 64-Bit-Wineprefixes sowohl 64-Bit- als auch 32-Bit-Anwendungen zu starten. Dabei wird eine Art Emulation bzw. Übersetzer eingesetzt, der 32-Bit-Binärdateien so umsetzt, dass sie auf einem 64-Bit-System lauffähig sind. Diese Funktion benötigt allerdings, dass Wine mit entsprechenden 32-Bit-Windows-Bibliotheken (DLLs) ausgestattet ist, die während der Ausführung geladen werden können.
Technische Herausforderungen und Lösungen
Die Hauptschwierigkeit bei der Kombination von 32-Bit- und 64-Bit-Anwendungen in Wine liegt im Umgang mit Systembibliotheken und dem Speicherlayout. 32-Bit-Programme verwenden 32-Bit-Pointer, 64-Bit-Anwendungen 64-Bit-Pointer, was sich auf Funktionensignaturen und Datenstrukturen auswirkt. Wine muss sicherstellen, dass beim Laden von DLLs und bei Funktionsaufrufen die passende Architektur verwendet wird. Deshalb werden für 64-Bit-Wineprefixe doppelte Versionen von wichtigen DLLs wie kernel32.dll und ntdll.dll bereitgestellt: die 64-Bit-Version für 64-Bit-Programme und die 32-Bit-Version für 32-Bit-Programme. Wine lädt bei Programmstart automatisch die korrekte Variante.
Außerdem ist die Installation von Wine so gestaltet, dass 32-Bit-Komponenten in einem 64-Bit-System parallel installiert werden können (Multiarch-Setup). Zum Beispiel auf Linux-Systemen werden sowohl 32-Bit- als auch 64-Bit-Systembibliotheken benötigt, damit Wine eine vollständige 64-Bit-Umgebung mit WOW64-Unterstützung realisieren kann.
Praxis: Nutzung und Installation
In der Praxis sollte man bei der Nutzung von Wine darauf achten, die entsprechenden Prefixes korrekt anzulegen und zu konfigurieren, abhängig davon, ob man eine 32-Bit- oder 64-Bit-Anwendung ausführen möchte. Für reine 32-Bit-Anwendungen empfiehlt es sich, einen 32-Bit-Wineprefix zu verwenden, da dieser weniger Speicher benötigt und oftmals stabiler läuft. Für 64-Bit-Anwendungen ist ein 64-Bit-Wineprefix notwendig, das in der Lage ist, auch WOW64-Unterstützung zu bieten, damit gegebenenfalls auf 32-Bit-Bibliotheken zurückgegriffen werden kann.
Die meisten modernen Wine-Distributionen bieten daher standardmäßig eine 64-Bit-Installation mit gebrauchsfertiger WOW64-Unterstützung an. Nutzer können so 64-Bit-Programme starten und gleichzeitig 32-Bit-Anwendungen ausführen, sofern alle erforderlichen 32-Bit-Libraries installiert sind. Wenn Probleme auftauchen, liegt dies meist an fehlenden 32-Bit-Bibliotheken oder falschen Prefix-Konfigurationen.
Fazit
Die Zusammenarbeit von Wine mit sowohl 64-Bit- als auch 32-Bit-Anwendungen erfolgt durch eine Kombination aus separaten Wineprefixes, der Implementierung von WOW64-Mechanismen und der parallelen Bereitstellung von 32-Bit- und 64-Bit-Bibliotheken. Durch diese Architektur kann Wine flexibel auf die Anforderungen verschiedener Windows-Programme reagieren und stellt damit eine vielseitige Umgebung zur Ausführung unterschiedlicher Softwarearchitekturen unter Linux und anderen Unix-ähnlichen Systemen bereit.
