lunedì 26 febbraio 2007

Wine...eseguire i programmi di Windows in Linux


Wine (Wine Is Not an Emulator, un acronimo ricorsivo, Wine non è un emulatore) è un software nato originariamente per Linux, poi esteso ad altri sistemi operativi, con lo scopo di permettere il funzionamento dei programmi sviluppati per il sistema operativo Microsoft Windows.

Il progetto è stato difficile e dispersivo per gli sviluppatori, solo in parte per l'incompleta o incorretta documentazione delle Win32 API. La maggior parte delle funzioni di Win32 sono documentate, ma alcuni ambiti, come i formati dei file e i protocolli, non hanno una descrizione ufficiale da parte di Microsoft. Lo stesso vale per funzioni di basso livello e per oscuri bug che dovrebbero essere duplicati precisamente affinché le applicazioni si comportino come previsto. Gli sviluppatori di Wine hanno quindi dovuto ricorrere spesso al reverse engineering.



Funzionamento

Come si evince dal nome, il progetto Wine non intende realizzare un emulatore. La sua funzione primaria è quella di realizzare un layer di compatibilità per il maggior numero di applicazioni Windows fornendo le API necessarie per il loro funzionamento. In questo senso, Wine non emula nessuna architettura o sistema operativo, bensì fornisce una estensione al supporto a tempo di esecuzione dei programmi che richiedono specifiche funzioni di Windows. Per fare ciò Wine si appoggia al sistema 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).


Architettura

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 sottinsieme 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.

Modalità d'uso

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 creata appositamente, una directory "fake windows".

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


La risposta di Microsoft a Wine

Microsoft non ha mai reso dichiarazioni pubbliche su Wine. Comunque Microsoft Update bloccherà eventuali aggiornamenti delle applicazioni Microsoft che girano in ambienti Wine. Il 16 febbraio 2005, Ivan Leo Puoti scoprì che Microsoft cercava nel registro di Windows alla ricerca di chiavi relative a Wine e questo impediva 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 anti trust."

Il sistema Windows Genuine Advantage (WGA) controlla anch'egli 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". Alcuni sono riusciti a far funzionare il WGA in ambienti Wine.

La versione beta di Microsoft Internet Explorer 7 richiede WGA, quindi non può essere installato sui sistemi con Wine.


|Link Wiki|

|Link Ufficiale|

Nessun commento: