Wie funktioniert Wine (Windows Program Loader) unter Ubuntu?

7

Ich weiß, dass wir Windows (.exe) -Programme mit Hilfe von Wine ausführen können.

Ich möchte wissen, wie Wine funktioniert und .exeProgramme unter Ubuntu ausführt. Da es sich um zwei verschiedene Betriebssysteme handelt - Windows (Closed Source) und Ubuntu (Linux Open Source) - und sie funktionieren unterschiedlich: Ubuntu basiert auf der Paketverwaltung (z. B. apt, dpkg).

Warum ist Wein wichtig und was bedeutet "Wein ist kein Emulator" ?

Wie ich weiß, werden ~/.wine/drive_c/windowsVerzeichnisse usw. erstellt . Funktioniert es ähnlich wie Windows und verwendet dieselben Dateien windows/system32wie eine echte Windows-Plattform?

Ich möchte wissen, wie es funktioniert und wie wichtig es ist, denn warum wird projiziert ( was ist erforderlich / warum sollte es erlaubt sein ), Windows-Programme unter Ubuntu auszuführen? Es werden jedoch nicht alle Windows-Software und -Grafiken vollständig unterstützt.

Und was sind parallele Pakete wie "Cross-Over" und "Play on Linux"?

Pandya
quelle

Antworten:

16

Wie Wikipedia sagt: http://en.wikipedia.org/wiki/Wine_(software)

" Wine ist eine Kompatibilitätsschicht. Es dupliziert Funktionen von Windows, indem es alternative Implementierungen der von Windows-Programmen aufgerufenen DLLs [4] und einen Prozess zum Ersetzen des Windows NT-Kernels bereitstellt. "

WINE besteht also aus eigenentwickelten Bibliotheken, von denen eine Seite (sichtbar für Programme) die Windows-API und die andere Seite (sichtbar für Linux-Kernel und Linux-Bibliotheken wie glibc und libX11) POSIX, Linux und X11 ist API. Außerdem gibt es einen speziellen Loader von Windows-Programmen, mit dem EXE-Dateien gelesen, geladen und alle erforderlichen DLL-Bibliotheken in den Speicher geladen, alles mit internen Wine-Bibliotheken und Systembibliotheken verbunden und ausgeführt werden können. Es kann auch mehrere Hilfsprogramme in WINE geben.

Da gibt es zwei verschiedene Betriebssystemfenster (Closed Source) und Ubuntu (Linux Open Source)

Wine bietet eigene Versionen verschiedener Windows-System-DLLs. Wine kann auch native Windows-DLLs laden. Der Versuch, den Windows-Kernel direkt aufzurufen, wird nicht unterstützt. Wenn Ihr Windows-Programm Anrufe tätigt, die Linux verarbeiten kann, leitet Wine diese an den Linux-Kernel weiter. Wenn das Programm etwas tun möchte, was Linux nicht kann, übersetzt Wine den Aufruf in etwas, mit dem Linux zuerst umgehen kann.

Beide Betriebssysteme (Windows und Ubuntu) haben unterschiedliche APIs (und ABIs (Application Binary Interface)). Windows verfügt über WinAPI und Linux über eine POSIX-API mit einigen zusätzlichen Linux-spezifischen APIs, Grafik-APIs (wie X11) und einem eigenen Linux-ABI. Bei verschiedenen APIs können Sie beispielsweise die Datei nicht öffnen und daraus lesen, wenn Sie eine falsche API verwenden. Bei diesem Unterschied geht es nicht um die Paketverwaltung, sondern um die Schnittstelle zwischen Programmen, Bibliotheken und Betriebssystemkernen.

Warum ist Wein wichtig und was bedeutet "Wein ist kein Emulator"?

Ein Emulator sollte Programmanweisungen laden, analysieren und ihre Aktionen nachahmen. Emulatoren von ARM sind also auf x86 (Intel) möglich. Zum Beispiel gibt es den großen qemu(Name als "Quick EMUlator" dekodiert) oder einen älteren x86-Emulator, der in C - geschrieben ist bochs. Emulatoren emulieren normalerweise einen gesamten PC, beginnend mit dem BIOS, den Prozessoren und den Festplatten, und starten das Betriebssystem, das Sie auf diesem virtuellen PC installieren.

WINE ist kein Emulator, da es keine Anweisungen von Ziel-Binärdateien interpretiert oder Prozessoren simuliert. Es lädt nur ein Programm in den Speicher und bietet eine API-Übersetzung von WinAPI zu den POSIX / Linux-APIs des Hosts (und Xlib für Grafik und Maus sowie eine andere API für Sound usw.).

Warum wird projiziert (oder was ist erforderlich / warum sollte es erlaubt sein), Windows-Programme unter Ubuntu auszuführen?

WINE wurde viel vor der Gründung von Ubuntu projiziert. Das Projekt wurde 1993 nach Solaris 'ähnlichem Projekt "Wabi" gestartet . Es ist nützlich, über die Fähigkeit zu verfügen, Anwendungen zu starten, die auf einem anderen Betriebssystem ausgeführt werden können, insbesondere wenn dieses andere Betriebssystem weit verbreitet ist und viele Software (und Spiele) exklusiv für dieses Betriebssystem erstellt wurden, von denen aus nicht direkt gestartet werden kann jedes andere Betriebssystem wie Unix, Solaris oder Linux.

Es wird jedoch nicht vollständig mehrere Software von Windows und Grafiken unterstützt.

WINE kann nicht die genaue Implementierung aller WinAPI (einige Teile davon sind nicht dokumentiert) und aller benötigten Bibliotheken haben. Einige Windows-Programme verwenden APIs oder Bibliotheken, die nicht implementiert sind, sodass sie nicht mit WINE arbeiten können.

Und was sind parallele Pakete wie Cross-Over, spielen unter Linux?

Crossover ist eine kommerzielle Variante von WINE mit besserer Unterstützung, einigen Hilfs-GUI-Tools (zur einfachen Installation von Software) und einer überprüften Kompatibilitätsliste für funktionierende Windows-Programme und -Spiele. Normalerweise sollten Sie CodeWeavers, den Entwicklern von CrossOver, etwas Geld (40 US $) zahlen, um das Paket für lange Zeit zu nutzen und Unterstützung zu erhalten. CodeWeavers (kleines Unternehmen) unterstützt das Weinprojekt, indem es alle Patches erneut sendet und an mehrere Weinentwickler zahlt. Laut Wikipedia:

" CrossOver wurde von CodeWeavers entwickelt und basiert auf Wine, einer Open-Source-Windows-Kompatibilitätsschicht. CodeWeavers ändert den Wine-Quellcode, wendet Kompatibilitätspatches an, fügt benutzerfreundlichere Konfigurationstools hinzu und bietet technischen Support. CodeWeavers verwendet mehrere Wine-Software Entwickler und trägt Quellcode zu Wine bei. "

osgx
quelle