Emulazione e Virtualizzazione sotto Linux
Transcript
Emulazione e Virtualizzazione sotto Linux
Virtualizzazione ed Emulazione Esistono 100 tipi di persone: ✔ Quelli che emulano, ✔ Quelli che virtualizzano, ✔ Quelli che emulano e virtualizzano, ✔ Quelli che si stanno chiedendo quali sono gli altri 96 tipi di persone (e probabilmente non emulano nè virtualizzano) Guru@Work 2007 Giulio Rossetti [email protected] Di cosa stiamo parlando? Parte prima ➢ Soluzioni per “utilizzare” applicativi scritti per Sistemi Operativi diversi da quello installato sulla nostra macchina, ➢ Gestire più SO sulla stessa macchina allo stesso tempo, ➢ Mantenere Sw per sistemi Hw datati (Legacy Sw), ➢ Garantire la portabilità di applicazioni su più SO ➢ ... ➢ Giocare con Linux!!! Le alternative... ✗ Emulazione: Simulazione di hw per usufruire di Sw scritto per architetture diverse da quella reale del sistema. ✗ Virtualizzazione: Creazione di “sandbox” capaci di eseguire eviroinments (ambienti) in modo da rendere disponibili SO guest sul SO utilizzato (host). ✗ Ibridi: Solitamente versioni congiunte dei due approcci precedenti o bridge tra eviroinments guest e host. Emulazione ● ● Obiettivo: Gestire (e mantenere) ambienti e sistemi Legacy. Come: Ricreare a Sw ambienti Hw dismessi (circuiteria etc..) utili per la gestione dei programmi da emulare. ✔ Pro: Compatibilità totale (pressapoco) con sistemi di diversa architettura Hw. ✗ Contro: lentezza dovuta alla fase di emulazione delle risorse hw (risolvibile per architetture datate, limitante per quelle recenti soprattutto per quanto riguarda le console degli ultimi anni). ● Esempi: Mame, qemu, Epsx, XboxEmu, NintendoDSemu.... La Virtualizzazione ● ● Obiettivo: Rendere disponibile uno (o più) SO allo stesso tempo sulla stessa macchina, oltre a quello di partenza. Come: Creando un ambiente (evironment), da rendere disponibile a ciascun SO guest, che gli consenta di avere a disposizione (in tutto o in parte) le risorse del sistema Hw sottostante. ✔ Pro: Ambienti di lavoro indipendenti, SO guest “completi”, soluzioni native. (Ottimalità per casi di test o server multipourpose). ✗ Contro: Pesantezza dei sistemi virtualizzati (per una normale workstation), context switch tra SO, risorse Hw condivise. ● Esempi: VirtualBox, Kvm, Xen, VmWare, ScummVM Ancora Virtualizzazione... Vantaggi Problemi ● Backup (snapshot) ● 3D ● Sandbox ● Streaming Video ● Portability ● CPU/GPU intensive work ● VMM (Minimal VM) ● Only same Architecture Sistemi Ibridi ● ● Obiettivo: Giusto compromesso tra Emulazione e Virtualizzazione (possibilmente rendendo il processo più “veloce”) Come: Realizzando un Layer (bridge) che si preoccupi di reimplementare la parte delle librerie (o del kernel) dell'applicativo desiderato mappandole sul SO corrente. ✔ Pro: Velocità, Hw reale utilizzato, leggerezza (integrazione di singole applicazioni e non di SO). ✗ Contro: Implementazione non banale e personalizzata per ciascuna libreria usata dai programmi desiderati, reverse-engeneering non sempre ottimale. ● Esempi: Wine, Solaris kernel. Linux Gaming!! Parte seconda “Non puoi morire in un gioco della Lucas Arts” ● ● E' possibile giocare con Linux? Quanto visto serve a qualcosa oltre che a riempire il PC di SO che non userò mai?? ● Quale delle 3 alternative viste è la migliore? ● Chi è Guybrush Threepwood?* * Un temibile pirata... Linux Gaming: all'inizio fu il MAME... Acronimo per “Multiple Arcade Machine Emulator” Fine: emulare piattaforme di gioco arcade, documentare il funzionamento di coin-op. ● Rom.. ● ...3 anni dall'uscita del gioco Linux Gaming: l'avvento di ScummVM Acronimo per “Script Creation Utility for Maniac Mansion Vitual Machine” Fine: rendere disponibili titoli della Lucas Arts su più piattaforme Sw. ● Cross-platform ● Supporta giochi non SCUMM Linux Gaming: Wine Acronimo (ricorsivo) per “Wine Is Not an Emulator” Fine: Portabilità di Sw scritto per MS Windows su GNU/Linux ● Reverse-engineering (DLLWin32 API) ● Layer di compatibilità ● Wineserver Linux Gaming: Comunity Se ho problemi di configurazione a chi mi posso rivolgere? ✔http://www.linux-gamers.net/ ✔http://linuxgameproject.netsons.org/ ✔http://www.linuxgamingworld.com/ ✔http://appdb.winehq.org/ (Sw supportato da wine) ✔http://icculus.org/lgfaq/ (Linux Gamers' FAQ) ✔http://www.GuruAtWork.com/forum/ (Coming Soon!!!) ✔....ma soprattutto... www.Google.it Linux Gaming: Alternative Native ● Per Giocare è obbligatorio emulare/virtualizzare? ● Esistono alternative su Linux? ● Chi sviluppa giochi per Linux? ● Dove posso reperirli? ● Quanto costano? ● ● Esistono porting di giochi commerciali? Emulare/Virtualizzare è legale? legale Per iniziare a documentarsi: http://en.wikipedia.org/wiki/List_of_open_source_games Conclusioni (I) Si Emula per: ● Usare Sw scritto per sistemi datati ● Ricreare ambienti Hw Si Virtualizza per: ● Server Multipourpose ● Avere più SO attivi contemporaneamente ● Ricerca e Testing ● ... Si adottano Ibridi per: ● ● Usare un solo SO tentando di ottenere il max della velocità possibile da applicativi scritti per SO diversi ... Conclusioni (II) I motivi per cui è stato preso come esempio il mondo dei Videogame sono due: Circa il 90% dello sviluppo Hw è dovuto a migliorare la realizzazzione della gestione del 3D (schede ATI con 150core...) ● Una gestione critica, come quella del 3D, è un buon banco di prova per le soluzioni viste: queste aggiungono, infatti, un ulteriore layer di astrazione rendendo la computazione ancor più gravosa per le risorse Hw reali della macchina. ● Inoltre è così stato possibile sfatare il mito che non è possibile giocare con Linux. (benchmark dimostrano che, per i giochi supportati “out of the box” da wine, in buona parte dei casi il confronto con Windows, a parità di Hw, è vinto...) The End Grazie per l'attenzione!! (un ringraziamento particolare va a TuxFactory per i Tux usati nella presentazione)