Wine

Da Wikipedia, l'enciclopedia libera.
bussola Disambiguazione – Se stai cercando altri significati, vedi Wine (disambigua).
Wine
Logo
Finestra di configurazione di Wine
Finestra di configurazione di Wine
Sviluppatore Team di Wine
Ultima versione 1.6.2 (10 gennaio 2013; 19 mesi fa)
Ultima beta 1.7.23 (25 luglio 2014; 53 giorni fa)
Sistema operativo Linux
Mac OS X
POSIX
Linguaggio C
Genere Emulatore
Licenza GNU Lesser General Public License
(Licenza libera)
Sito web winehq.org

Wine (Wine is not an emulator, un acronimo ricorsivo, in italiano traducibile con Wine non è un emulatore) è un software scritto in C nato originariamente per sistemi operativi GNU/Linux, poi esteso ad altri sistemi operativi, con lo scopo di permettere il funzionamento dei programmi sviluppati per il sistema operativo Microsoft Windows.
In realtà fino al 1997 Wine era l'acronimo di Windows emulator, [1] poi cambiato nell'attuale per distinguerlo dai normali emulatori.

Storia[modifica | modifica sorgente]

Bob Amstadt (il capo progetto iniziale) e Eric Youngdale hanno avviato lo sviluppo di Wine nel 1993 come un modo per eseguire applicazioni Windows su Linux. Tracce dell'origine del progetto sono rinvenibili nelle discussioni su Usenet in comp.os.linux nel giugno 1993.
Il programma era ispirato da due prodotti coordinati da Sun Microsystems: Wabi per il sistema operativo Oracle Solaris e Windows Public Initiative (un tentativo di reimplementare completamente le API di Windows API in forma open source come standard ISO ma respinti a causa della pressione da parte di Microsoft nel 1996) ed aveva come obiettivo originario le applicazioni create per Windows 3.x (16-bit).
Oggi invece si concentra sulle applicazioni a 32 e 64 bit realizzate per i sistemi operativi di derivazione NT.

A dirigere oggi lo sviluppo del progetto è Alexandre Julliard, dal 1994.

Inizialmente Wine veniva rilasciato sotto licenza MIT come il sistema X Window, ma a causa di preoccupazioni per le versioni proprietarie di Wine che in quel modo potevano non rilasciare le loro modifiche al progetto di base, a partire da marzo 2002 il progetto ha utilizzato la licenza LGPL per Wine.

La prima release candidate per la versione 1.0 venne rilasciata il 9 maggio 2008. Dopo altre quattro release candidate, la versione definitiva 1.0 di Wine è stata rilasciata il 17 giugno 2008, dopo ben 15 anni di sviluppo.

Caratteristiche[modifica | modifica sorgente]

Architettura[modifica | modifica sorgente]

Schema architetturale del sistema Wine

L'architettura del sistema Wine si rifà a quella dei sistemi NT. Al livello più alto della gerarchia si trova l'applicazione da eseguire, la quale si interfaccia con un sottoinsieme di librerie specifiche del programma ed alcune librerie di sistema, le quali non comunicano direttamente con il kernel ma con un sottosistema specifico per la piattaforma Win32, coadiuvato da una libreria di interfaccia (la NTDLL).

In Windows NT, le applicazioni non effettuano chiamate dirette a funzioni del kernel, bensì ad uno dei sottosistemi realizzati, i quali si prodigano di effettuare le comunicazioni ai livelli più bassi; a questo punto della gerarchia, il ruolo di interfaccia del kernel viene sostituito dal wineserver, un programma attivo come processo demone che gestisce i processi ed i thread delle applicazioni, oltre alla loro sincronizzazione ed intercomunicazione. Parallelamente al wineserver, l'applicazione viene avviata tramite l'incapsulamento in un wine-thread, un programma client visibile come un processo Unix a tutti gli effetti.

Le applicazioni e le librerie che si riferiscono direttamente ai driver di sistema di windows vengono reindirizzate verso la rispettiva componente implementata dal wine driver. Nella sua interezza il sistema prevede che vengano poi utilizzati i driver del kernel del sistema operativo utilizzato, in maniera invisibile ai livelli più alti.

Alla base del sistema, sia il server che i programmi client di Wine fanno riferimento alle librerie standard del sistema Unix, ed in particolare alla libreria di sistema ed a quella del sistema X. Il tutto, nella sua interezza, viene eseguito nello spazio utente del sistema operativo. A oggi nessun tipo di integrazione diretta con i livelli più bassi del sistema (come una integrazione modulare al kernel) sono previsti, specie per evitare limitazioni che eviterebbero il funzionamento di Wine su differenti piattaforme.

Funzionamento[modifica | modifica sorgente]

Invece che agire come un emulatore completo, Wine implementa un layer di compatibilità, offrendo implementazioni alternative e open source delle DLL, chiamate per i programmi di Windows e processi per sostituire il kernel di Windows NT, fornendo il collegamento alle API necessarie per il loro funzionamento.
Quindi in questo senso, Wine non emula nessuna architettura o sistema operativo, bensì fornisce ai programmi in esecuzione il supporto necessario per l'utilizzo di specifiche funzioni di Windows eventualmente richieste.
Per fare ciò Wine si appoggia al sistema grafico (es. X11), in quanto gran parte delle applicazioni native per Win32 necessitano di primitive grafiche per la gestione di finestre (le applicazioni a riga di comando sono comunque utilizzabili tramite il programma wineconsole).

Il progetto si è tuttavia rivelato lungo e difficile per gli sviluppatori, soprattutto a causa della documentazione incompleta e non corretta delle API di Windows. Mentre la maggior parte dei documenti Microsoft descrive ampiamente le funzioni Win32, alcune zone, come i formati di file e protocolli non hanno specifiche ufficiali di Microsoft.
A volte è stato necessario che Wine replicasse anche oscuri bug per permettere ad alcune applicazioni di funzionare correttamente. Di conseguenza, la squadra di Wine ha fatto uso di una tecnica di reverse engineering detta Clean room design per poter implementare molte chiamate di funzione e poter utilizzare formati di file in alcuni settori.

Piattaforme supportate[modifica | modifica sorgente]

Sebbene sviluppato principalmente per Linux, successivamente sono stati rilasciati port per Mac OS X, FreeBSD e Oracle Solaris, che vengono aggiornati più o meno in contemporanea con la versione Linux. Versioni risalenti al 1999 di Wine sono disponibili per OpenBSD e NetBSD.

Anche se attualmente non è aggiornato, paradossalmente, è disponibile un port delle DLL di Wine per Microsoft Windows.

Configurazione ed utilizzo[modifica | modifica sorgente]

Il programma può usufruire della directory contenente la struttura base di Windows, con le directory "Windows", "Programmi", "Documenti", le DLL, e i file di configurazione (come i file INI e il Registro di sistema). Può essere quella originale o, meglio, una fittizia personalizzata.

Ci sono molte utility per configurare wine, a parte wine-utils che sono applicazioni base integrate con wine per gestirlo (regedit, pannello di controllo wine ed altre), la più comune e funzionale è winetools ma esiste anche winesetuptk, il cui sviluppo è però, fermo da tempo, e Sidenet.

Una volta configurato Wine per avviare un file eseguibile di Windows basta digitare nel terminale:

wine ./percorso/file.exe

Programmi di utilità[modifica | modifica sorgente]

PlayOnLinux[modifica | modifica sorgente]

Interfaccia di Play on Linux

Si tratta di una interfaccia grafica che si propone di semplificare l'installazione di applicazioni basate su Windows in ambiente Linux. Sviluppato in Bash e Python, fornisce degli script con estensione .pol che specificano le configurazioni di Wine necessarie per installare ed eseguire una particolare applicazione.

Permette agli utenti di installare le applicazioni più diffuse nell'ambito Windows, come Apple iTunes e Safari, Microsoft Office, Microsoft Internet Explorer v.6/7, AutoCAD, Mono, .NET Framework 2.0, Fireworks MX, Flash MX, e molti altri.[2]

Utilizza un database online di script da applicare alle diverse applicazioni che richiedono una configurazione particolare; se l'applicazione non è nel database, può essere eseguita un'installazione manuale. Oltre ai giochi, qualsiasi altro programma può essere installato ed ognuno viene messo in un contenitore diverso (WINEPREFIX) per evitare interferenze di un programma con un altro. Questo fornisce un "isolamento" più o meno simile a quello fornito dalle "bottles work" di CrossOver.

Le applicazioni installate rimangono separate le une dalle altre. Possono utilizzare diverse versioni e configurazioni di Wine a seconda dei casi. L'installazione di queste è gestito da Play On Linux su software Linux senza la necessità di installare Wine separatamente.

Progetti correlati[modifica | modifica sorgente]

Gran parte del codice di Wine viene tuttora impiegato per lo sviluppo di ReactOS, un sistema operativo libero il cui scopo è sostituire, fornendo piena compatibilità con applicazioni e driver, la piattaforma Windows. Si tratta di un progetto indipendente dai sistemi Unix-like, con kernel e struttura autonomi. L'inclusione in ReactOS del codice di Wine e la continua collaborazione dei gruppi dei due progetti hanno dato una spinta decisiva al sistema operativo che ha beneficiato del lavoro iniziato diverso tempo prima dagli sviluppatori di Wine.

Il codice di Wine è anche la base sulla quale sono nati due progetti commerciali: CrossOver e Cedega (nato dal progetto WineX, fork dello stesso Wine) che cerca di supportare nel modo più efficiente possibile una gran quantità di videogiochi sviluppati utilizzando sia librerie grafiche OpenGL che DirectX.

Altri progetti che utilizzano Wine sono:

  • Darwine, un port delle librerie Wine al sistema operativo Darwin e al Mac OS X. Darwine all'inizio compilava i sorgenti Windows ai binari Mach-O. Con l'avvento dell'architettura Apple-Intel, Darwine iniziò ad eseguire i binari Win32.
  • E/OS, un progetto ambizioso per eseguire un qualsiasi programma progettato per un qualsiasi sistema operativo senza bisogno di installare nessun sistema operativo.
  • Rewind, un progetto MIT ora abbandonato.

Rapporti di Microsoft con Wine[modifica | modifica sorgente]

Microsoft non ha mai reso dichiarazioni pubbliche su Wine. Comunque Microsoft Windows Update blocca eventuali aggiornamenti delle applicazioni Microsoft che girano in ambienti Wine. Il 16 febbraio 2005, Ivan Leo Puoti scoprì che Microsoft setacciava il registro di Windows alla ricerca di chiavi relative a Wine per impedire l'utilizzo di Windows Update. Puoti scrisse:

« [...] anche se questo è solo un primo tentativo, stanno tentando di discriminare gli utenti Wine. Se questo può essere accettabile per componenti del sistema operativo, questa è probabilmente una violazione delle leggi antitrust[3] »

Il sistema Windows Genuine Advantage (WGA) controlla anch'esso l'esistenza di chiavi Wine nel registro. Le FAQ dichiarano esplicitamente che WGA non funzionerà sotto Wine perché non è un "genuine Windows": "Quando il WGA trova WINE in esecuzione sul sistema, notificherà all'utente che stanno eseguendo un Windows non originale e non permetterà il download in quel sistema".[4] Alcuni sono riusciti a far funzionare il WGA in ambienti Wine.[5]

Windows Media Player 11 richiede WGA, quindi non può essere installato su sistemi con Wine. Di contro è stato rimosso il controllo WGA di Internet Explorer 7 ed è possibile installarlo con Wine.

Note[modifica | modifica sorgente]

  1. ^ FAQ WINE
  2. ^ (EN) Play on Linux, Play on Linux. URL consultato il 27 aprile 2010.
  3. ^ Ivan Leo Puoti, Microsoft genuine alla ricerca di Wine (mailing list), 2005. URL consultato il 23 gennaio 2006.
  4. ^ FAQ Genuine Windows, Microsoft Corporation. URL consultato il 30 gennaio 2006.
  5. ^ WGA con Wine.

Voci correlate[modifica | modifica sorgente]

Altri progetti[modifica | modifica sorgente]

Collegamenti esterni[modifica | modifica sorgente]