KYMENLAAKSON AMMATTIKORKEAKOULU Tietotekniikan
Transcription
KYMENLAAKSON AMMATTIKORKEAKOULU Tietotekniikan
KYMENLAAKSON AMMATTIKORKEAKOULU Tietotekniikan koulutusohjelma / Ohjelmistotekniikka Jussi Tuominen WINE-API SEKÄ VIRTUALISOINTIOHJELMISTOT Seminaarityö 2012 SISÄLLYS LYHENTEET JA TERMIT 1 JOHDANTO 6 2 VIRTUALISOINTI 6 2.1 Virtualisoinnin historiaa 7 2.2 Virtualisointityypit 8 2.2.1 Palvelinvirtualisointi 8 2.2.2 Tallennusvirtualisointi 9 2.2.3 Sovellusvirtualisointi 9 2.2.4 Työasemavirtualisointi, VDI 10 2.2.5 Verkkovirtualisointi 11 2.3 Virtualisointitekniikat 11 2.3.1 Täysvirtualisointi 12 2.3.2 Paravirtualisointi 12 2.3.3 Käyttöjärjestelmävirtualisointi 14 2.3.4 Natiivi virtualisointi 15 2.4 Emulointi 16 2.5 Virtualisoinnin edut ja ongelmat 16 3 WINE 17 3.1 Winen historiaa 18 3.2 Käyttöönotto ja toiminta 21 3.2.1 Asennus 21 3.2.2 Työkalut 23 3.2.3 Windows-ohjelmien asentaminen 24 3.2.4 Windows-ohjelmien ajaminen 25 3.2.5 Asetuksien määrittäminen 26 3.3 Ominaisuudet ja yhteisö 28 3.3.1 Winen hyödyt 31 3.3.2 Winen ongelmat 32 4 VIRTUALISOINTIOHJELMISTOJA 33 4.1 Xen 34 4.2 KVM 34 4.3 VMware 34 4.4 QEMU 35 4.5 VirtualBox 36 4.6 LXC 36 4.7 OpenVZ 36 4.8 Parallels Workstation 37 4.9 UML 37 4.10 Linux-VServer 37 4.11 Virtual Machine Manager 38 LÄHTEET 39 LIITTEET Liite 1. Virtualisointiohjelmistoja Linuxille LYHENTEET JA TERMIT API (Application Programming Interface) Rajapinta, joka mahdollistaa erikoissovellusten ohjelmoimisen pohjalla olevaan ohjelmaan. API sisältää erilaisia käskyjä ja toimintoja, joilla lisälaitteet ja -ohjelmat saadaan toimimaan yhdestä ohjelmasta käsin. (Micro Aided Design Oy 2010.) Distribuutio Englannin kielen sanasta distribution tullut nimitys, joka tarkoittaa jakeluversiota. Se on vapaasti jaettavissa ja kehitettävissä oleva käyttöjärjestelmä, jota jokainen käyttäjä voi muokata ja jakaa eteenpäin. Distribuutio, tai tuttavallisemmin ”distro”, on vakiintunut tarkoittamaan erityisesti Linuxin erilaisia jakeluversioita. Emulaattori Ohjelma, joka jäljittelee toista ohjelmaa tai laitetta. Sana emulaattori tulee latinan kielestä: aemulātor tarkoittaa sananmukaisesti kilpailijaa tai jäljittelijää. (Pulkkinen 2000.) Hypervisor Virtualisointialusta, joka on kerros käyttöjärjestelmän ja fyysisten resurssien välissä. Hypervisorin päällä voidaan ajaa yhtä tai useampaa virtuaalista käyttöjärjestelmää, jonka suoritinajasta se huolehtii. Jossain yhteyksissä hypervisorista on käytetty myös käsitettä VMM (Virtual Machine Monitor). POSIX (Portable Operating System Interface for uniX) IEEE:n julkaisema, UNIX-pohjaisille käyttöjärjestelmille kehitettyjen standardien kokoelma. Standardeilla pyritään siihen, että kaikki kehityksen alla oleva koodi toimisi kaikissa POSIX-yhteensopivissa käyttöjärjestelmissä. POSIX sai alkunsa vuonna 1985, jolloin tavoitteena oli yhtenäistää UNIX-pohjaisia käyttöjärjestelmiä sekä käyttäjän että ohjelmoijan näkökulmasta. (Höök, Orola, Kosonen 2009.) VDI (Virtual Desktop Infrastructure) Perinteisten työasemien virtualisointi. Virtuaalikone Ympäristö, joka näkyy toiselle käyttöjärjestelmälle erillisenä kokonaisena tietokoneena käyttöjärjestelmineen ja ohjelmineen. Käytännössä virtuaalikonetta simuloi isäntäjärjestelmässä (Host Operating System) suoritettava sovellus. Virtuaalikone näkyy sen päälle laitetulle käyttöjärjestelmälle aina samanlaisena riippumatta siitä, missä raudassa se pyörii. Kun virtuaalikone on kerran luotu johonkin, se voidaan siirtää toiseen tuettuun laitteistoympäristöön. Virtuaalikoneeseen asennettua käyttöjärjestelmää kutsutaan vieraskäyttöjärjestelmäksi (Guest Operating System). 6 1 JOHDANTO Tämä seminaarityö on osa Linux-järjestelmät -kurssia Kymenlaakson ammattikorkeakoulussa syksyllä 2012. Työn aiheena on Wine sekä muut virtualisointiohjelmistot Linux-ympäristöön. Omalla kohdallani virtualisointi on melko tuttu käsite, sillä olen sekä Windows- että Mac OS X -ympäristössä hyödyntänyt virtualisointia omassa työskentelyssäni. Käyttämiäni ohjelmistoja ovat VMware Fusion, VMware Workstation ja Parallels Desktop. Linux-maailma on jäänyt virtualisoinnin kannalta enemmän takaalalle. Itse olen sisäistänyt virtualisoinnin tarjoamat hyödyt siten, että käytettävissä olevalla alustalla on mahdollista ajaa yhteensopimattomia sovelluksia virtuaalisesti toisen käyttöjärjestelmän sisällä ilman isäntäjärjestelmän uudelleenkäynnistämistä. Tämäntyyppisiä sovelluksia voivat olla esimerkiksi joidenkin laitevalmistajien ohjelmistot, erilaiset lisäosat ja liitännäiset sekä pelit tai ohjelmistot, joista kehittäjä ei ole julkaissut kaikkiin käyttöjärjestelmäympäristöihin yhteensopivaa versiota. Virtualisointi mahdollistaa käyttöjärjestelmien ajamisen, opiskelun ja ominaisuuksien testaamisen ennen niiden mahdollista ”virallista” käyttöä. Se voi olla esimerkiksi ohjelmistokehittäjille olennaisen tärkeä apuväline, jolla ohjelmien toimivuus voidaan varmistaa kohdelaitteessa tai käyttöjärjestelmäympäristössä. Tätä seminaarityötä tehdessä minulle valkeni, että virtualisointi on paljon muutakin. Nykyään sitä näyttäisi tapahtuvan miltei kaikkialla. Tässä seminaarityössä käyn ensin läpi virtualisointia yleisenä käsitteenä, kerron erilaisista virtualisointityypeistä ja -tekniikoista sekä virtualisoinnin hyödyistä ja ongelmista. Tämän jälkeen perehdyn tarkemmin itse Winen ominaisuuksiin ja sovelluksen käyttöön. Kerron myös Winen yhteisöstä, hyödyistä ja ongelmista. Työn lopussa esittelen lyhyesti muita Linuxille saatavilla olevia virtualisointiohjelmistoja. 2 VIRTUALISOINTI Virtualisoinnin määritelmiä on lukuisia. Erään määritelmän mukaan virtualisointi tarkoittaa jonkin näennäisen luomista. Käytännössä tämä tarkoittaa sitä, että luodaan jokin keinotekoinen asia, joka toimii ja näyttää luonnolliselta. Tietotekniikassa virtuali- 7 sointi voidaan käsittää menetelmänä, joka mahdollistaa yksittäisen fyysisen resurssin, kuten palvelimen, tallennuslaitteen, sovelluksen tai käyttöjärjestelmän, näyttäytymisen useina loogisina resursseina. Tämän myötä virtualisoitujen resurssien todelliset ominaisuudet eivät näy järjestelmille, sovelluksille tai loppukäyttäjille, jotka näitä resursseja käyttävät. Tämä voidaan suorittaa myös toisinpäin: monet fyysiset resurssit voidaan näyttää yhtenä loogisena resurssina. (Hiltunen 2010.) Virtualisoinnilla voidaan tarkoittaa myös ohjelmistopohjaista ratkaisua, jossa yhdellä fyysisellä laitteistolla suoritetaan yhtä aikaa virtuaalisesti yhtä tai useampaa käyttöjärjestelmää tai sovellusta. (Pitkänen 2008.) Virtualisointi voidaankin jakaa ohjelmistoja rautapohjaiseen virtualisointiin. 2.1 Virtualisoinnin historiaa Virtualisoinnin historia alkaa jo 1960-luvulta, jolloin suurten keskustietokoneiden laskentatehoa jaettiin käyttäjille ajamalla fyysisissä koneissa rinnakkain monia toisistaan eristettyjä virtuaalikoneita. Virtualisoinnin, joka silloin tunnettiin vielä nimellä osituskäyttö (time sharing), keksijänä pidetään Oxfordin yliopiston professoria Christopher Stracheyta (1916–1975). (Dittner, Rule 2007, 3.) Strachey loi niin sanotun moniajo-ohjelmoinnin (multi-programming), jossa toinen ohjelmoija pystyi samaan aikaan tekemään virheenkorjausta Stracheyn ohjelmoidessa toisaalla. Tämä ohjelmointimenetelmä oli perusta sen ajan tietoteknisille tehopakkauksille, supertietokoneille, joista kahta pidetään virtualisoinnin kehityksen virallisina alullepanijoina. Nämä kyseiset tietokoneet olivat The Atlas Computer ja IBM M44/44X, jonka arkkitehtuurin yhteydessä käytettiin ensimmäistä kertaa termiä virtuaalikone. Tällä tietokoneella pystyttiin ajamaan useita simuloituja virtuaalikoneita, jotka hyödynsivät isäntäkoneen laitteistoa, ohjelmistoja, muistia ja moniajoa. (Dittner, Rule 2007, 3.) Ensimmäinen kaupallisesti menestynyt virtualisointituote oli vuonna 1972 julkaistu IBM:n VM/370-käyttöjärjestelmä. Sen myötä virtualisointikerrosta kutsutaan edelleen VMM:n (Virtual Machine Monitor) sijasta nimellä hypervisor. 1980- ja 1990-lukujen aikana tietotekniikka koki suuria muutoksia ensin mini- ja tämän jälkeen mikrotieto- 8 koneiden yleistyessä. (Hämäläinen 2007.) Virtualisointi kehittyi koko ajan muun tietotekniikan mukana. 1990-luvun lopulle tultaessa IT-maailma oli kohdannut monia erilaisia virtualisointiin liittyviä hankkeita. Niistä osa oli kaatunut ja osa menestynyt. Vuosi 1999 toi tullessaan mullistavan muutoksen, kun VMware-yhtiö julkaisi ensimmäisen x86prosessoreille tarkoitetun virtualisointialustan. Tämän tekniikan avulla voitiin samassa mikrotietokoneessa ajaa rinnakkain monia käyttöjärjestelmäinstansseja. (Hämäläinen 2007.) Monet suuret yritykset kuten Microsoft, Sun Microsystems ja VMware ovat julkaisseet omat virtualisointiohjelmistonsa, jotka ovat tänä päivänä sekä yritysmaailmassa että yksityishenkilöiden käytössä todella aktiivisessa käytössä. Virtualisointiohjelmistot kehittyvät jatkuvasti ja vain tulevaisuus voi näyttää, kuinka pitkälle virtualisoinnin tarjoamat mahdollisuudet voidaan viedä. 2.2 Virtualisointityypit Virtualisointi on suuressa suosiossa nykypäivänä ennen kaikkea palvelinkäytössä, mutta myös muu virtualisointi on kasvattanut koko ajan suosiotaan. Tärkeimpiä virtualisointiintyyppejä palvelinvirtualisoinnin lisäksi ovat tallennusvirtualisointi, sovellusvirtualisointi, työasemavirtualisointi ja verkkovirtualisointi. Seuraavaksi esittelen pintapuolisesti edellä mainittuja virtualisointityyppejä. 2.2.1 Palvelinvirtualisointi Palvelinvirtualisointi eli laitevirtualisointi on eräs eniten hyödynnettyjä virtualisointityyppejä. Sillä tarkoitetaan fyysisen palvelinjärjestelmän virtualisoimista siten, että fyysisen koneen laitteistoa hyödynnetään virtualisoimalla se loogisiksi resursseiksi. Palvelimen käyttöjärjestelmä eristetään laitteistosta virtuaalipalvelimeksi eli virtuaalikoneeksi. Laitteiston ja virtuaalikoneen välissä toimii virtualisointikerros, joka huolehtii resurssien jaosta virtuaalipalvelimille. Yhdessä fyysisessä laitteessa voidaan ajaa samanaikaisesti useita virtuaalipalvelimia. Ne eivät ole riippuvaisia toistensa ominaisuuksista vaan ne voivat sisältää omat käyttöjärjestelmänsä. 9 Virtualisointitekniikkana palvelimissa voidaan käyttää esimerkiksi täysvirtualisointia, natiivia virtualisointia tai käyttöjärjestelmätason virtualisointia. Palvelinvirtualisoinnissa käytettyjä ohjelmistoja ovat Microsoft Virtual Server, Hyper-V, Citrix XenServer ja VMware. (Hentunen 2012.) Palvelinvirtualisoinnin etuja ovat kustannuksien pieneneminen sekä vikojen sietokyvyn ja käyttöasteen parantaminen. Tämä johtuu siitä, että suurin osa kapasiteetista saadaan käyttöön ajamalla palvelinlaitteistossa useita virtuaalipalvelimia. Erityisesti yritysmaailmassa palvelinvirtualisointi on nykypäivänä arkipäivää. 2.2.2 Tallennusvirtualisointi Tallennusvirtualisointi on yksi vanhimmista ja samalla huomaamattomimmista virtualisointityypeistä. Sillä tarkoitetaan tallennuslaitteiden kokoamista virtualisointikerroksen taakse yhdeksi joustavaksi loogiseksi resurssiksi. Yksinkertaisimpia esimerkkejä tallennusvirtualisoinnista ovat jaetut kansiot palvelimella ja käyttäjän kotihakemisto verkossa. Laajemmat järjestelmät, kuten NAS (Network-attached Storage) eli verkkotallennus ja SAN (Storage Area Network) eli tallennusalueverkko, ovat nekin tallennusvirtualisointia hyödyntäviä tekniikoita. Tallennusvirtualisoinnin etuja ovat saatavilla olevan levytilan optimaalinen käyttö ja säästäminen. Tämän tekniikan yksi merkittävimmistä hyvistä puolista on se, että vain osa joustavan loogisen resurssin koosta voidaan ottaa käyttöön. Tämän myötä mahdollinen ylikapasiteetti pystytään arvioimaan tarkemmin. Tallennustilan muutos onnistuu lennosta häiritsemättä muita resursseja käyttäviä toimintoja. Fyysiset tallennusmediat voivat sijaita useissa eri paikoissa ja useilla eri laitteilla. Tämä pienentää tiedon menettämisen riskiä. 2.2.3 Sovellusvirtualisointi Sovellusvirtualisoinnilla tarkoitetaan menelmää, jossa sovellus irrotetaan käyttöjärjestelmästä ja toisista sovelluksista. Virtualisoidut sovellukset ovat omissa erillisissä paketeissaan, toimivat käyttöjärjestelmän alla ja käyttävät sen resursseja. Käyttöjärjestelmä ja sovelluskerros voidaan myös erottaa, jolloin sovellukset eivät syö työaseman resursseja. Sovelluspaketti sisältää kaikki sovelluksen asetukset, tiedostot, 10 rekisterit ja kirjastot. Sovellus toimii omassa virtuaalikerroksessaan, jota kutsutaan myös "kuplaksi" tai "hiekkalaatikoksi". Virtuaalikerroksen ansiosta sovellukset eivät saa aikaan merkittävää tuhoa käyttöjärjestelmässä, jos asiat menisivät jostain syystä pieleen. Sovellusvirtualisoinnin merkittävin hyöty on vanhojen sovellusten toimivuus uudemmissa Windows-käyttöjärjestelmissä. Toinen etu on se, että sovelluksia ei asenneta käyttöjärjestelmään. Tämä ehkäisee yhteensopivuusongelmia sekä ristiriitoja sovellusten välillä. Lisäksi sovellusvirtualisointi mahdollistaa usean saman sovelluksen version ajamisen samassa käyttöjärjestelmässä. Myös sovellusten päivittäminen ja jakelu nopeutuu ja helpottuu. (Paasi 2011.) Sovellusvirtualisoinnissa virtualisoituja sovelluksia voi ajaa miltä tahansa työasemalta, jossa on tarjolla pääsy Internetiin. Sovellusvirtualisoinnilla on kuitenkin myös omat haittapuolensa. Kaikkia sovelluksia ei ole kehitetty virtualisoitavaksi. Niitä ovat esimerkiksi tietokantasovellukset, laiteajureita tarvitsevat sovellukset ja kernel-tason komponentteja käyttävät sovellukset, kuten virustorjuntaohjelmat ja palomuurit. Useiden edellä mainittujen sovellusten suorituskyky heikkenee olennaisesti niitä virtualisoitaessa. (Paasi 2011.) 2.2.4 Työasemavirtualisointi, VDI Työasemavirtualisoinnissa (myös työpöytävirtualisointi-nimitystä käytetään) käyttäjillä on käytössään vähemmän tehokkaat työasemat, kuten esimerkiksi "kevyet" päätteet tai vanhemmat laitteet, jotka käyttävät palvelimella olevaa työasemakäyttöjärjestelmää sovellusohjelmistoineen. Tämä virtualisointityyppi on lähtöisin palvelinvirtualisoinnin tuomista hyödyistä: palvelinvirtualisoinnin hyödyt voidaan jalostaa myös työasemakäyttöön. Työasemat välitetään käyttäjien päätteille välityspalvelimen (connection broker) avulla. Se huolehtii yhteyksien luonnista, katkaistujen yhteyksien poistamisesta sekä virtuaalityöasemien luonnista, käynnistämisestä ja sammuttamisesta. (Varik 2010.) Koska varsinainen käytettävä käyttöjärjestelmä sijaitsee palvelimella, on sitä mahdollista käyttää missä ja millä tahansa laitteella, jossa on Internet-yhteys. 11 Virtuaalisten työasemien käyttö parantaa tietoturvaa ja helpottaa ylläpitotehtäviä, koska työasemat sijaitsevat keskitetyissä paikoissa. Tämän myötä myös paikallisen tuen tarve pienenee esimerkiksi yritysmaailmassa. Työasemavirtualisoinnin huonoja puolia ovat tunnetusti olleet multimedian hallitsemisen ongelmat ja virtuaalisen käyttöjärjestelmän offline-käyttö. Tänä päivänä näitä ongelmia on pyritty vähentämään uudemmilla tekniikoilla. 2.2.5 Verkkovirtualisointi Verkkovirtualisointi on uusi ilmiö. Sen periaatteena on, että yhdistetään laite- ja ohjelmistotason verkkoresursseja ja verkon toimintoja yhdeksi ohjelmallisesti hallittavaksi kokonaisuudeksi. Tietoverkon ollessa virtuaalinen ja joustava, verkkovirheet pienenevät ja tiedostot liikkuvat verkossa varmemmin. Uusien verkkojen luominen on nopeaa. Verkkojen hallinta käy yhden hallintokeskuksen kautta, vaikka ne olisikin hajautettu omiksi ulkoisiksi verkoiksi. Verkkovirtualisoinnin avulla useita fyysisiä verkkoja voidaan keskittää yhdeksi virtuaaliseksi verkoksi ja hallita yhtenä kokonaisuutena. Samalla tavalla yksi verkko voidaan eriyttää eri virtuaaliverkoiksi ja käyttää erillisten verkkojen tapaan. (Ekurssit.net.) Olennaisia verkkovirtualisointia hyödyntäviä tekniikoita ovat VLAN (Virtual Local Area Network) eli virtuaalinen lähiverkko ja VPN (Virtual Private Network) eli virtuaalinen erillisverkko. Verkon virtualisoinnissa on mahdollista käyttää myös virtuaalisia verkkolaitteita, kuten virtuaalikytkimiä ja verkkokortteja. 2.3 Virtualisointitekniikat Virtualisointitekniikoita on olemassa monenlaisia, mutta yleisimpinä niistä voidaan pitää täys-, para-, ja käyttöjärjestelmävirtualisointia. Täysvirtualisoinnissa pyritään virtualisoimaan suoraan fyysistä laitteistoa, eikä tiettyä käyttöjärjestelmää. Paravirtualisointi ja käyttöjärjestelmätason virtualisointi keskittyvät sitä vastoin virtualisoimaan käyttöjärjestelmiä. Seuraavaksi esittelen lyhyesti yleisimpiä virtualisointitekniikoita. 12 2.3.1 Täysvirtualisointi Täysvirtualisointi (Full Virtualization) edellyttää niin sanotun hypervisorin olemassaoloa. Tekniikassa virtualisointikohteena on suoraan laitteisto käyttöjärjestelmän sijasta. Hypervisor-kerroksen avulla vieraskäyttöjärjestelmä on täysin eristetty koneen fyysisistä resursseista. Se olettaa toimivansa itse suoraan näiden resurssien yläpuolella. Täysvirtualisoinnin suurin etu on nopeus ja hyvä yhteensopivuus isäntä- ja vieraskoneiden välillä, jolloin voidaan ajaa sekalaisia yhdistelmiä eri käyttöjärjestelmistä. Lisäksi täysvirtualisointi mahdollistaa virtuaalikoneiden täydellisen eristämisen toisistaan. Täysvirtualisointiin kykeneviä virtualisointiohjelmistoja ovat esimerkiksi VMware Fusion ja VMware Workstation, Parallels Desktop ja VirtualBox. Täysvirtualisointisovellus ei tarvitse esiasennettua käyttöjärjestelmää toimiakseen. Sen avulla saavutetaan isäntäkoneen prosessorien ja muistin hyödyntäminen lähes alkuperäisellä tehokkuudella. Lisäksi tällä tekniikalla on suurin käyttöjärjestelmien tuki: ne voidaan asentaa ilman ylimääräisiä lisäohjelmia. Täysvirtualisoinnin huonona puolena on jatkuva emuloinnin tarve ja hypervisor-kerroksen olemassaolo. Se vaatii tietokoneelta paljon resursseja. Kaikissa virtuaalikoneissa on lisäksi oltava oma käyttöjärjestelmänsä. (Laitinen 2011.) Täysvirtualisoinnin idea on esitetty kuvassa 1. Kuva 1. Täysvirtualisointi (Godber 2007.) 2.3.2 Paravirtualisointi Toisin kuin täysvirtualisoinnissa, paravirtualisoinnissa (Paravirtualization) virtuaalikoneiden käyttöjärjestelmät ovat tietoisia toisistaan. Paravirtualisointia eli avustettua 13 tai osittaista virtualisointia käytettäessä tietokoneeseen tarvitsee asentaa erillinen isäntäkäyttöjärjestelmä, jonka kautta virtuaalisille käyttöjärjestelmille luodaan rajapinta. Tämä rajapintakerros tarjoaa virtuaalikoneille niiden tarvitsemat resurssit käytettäviä laitteita varten. Paravirtualisointi edellyttää järjestelmältä vähemmän suorituskykyä kuin täysvirtualisointi, koska käytössä on paljon vähemmän ajettavaa koodia. Toisin kuin täysvirtualisoinnin hypervisor, paravirtualisoinnin virtualisointikerros päästää ainoastaan yhden vieraskäyttöjärjestelmän kerrallaan fyysisiin resursseihin ja pysäyttää toiset, jotka pyrkivät samalle resurssille. Lisäksi sillä on laitteiston laaja tuki, koska tekniikka ei sisällä mitään laiteajureita. Paravirtualisointi on nopea tapa virtualisoida ja virtualisoidun järjestelmän nopeus lähentelee sen todellista nopeutta. Paravirtualisointi edellyttää käyttöjärjestelmän tukea. Tämän vuoksi käyttöjärjestelmiä tulee muokata niin, että niitä voidaan käyttää paravirtualisointirajapinnan kanssa. Jotta tämä saavutetaan, on virtualisoitavan käyttöjärjestelmän lähdekoodia muunneltava. (Mäntykoski 2011.) Tämä on selkeästi huono puoli, koska sen myötä virtualisoitavan käyttöjärjestelmän lähdekoodikin tulisi olla saatavilla. Esimerkkejä paravirtualisointiin pohjautuvista ohjelmistoista ovat Cambridgen yliopistossa kehitetty avoimen lähdekoodin sovellus Xen ja UML (User-mode Linux). Paravirtualisoinnin idea on esitetty kuvassa 2. Kuva 2. Paravirtualisointi (Godber 2007.) 14 2.3.3 Käyttöjärjestelmävirtualisointi Käyttöjärjestelmävirtualisoinnissa eli käyttöjärjestelmätasoisessa virtualisoinnissa (Operating system-level virtualization) käyttöjärjestelmiä ajetaan olemassa olevan käyttöjärjestelmän päällä. Näin virtualisoitu käyttöjärjestelmä ei näe isäntäkoneen resursseja virtualisoituna vaan fyysisinä resursseina. Virtualisoidut käyttöjärjestelmät ovat näin eristetty osittain tai kokonaan isännästä. Käyttöjärjestelmävirtualisointia käytettäessä virtuaalikone on nopea, jopa yhtä nopea kuin isäntäkone. Lisäksi kaikki käyttöjärjestelmät toimivat ilman laitteisto-ongelmia. (Vuorinen 2011.) Toisin kuin täys- ja paravirtualisoinnissa, käyttöjärjestelmävirtualisoinnissa ei käytetä hypervisoria. Kaikki teho lähtee itse käyttöjärjestelmästä. Ehkä suurin haittapuoli on se, että kaikkien vieraskäyttöjärjestelmien pitää toimia samalla käyttöjärjestelmällä. (Mäntykoski 2011.) Käytännössä käyttöjärjestelmävirtualisointia käytetään ainoastaan UNIX-pohjaisissa (palvelin-)ympäristöissä. Virtuaalikoneita ei ole eristetty ja suojattu toisiltaan yhtä hyvin kuin muissa virtualisointitekniikoissa. Tämä tekniikka onkin luotettavuudeltaan huonohko. Käyttöjärjestelmätasoinen virtualisointi on ollut kuitenkin yleisessä käytössä helpon käyttöönoton ansiosta. Esimerkkejä tätä tekniikkaa käyttävistä ohjelmistoista ovat OpenVZ, Linux-VServer ja Linux Containers (LXC). Käyttöjärjestelmätasoisen virtualisoinnin idea on esitetty kuvassa 3. Kuva 3. Käyttöjärjestelmätasoinen virtualisointi (Microsoft Developer Network 2009.) 15 2.3.4 Natiivi virtualisointi Natiivissa virtualisointissa eli laitteisto-ohjatussa virtualisoinnissa (Hardware-assisted virtualization) hyödynnetään x86-arkkitehtuuriin kehitettyjä laajennuksia. Kyseessä on eräänlainen sekoitus täysvirtualisointia ja paravirtualisointia. Käyttöjärjestelmät voidaan asentaa ilman muutoksia, mutta pienillä muutoksilla järjestelmän suorituskykyä voidaan parantaa. Natiivi virtualisointi tukee parhaiten uusia 64-bittisiä vieraskäyttöjärjestelmiä. (Knuutinen 2008.) Tekniikalla on paras suorituskyky prosessorin, muistin ja kiintolevyn käyttämisessä, sillä vieraskäyttöjärjestelmä pääsee ohjaamaan laitteistoa suoraan. (Laitinen 2011.) Tiedon ei siis tarvitse kulkea VMM:n (Virtual Machine Monitor) kautta kuten paravirtualisoinnissa. Natiivi virtualisointi soveltuu vain uudemmille laitteistoalustoille, koska tekniikka vaatii toimiakseen prosessorilta laitteisto-ohjatun kiihdytyksen tuen (hardware acceleration). Käytännössä suorittimen tai suorittimien täytyy tukea joko Inter VT tai AMD-V -prosessorilaajennuksia. Natiivin virtualisoinnin huonona puolena on käyttöjärjestelmän muokkaustarve saman tapaan kuin paravirtualisoinnissa. Natiivin virtualisoinnin idea on esitetty kuvassa 4. Kuva 4. Natiivi virtualisointi (VMware 2007.) 16 2.4 Emulointi Emulointi tarkoittaa koko laitteistokokonaisuuden simuloimista toisella laitteistoarkkitehtuurilla. Se on eräänlainen virtualisoinnin äärimuoto, vaikka se joskus eriytetään omaksi tekniikakseen. Emuloinnin avulla toiselle laitteistoarkkitehtuurille kehitettyjä ohjelmia voidaan ajaa toisella alustalla ilman lähdekoodin uudelleenkääntämistä tai muuttamista. Kaikki ohjelmien resurssit ovat käytössä, mutta niiden tehokkuus pienenee, koska jokaisen emuloitavan käskyn tulee kulkea binaarimuunnoksen läpi. Tämän myötä emulointi vaatii isäntäkoneelta runsaasti tehoa ja resursseja. (Salokanto 2010.) Emulointia käytetään pääasiassa erilaisiin ohjelmistokokeiluihin: kehitykseen ja testaukseen. Sitä voidaan suorittaa isäntäkäyttöjärjestelmän prosessina. Emuloitavan järjestelmän prosessori on virtuaalinen, joten se voi käyttää eri käskykantaa kuin isäntäjärjestelmän prosessori. Esimerkkejä emulaattoriohjelmista ovat Java Virtual Machine (JVM), QEMU, DOSBox ja Windows Phone Emulator. Emuloinnin idea on esitetty kuvassa 5. Kuva 5. Emulointi (Microsoft Developer Network 2009.) 2.5 Virtualisoinnin edut ja ongelmat Virtualisointi vähentää kustannuksia ylläpidossa ja laitteiston hankinnoissa, auttaa laskemaan sähkön kulutusta ja parantaa järjestelmän testausmahdollisuuksia. Koska virtuaalisten käyttöympäristöjen ja järjestelmien hallinta tapahtuu keskitetysti, niiden toimivuus pystytään paremmin turvaamaan. Tämän myötä mahdolliset ongelmatilanteet esimerkiksi laitteiston käyttökatkoksien osalta voidaan minimoida. Hyödyntämäl- 17 lä virtualisointia esimerkiksi palvelinjärjestelmissä fyysisten palvelimien tilalla, fyysisen laitteiston hankintatarve vähenee. Virtualisoinnin avulla voidaan yleisesti nostaa palvelinjärjestelmien käyttöaste 10 15%:n suoritinkuormasta teoriassa aina 80%:iin. Uusien virtuaalisten järjestelmien kuten virtuaalipalvelimien käyttöönotto on nopeaa ja virtuaalikoneiden siirtäminen toisiin järjestelmiin vaivatonta. Myös varmuuskopiointi hoituu keskitetymmin. Lisäksi virtualisoinnin hyödyistä täytyy mainita tilatarpeiden ja huoltokustannusten pieneneminen. (Hiltunen 2010.) Yleinen käsitys on, että virtuaalikoneet olisivat jollain tavalla turvallisempia kuin fyysiset järjestelmät. Todellisuudessa näin ei ole, vaan ne toimivat lähes samalla tavalla. Näin ollen samat tietoturvauhat ovat läsnä myös virtuaalisten järjestelmien kohdalla. Virtuaalikoneiden näennäisyyden ja tilapäisyyden vuoksi tietoturva saattaa jäädä hyvinkin alhaiselle tasolle, joka voi aiheuttaa suuriakin riskejä. (Päivinen 2008.) Lisäksi virtualisoinnin haitoiksi voidaan lukea ohjelmistojen yhteensopivuusongelmat ja suorituskyvyn ailahtelut ja heikkemeniset. Virtualisointi vaatii yleisesti ottaen nykyaikaisia laitteistoja, sillä se on resursseja syövää toimintaa. Nykypäivänä virtualisointiohjelmistojen kehityksen myötä edellä mainitut ongelmat ovat kuitenkin vähentyneet merkittävästi. Virtualisoinnin voidaan myös sanoa olevan taitolaji. Väärin toteutettuna virtualisointi toimii usein vain vianhakua hidastavana ja arkkitehtuuria monimutkaistavana uutena kerroksena, joka vaatii päivittämistä ja voi aiheuttaa palvelukatkoja. (Simula 2009.) 3 WINE Wine (Wine Is Not an Emulator), joskus myös (WINE tai wine) on avoimen lähdekoodin sovellus, jonka avulla Windows-ohjelmien ajaminen onnistuu muissa käyttöjärjestelmäympäristöissä. Nimensä mukaisesti Wine ei ole emulaattori vaan pikemminkin Windowsin API-rajapintakutsuja UNIX-alustan mukaiseksi tulkitseva ohjelmisto. Se luo niin sanotun yhteensopivuusrajapinnan POSIX-yhteensopivissa käyttöjärjestelmissä kuten Linuxissa, Mac OS X:ssa ja FreeBSD:ssa. Winen logo on nähtävissä kuvassa 6. 18 Kuva 6. Winen logo 3.1 Winen historiaa Winen kehitys alkoi virallisesti vuonna 1993. Tavoitteena oli kehittää työkalu Windows-ohjelmien ajamiseksi Linuxilla. Bob Amstadt oli alkuperäinen projektinjohtaja ja Eric Youngdale toinen perustajista. Wine otti vaikutteita Sun Microsystemsin kehittämästä, Solaris-käyttöjärjestelmälle suunnatusta WABI (Windows Application Binary Interface) -sovelluksesta sekä Public Windows Interface (PWI) -hankkeesta. Sen tarkoituksena oli painostaa Microsoftia julkaisemaan API:nsa yleiseen käyttöön. Kyseinen projekti lopetettiin vuonna 1996. Wine oli alunperin kehitetty ajamaan 16bittisiä Windows 3.x -ohjelmia. Amstadtin uutisryhmäviesti on näkyvissä kuvassa 7. 19 Kuva 7. Bom Amstadtin uutisryhmäviesti projektin käynnistämiseksi. (Shemesh 2003.) Alexandre Julliard on johtanut projektia vuodesta 1994. Windowsin pasianssi oli ensimmäinen ohjelma, jonka Winen kehittäjät saivat onnistuneesti ajetuksi. Kehittäjät keskustelivat projektin alkuvaiheina LKML-listojen (Linux Kernel Mailing List) välityksellä. Suuren kiinnostuksen myötä projektin uutisryhmä (Usenet) sai alkunsa heinäkuussa 1994. Tänä päivänä käytetyt postituslistat perusti Doug Ridgway lokakuussa 1998. 1990-luvun lopussa Windows alkoi julkaista 32-bittisiä ja uusia ominaisuuksia sisältäviä ohjelmistoja. Tämän myötä Winen rajapintakin vaati päivityksiä muun muassa verkkoyhteyksien ja rekisteritiedostojen tukemisen osalta. Winen arkkitehtuuri perustuu ohjelmien väliseen jaettuun osoiteavaruuteen. Tämä on olennainen ominaisuus tietoturvan ja jaettujen kansioiden toiminnan kannalta. Vuoden 1995 toukokuussa Wine alkoi tukea 32-bittisiä Windows-ohjelmia ja tammikuussa 1996 ensimmäiset Microsoft Office -ohjelmat pystyttiin ajamaan sovelluksessa. Winen viralliset verkkosivut avattiin marraskuussa 1997. (WineHQ. 2012.) 20 Vuonna 1998 Corel ilmoitti tukevansa Linuxia ja julkaisi myös oman kaupallisen käyttöjärjestelmänsä, Corel Linuxin, vuonna 1999. Yhtiö tuki myös Winen kehitystyötä. Kauan tämä ajanjakso ei kuitenkaan kestänyt ja vuonna 2001 Corel lakkautti Linux-kehityksensä ja myi käyttöjärjestelmänsä Xandrokselle. Samalla yhteistyö Winen kanssa päättyi. Wineä vuodesta 1999 lähtien kehittämässä ollut CodeWeavers-yhtiö julkaisi oman versionsa Winestä. Se sisälsi graafisia hallintatyökaluja ja helppokäyttöisen asennusohjelman. Vuoden 2001 syyskuussa julkaistu CrossOver-lisäosa (CrossOver Plugin) mahdollisti Windows-pluginien ajamisen yleisimmissä Linux-käyttäjien selaimissa ja sähköpostiohjelmissa. Seuraavan vuoden maaliskuussa yhtiö julkaisi CrossOver Officen, joka oli toimistokäyttöön suunniteltu kaupallinen ohjelmisto ajamaan muun muassa Microsoft Officea ja Adobe Photoshopia. (WineHQ. 2012.) CodeWeavers on vielä tänä päivänäkin Winen pääasiallinen kaupallinen yhteistyökumppani. Crossover Office tunnetaan nykyään pelkkänä CrossOverina, joka sisältää kaksi ohjelmistokokonaisuutta: CrossOver Mac ja CrossOver Linux. Ne mahdollistavat Windowssovelluksien ajamisen Linuxissa tai Mac OS X:ssa, ohjelmistosta riippuen. TransGaming Technologies julkaisi 2000-luvun alkupuolella WineX:n, Wineen pohjautuvan kaupallisen ohjelmiston, joka oli suunnattu pelien pelaamiseen Linuxissa. Se sai myöhemmin nimen Cedega. Ohjelman päätavoite oli emuloida Microsoftin DirectX:n API:a, johon Wine ei tuolloin vielä kyennyt. Cedega Gaming Service lakkautettiin 28. helmikuuta 2011, mutta kehitys jatkuu GameTree Linux Developer projektin alaisuudessa. Maaliskuun 9. päivänä 2002 Winen lähdekoodi siirtyi GNU LGPL:n (GNU Lesser General Public License) piiriin aiemman MIT-lisenssin sijasta ja tämän myötä se toi kehittäjille muutamia yleisiä sääntöjä noudatettaviksi. Ensimmäinen ehto oli, että lähdekoodi tulee olla kaikkien saatavissa, jotka hankkivat Winen. Toinen ehto oli, että yksinkertainen yhdistäminen (linking) Wineen ei tarkoita, että kehittäjän täytyy laittaa ohjelmansa lähdekoodi saataville. (WineHQ. 2012.) 12 vuoden kehitystyön jälkeen Winestä julkaistiin ensimmäinen virallinen beta-versio 25. lokakuuta 2005 (versio 0.9). Uusia beta-versioita julkaistiin noin kahden viikon välein yli kahden ja puolen vuoden ajan. Versio 1.0 julkaistiin lopulta 17. kesäkuuta 21 2008 15 vuoden kehitystyön tuloksena. Kehitysversioiden julkaisemista jatkettiin kahden viikon väleissä. Wine 1.2 julkaistiin 16.7.2010 ja Wine 1.4, tällä hetkellä uusin vakaa versiohaara, 7. päivänä maaliskuuta 2012, joka toi mukanaan merkittäviä uudistuksia ja tuen uusille ohjelmille. 3.2 Käyttöönotto ja toiminta Tässä seminaarityössä keskityn Winen käyttöön Fedora 17 -käyttöjärjestelmässä. Käytetty Winen versio on 1.5.17, joka on tätä raporttia kirjoitettaessa uusin kehitysversio ohjelmasta. Joihinkin Linux-distribuutioihin Wine sisältyy oletuksena, mutta ainakaan tässä Fedoran versiossa sitä ei ollut. Oletuksena pakettienhallinnassa tarjottiin versiota 1.5.13. Seuraavassa käyn läpi Winen asennuksen, Winen sisältämät työkalut sekä Windows-ohjelmien asennuksen ja ajamisen. 3.2.1 Asennus Winen asennus tapahtuu joko pakettienhallinnasta (Applications Software), joka on näytetty kuvassa 8. Kuva 8. Winen asentaminen Fedoran pakettienhallinnan kautta Add / Remove 22 Ohjelman voi asentaa myös komentoriviltä SuperUserina seuraavalla komennolla: # yum install wine Winen alla toimiva Windows asentuu oletuksena kansioon /home/user/.wine. Mikäli käyttäjä haluaa asennuksen omien mieltymystensä mukaisena tai asentaa jonkun toisen version, hän voi ladata lähdekoodin Winen virallisilta Internet-sivuilta ja kääntää siitä asennuspaketin komentorivin kautta siirryttyään ensin kansioon, missä lähdekoodi sijaitsee. Ensin on kuitenkin varmistettava, että järjestelmään on asennettu kaikki tarvittavat paketit käännöksen tekemiseen: # yum install alsa-lib-devel.i686 alsa-lib-devel audiofile-devel.i686 audiofile-devel cups-devel.i686 cups-devel dbus-devel.i686 dbus-devel fontconfig-devel.i686 fontconfig-devel freetype.i686 freetype-devel.i686 freetype-devel giflib-devel.i686 giflib-devel lcms-devel.i686 lcms-devel libICE-devel.i686 libICE-devel libjpeg-turbo-devel.i686 libjpeg-turbo-devel libpng-devel.i686 libpng-devel libSMdevel.i686 libSM-devel libusb-devel.i686 libusb-devel libX11-devel.i686 libX11-devel libXau-devel.i686 libXaudevel libXcomposite-devel.i686 libXcomposite-devel libXcursor-devel.i686 libXcursor-devel libXext-devel.i686 libXext-devel libXi-devel.i686 libXi-devel libXineramadevel.i686 libXinerama-devel libxml2-devel.i686 libxml2devel libXrandr-devel.i686 libXrandr-devel libXrenderdevel.i686 libXrender-devel libxslt-devel.i686 libxsltdevel libXt-devel.i686 libXt-devel libXv-devel.i686 libXvdevel libXxf86vm-devel.i686 libXxf86vm-devel mesa-libGLdevel.i686 mesa-libGL-devel mesa-libGLU-devel.i686 mesalibGLU-devel ncurses-devel.i686 ncurses-devel openldapdevel.i686 openldap-devel openssl-devel.i686 openssl-devel zlib-devel.i686 pkgconfig sane-backends-devel.i686 sanebackends-devel xorg-x11-proto-devel glibc-devel.i686 prelink fontforge flex bison libstdc++-devel.i686 pulseaudiolibs-devel.i686 gnutls-devel.i686 libgphoto2-devel.i686 openal-soft-devel openal-soft-devel.i686 isdn4k-utilsdevel.i686 gsm-devel.i686 samba-winbind libv4l-devel.i686 cups-devel.i686 libtiff-devel.i686 gstreamer-devel.i686 gstreamer-plugins-base-devel.i686 gettext-devel.i686 libmpg123-devel.i686 23 Tämän jälkeen tehdään itse paketti ja asennetaan se seuraavasti: $ $ $ # ./configure make depend make make install 3.2.2 Työkalut Fedorassa Winen näkyvissä olevat työkalut löytyvät ohjelmavalikon Other-kategorian alta. Niitä ovat: Työkalu Toiminta Käsky terminaalissa Wine Boot Simuloi Windowsin uudelleenkäynnistystä $ wineboot Wine Configuration Winen asetustenhallinta $ winecfg Wine File Tiedostojen hallintatyökalu eli resurssienhallinta $ winefile Wine Help Help-tiedostojen (*.hlp) näyttötyökalu $ wine winhlp32 Wine OLE View OLE- ja COM-objektien näyttötyökalu ja DCOM-määritykset $ wine oleview Wine Software Uninstaller Työkalu Windows-ohjelmien asennukseen ja poistamiseen Wine Wordpad Windowsin WordPad-ohjelma oletuksena mukana Winen asennuksessa Taulukko 1. Winen perustyökalut $ wine uninstaller $ wine wordpad 24 Wineen sisältyy oletuksena paljon muutakin, kuten esimerkiksi Windowsin explorer.exe, Internet Explorer -toteutus, Windowsin rekisterieditori, tehtävienhallinta ja Winen oma ohjauspaneeli. Näihin pääsee käsiksi komentokehotteen kautta. Winen ohjauspaneelista, Internet-asetukset -ikkunasta ja Lisää / Poista -ikkunasta on nähtävissä kuvankaappaus kuvassa 9. Kaikki saatavilla olevat komennot löytyvät Winen virallisilta Internet-sivuilta, osoitteesta http://wiki.winehq.org/ListofCommands. Kuva 9. Winen ohjauspaneeli, Lisää / Poista -valikko sekä Internet-asetukset 3.2.3 Windows-ohjelmien asentaminen Winessä ohjelmia voidaan asentaa joko suoraan tuplaklikkaamalla asennusohjelmaa tai klikkaamalla hiiren oikeaa näppäintä ja valitsemalla ”Open With Wine Windows Program Loader”, jos exe-tiedostoja ei ole laitettu avautumaan oletuksena Winellä. Kolmas mahdollisuus on asentaa ohjelmat Winen Application Uninstaller -työkalun kautta. Harhaanjohtavasta nimestä huolimatta sen kautta onnistuu myös ohjelmien asentaminen niin tietokoneelta, CD-levyltä kuin levykkeeltäkin. Asennustiedosto haetaan ”Install”-nappulalla ja tämän jälkeen asennus käynnistyy automaattisesti. Komentorivi soveltuu myös ohjelmien asentamiseen. Ensin navigoidaan asennusohjelman sisältämään kansioon ja suoritetaan komento: 25 $ wine install.exe Jos asennusohjelman pääte on muu kuin .exe, esimerkiksi .msi, komento on seuraavanlainen: $ wine start install.msi 3.2.4 Windows-ohjelmien ajaminen Windows-ohjelmia ajetaan joko suoraan ohjelmavalikosta asennuksen yhteydessä lisätyn pikakuvakkeen kautta tai komentoriviltä. Ensin tulee navigoida Winen virtuaaliseen ohjelmakansioon, Program Files, joka on sama kuin Windowsissakin: $ cd ~/.wine/drive_c/Program\ Files Tämän jälkeen - jos tarpeen - tehdään listaus ls-komennolla ja etsitään avattavan ohjelman exe-tiedosto ohjelman kansiosta. $ cd Foo $ ls *.exe Se avataan Winessä seuraavalla komennolla: $ wine foo.exe 26 Ohjelmia ajetaan tavallisena käyttäjänä. Niitä EI missään tilanteessa suositella ajettavaksi SuperUserina. Esimerkkikuvassa (kuva 10) CCleaner-ohjelma on käynnissä Winellä. Kuva 10. CCleaner-ohjelma käynnissä Winellä 3.2.5 Asetuksien määrittäminen Winen asetuksien määrittämiseen on oma työkalunsa, Wine Configuration. Se voidaan avata ohjelmavalikosta tai komentokehotteelta seuraavalla komennolla: $ winecfg Wine Configurationin ikkuna näkyy kuvassa 11. 27 Kuva 11. Winen asetusten muokkaustyökalu, Wine Configuration Asetusmuokkaimella voi muuttaa ohjelmien ja koko Winen toimintaa. Seuraavassa on listattu työkalun sisältämiä toimintoja: ! Applications - Wine voi jäljitellä jotakin tiettyä Windows-käyttöjärjestelmän versiota tiettyjen ohjelmien osalta. Esimerkiksi jotkin vanhemmat ohjelmat saattavat toimia paremmin Windowsin vanhemmalla versiolla. Nämä määritykset tehdään tällä välilehdellä. ! Libraries - Wine voi ladata Windowsin tai tietyn ohjelman alkuperäisiä DLLtiedostoja omien sisäänrakennettujen sijaan. Tämä menettely voi ratkaista Winen kanssa esiintyviä ongelmia. ! Graphics - Ikkuna- ja näyttöasetukset ! Drives - Asemien asetukset: uusien asemien lisäys ja poistaminen sekä asemien kytkemien sijaintiin. ! Audio - Ääniasetukset: ääniohjaimen valinta. 28 ! Desktop Integration - Erillisten Windows-teemojen (*.msstyles-tiedostojen) asennusmahdollisuus. Järjestelmäkansioiden osoitusmääritykset. 3.3 Ominaisuudet ja yhteisö Ohjelma keskittyy pääasiassa 32-bittisten ohjelmien ajamiseen. 64-bittinen versio Winestä on ollut kehitteillä tammikuusta 2009 lähtien, mutta on vielä epävakaa. 32bittinen versio toimii myös 64-bittisissä käyttöjärjestelmissä. Vaikka periaatteellisella tasolla mikä tahansa 32-bittinen Windows-sovellus voi toimia Winellä samoin tein UNIX:issa, kaikki ohjelmat eivät kuitenkaan vielä ole yhteensopivia sen kanssa. Tätä varten Wine sisältää ohjelmakirjaston nimeltään Winelib, jonka avulla käyttäjät voivat kääntää itse Windows-ohjelmia UNIX:lle. Winen virallisilta sivuilta löytyy ohjelmistotietokanta (Application Database, AppDB), minne on listattu kaikki Winen tukemat sovellukset ja pelit. Mikäli käyttäjä on epävarma sovelluksen toimivuudesta Winen kanssa, hän voi tarkistaa sen täältä. Ohjelmia voi etsiä tietokannasta monella tavalla ja joitakin niistä voi myös ladata sieltä suoraan. Tietokannasta löytyy myös tietoa siitä, mitkä osat ohjelmista toimivat Winellä ja mitkä eivät. Myös testitulokset eri Linuxin distribuutioilla ovat saatavissa. Eri ohjelmien versioille on annettu lisäksi arvosana toimivuudesta: Gold, Silver ja Platinum toimivat varmuudella, mutta Bronze- tai Garbage-arvosanan saaneiden ohjelmien kanssa voi esiintyä ongelmia. Uudemmat ohjelmistot vaativat luonnollisesti uudemman version Winestä. Kuvankaappaus erään ohjelman tiedoista AppDB:ssa on näkyvillä kuvassa 12. 29 Kuva 12. Winen Application Database (AppDB) tietokantanäkymä eräästä ohjelmasta. (WineHQ 2012.) Winen ohjelmatietokantaan rekisteröityneet käyttäjät voivat lisätä sinne ohjelmia. Admin käsittelee ohjelmien lisäyspyynnöt ennen niiden lisäämistä. Tietokannassa on myös ylläpitäjiä (maintainers), jotka huolehtivat yhden tai useamman ohjelmistoversion päivittämisestä ja tietojen oikeellisuudesta tietokannassa. Kuvassa 13 on näkyvissä tämänhetkistä tilastointia Winen ohjelmatietokannasta. 30 Kuva 13. Tilastointia Winen ohjelmatietokannasta. (WineHQ. 2012.) Kaikki Wineen liittyvä informaatio on koottu yhteen pakettiin Winen kattavalle Wikisivustolle (http://wiki.winehq.org), joka on käännetty usealle eri kielelle. FAQ (Frequently Asked Questions) -osiosta (http://wiki.winehq.org/FAQ) löytyy ohjeistusta yleisimpiin tilanteisiin, kuten ohjelmien asennukseen ja poistamiseen, ohjelmien ajamiseen, Winen yleiseen käyttöön ja ongelmatilanteisiin. Tämä sivu kannattaakin lukea huolella ennen ohjelman käyttöä, jotta olisi paremmin perillä käytännön asioista. Wineen voi asentaa myös winetricks-nimisen skriptin, joka lataa puuttuvat DLLtiedostot, runtime-kirjastot ja niin edelleen tunnetuista sijainneista. Jotkin ohjelmat tarvitsevat näitä palikoita toimiakseen ongelmitta. Winetricks oli alun perin vain kehittäjien käytössä, mutta myöhemmin se laitettiin tarjolle myös tavallisia käyttäjiä varten. (WineHQ 2012.) Winen käyttäjät ja kehittäjät ovat läheisessä vuorovaikutuksessa keskenään ja ongelmatilanteissa apua saa nopeasti. Winen Internet-sivuilla on olemassa oma bugilistausjärjestelmä, Bugzilla, jonka kautta käyttäjät voivat ilmoittaa havaitsemistaan virheistä itse Winessä tai sillä ajamissaan ohjelmissa. Tiedossa olevat bugit on listattu erillisille sivulle. Apua saa myös Winen viralliselta keskustelupalstalta tai ohjelman IRCkanavalta. Lokakuussa 2012 lista aktiivisimmista Winen kehittäjistä on esitetty kuvas- 31 sa 14. Numero nimen edessä kertoo osallistumisten määrän. Vuodesta 1994 projektia johtanut Alexandre Julliard on edelleen aktiivisimpien henkilöiden joukossa. Kuva 14. Aktiivisimmat Winen kehitykseen osallistuneet henkilöt lokakuussa 2012. (WineHQ 2012.) Winen olemassaolon aikana ohjelmasta on kehitetty useita kolmannen osapuolen muunnoksia. Tämäntyyppiset muunnokset voivat olla esimerkiksi tietynlaisia tilapäisratkaisuja. Ne eivät ole virallisen kehittäjän puolelta tuettuina. Niiden tarkoituksena on ollut parantaa Winen käyttökokemusta tai saada jokin tietty ohjelma toimimaan sovelluksessa. Jotta tällainen sovellus toimisi, Wineen on ehkä täytynyt tehdä sellaisia muutoksia, että toiset ohjelmat ovat lakanneet toimimasta. Esimerkkejä kolmannen osapuolen Wine-muunnoksista ovat WineBottler, joka kääntää Windows-ohjelmat erillään ajettaviksi ohjelmiksi Mac OS X:ssä, WineXS, graafinen käyttöliittymä Wineen, ja PlayOnLinux-ohjelmisto, jonka avulla voi asentaa Windows-pelejä ja ohjelmistoja muihin käyttöjärjestelmiin. Se pohjautuu sekä Wineen että DOSboxiin. (WineHQ 2012.) 3.3.1 Winen hyödyt Wineä käyttäessään käyttäjä hyötyy kaikista UNIX-ympäristön vahvuuksista, kuten vakaudesta, joustavuudesta ja etähallinnasta, vaikka käyttää Windows-ympäristöön kehitettyjä sovelluksia. Näin ollen se mahdollistaa pääsyn Windows-ohjelmistoihin, vaikka ne olisivat kuinka kaukana tahansa. Sovelluksien etäkäyttö verkon välityksellä mistä tahansa koneelta komentorivin kautta on mahdollista asentamalla Wine Linuxpalvelimeen. 32 Wine on avoimen lähdekoodin ohjelma ja sellaisena se tulee aina pysymään: ohjelman muokattavuus on täysin käyttäjistä kiinni. He voivat räätälöidä siitä itse millaisen haluavat. (WineHQ 2012.) Lisäksi hyvänä puolena on mainittava se, että mikäli tarvitsee vain muutamia Windows-ohjelmia, ei tarvitse koko käyttöjärjestelmää asentaa niiden vuoksi. Winen myötä käyttöjärjestelmää ei tarvitse käynnistää uudelleen päästäkseen toisen käyttöjärjestelmän ohjelmiin käsiksi. Winen käyttäjäkunnan yhteisöllisyys on ollut alusta lähtien vahva ja ohjelman kehittämisen epäkaupallisuus on tehnyt siitä suositun sovelluksen. Miltei 20 vuoden kehityksen aikana ohjelma on saanut tukea niin kaupallisilta tahoilta kuin yksittäiskäyttäjiltäkin. Vaikka projektin vieminen eteenpäin on ollut toistuvasti aikaa vievä ja vaikea prosessi puutteellisen tai väärän Win32 API:n dokumentaation vuoksi, suurimmat ongelmat on voitettu ja tänä päivänä ohjelman toimivuus on hyvällä tasolla. Tulevaisuus näyttää, miten projekti kehittyy koko ajan uudistuvan Windows-maailman muutosten rinnalla. 3.3.2 Winen ongelmat Kaikki ohjelmat ja erityisesti pelit eivät tue Wineä, eikä niitä saateta koskaan saadakaan toimimaan ohjelmalla. Ohjelmien asentaminen epäonnistuu, ne kaatuvat tai niissä voi olla kummallisia virheitä, jotka estävät niiden normaalin käytön. Esimerkiksi DirectX ei toimi vieläkään täysin Winessä, koska se on suljetun lähdekoodin ohjelmakirjasto. Wine tosin kykenee kääntämään monia DirectX-ohjelmointirajapinnan funktioita OpenGL:n (Open Graphics Library) funktioiksi. Ohjelman kotisivuilla on kerrottu DirectX 9.0c:n olevan tuettu sen omalla toteutuksella. (WineHQ 2012.) Winen huonoksi puoleksi voi laskea myös hankalahkon asennuksen ja käytön kokemattomammille käyttäjille: vaikka käytössä oleva käyttöjärjestelmä olisikin Linux, se ei tarkoita sitä, että tietokoneen käyttötaidot olisivat huippuluokkaa. Lisäksi on mainittava, että Winen 64-bittisyyden tuki on vielä kesken. Tätä ei kuitenkaan varsinaisesti voi lukea haitaksi, koska 32-bittinen versio toimii myös 64-bittisillä käyttöjärjestelmillä ja käytännöllisesti katsoen kaikista Windows-ohjelmista on olemassa 32bittinen versio. 33 Spyware, malware ja muut haittaohjelmat ovat aina Windows-ohjelmista puhuttaessa läsnä, niin Winenkin kohdalla. Haittaohjelmien toimivuus Winessä on kuitenkin alhaisella tasolla ja koska ne on toteutettu Windows-ympäristöön, ne eivät kykene samanlaiseen tuhoon Linuxilla. Käytännössä niiden aiheuttamat vahingot rajoittuvat Winen asennuskansioon (oletuksena .wine). Koska Wine kykenee ajamaan myös haittaohjelmien koodia, ohjelmia ei suositella koskaan ajettaviksi SuperUserina. Käyttäjien on syytä pitää tämä mielessä ja suojata itsensä jo ennalta kuten normaalissa Windowsympäristössäkin. 4 VIRTUALISOINTIOHJELMISTOJA Linux-ympäristöön on saatavilla monia virtualisointiohjelmia. Suurin osa niistä on ilmaisia ja avointa lähdekoodia. Kuvassa 15 on vertailtu joitakin Linuxille kehitettyjä virtualisointiohjelmistoja. Taulukosta nähdään, että Linux-ympäristössä toimivien ohjelmien suorituskyky on yleisesti ottaen hyvää tasoa. Kuva 15. Joidenkin Linuxille kehitettyjen virtualisointiohjelmien vertailua. (Petazzoni, Opdenacker 2010.) Tämän seminaariraportin liitteenä (Liite 1) on toinen vertailudokumentti, jossa on listattu kattavammin jopa vähän tuntemattomampiakin virtualisointiohjelmia. Seuraavaksi esittelen hieman tarkemmin tunnetuimpia virtualisointiratkaisuja Linuxympäristöön. 34 4.1 Xen Xen on Cambridgen yliopistossa kehitetty ilmainen ja vapaa virtuaalikone x86-, x8664- ja PowerPC-arkkitehtuureille. Se käyttää hypervisor-tekniikkaa ja mahdollistaa useiden virtuaalisten käyttöjärjestelmien ajamisen yhdellä tietokoneella. Ensimmäinen versio Xenistä julkaistiin vuonna 2003. Vuoden 2007 lokakuussa Citrix Solutions osti Xenin kehittäneen XenSource-yhtiön. Ohjelman toiminta perustuu paravirtualisointiin, joten se edellyttää virtualisoitujen käyttöjärjestelmien muokkausta. Xen tukee myös rautatasoista täysvirtualisointia uudella raudalla Intel VT-x ja AMD-V -laajennusten kanssa. Mikäli alustalla on Intel VT-x -laajennusta tukeva prosessori, Xeniin voi asentaa käyttöjärjestelmän ilman sen muokkausta. (Teleware Oy 2008.) Ainakin OpenSUSE:ssa Xen on sisäänrakennettuna. 4.2 KVM KVM (Kernel-based Virtual Machine) on Linuxin ytimeen rakennettu virtualisoinnin tukimekanismi. Se on moduuli, joka vaatii toimiakseen Intel-VT tai AMD-V laajennukset. KVM ei itsessään suorita emulointia, vaan on alusta virtualisointiohjelman toiminnalle. Tällä hetkellä vain muokattu versio QEMU:sta on tuettuna. Jokaisella käyttäjätason prosessina ajettavalla virtuaalikoneella on virtualisoitu hardware, verkkokortti, kovalevy, grafiikkaohjain ja niin edelleen. (Petazzoni, Opdenacker 2010.) KVM tukee laitteistotason virtualisointia. Se toteuttaa periaatetta "The ultimate hypervisor is the Linux kernel", joten tämä tekniikka ei tarvitse erillistä hypervisoria vaan muodostaa sen isäntäkoneen käyttöjärjestelmästä. Se on ollut mukana Linuxissa kernelin versiosta 2.6.20 lähtien. (Petazzoni, Opdenacker 2010.) 4.3 VMware VMware-yhtiö on kiistatta virtualisoinnin edelläkävijä. Vuonna 1998 perustettu yhtiö toi markkinoille ensimmäisen x86-prosessoriarkkitehtuurille tarkoitetun virtualisointialustan. VMware on kaupallinen, suljetun lähdekoodin virtualisointiohjelmisto ja se 35 on tänä päivänä vaativiin ja laajoihin järjestelmiin eittämättä paras ratkaisu. VMware mahdollistaa periaatteessa minkä tahansa x86-arkkitehtuuria tukevan, muokkaamattoman käyttöjärjestelmän asentamisen virtuaalikoneeksi. VMwaresta on olemassa monia eri tarkoituksiin soveltuvia versioita, joista tässä muutama: ! VMware ESX on Linux-pohjainen käyttöjärjestelmäasennus, jossa isäntäkäyttöjärjestelmä tarjoaa vain verkkopalvelut virtuaalikoneiden ylläpitoon. Kernel hoitaa ainoastaan virtuaalikoneiden toiminnallisuuden ja resurssien hallinnan. Sen yhteydessä toimii niin sanottu Console Operating System (COS), joka hoitaa hallinnan ja käyttöjärjestelmien palvelut. ! VMWare ESXi eroaa VMWare ESX:stä siten, että Console Operating Systemin tarjoamat palvelut on liitetty kerneliin. ! VMWare Workstation on työasemalle asennettava virtuaalikoneohjelmisto, joka oli yhtiön ensimmäinen virallisesti julkaistu ohjelmisto. ! VMWare Fusion on VMWare Workstationin kaltainen, työasemalle asennettava virtuaalikoneohjelmisto Mac OS X -ympäristöön. ! VMWare Player on ilmainen, virtuaalikonesovelluksia suorittava sovellus, jossa ei ole virtuaalikoneiden luontimahdollisuutta. 4.4 QEMU QEMU on vapaan lähdekoodin virtualisointiratkaisu, joka koostuu kahdesta pääkomponentista: emulaattorista ja virtualisoijasta. QEMU mahdollistaa lähes kaikkien käyttöjärjestelmien asentamisen ja se kykenee emuloimaan myös kokonaisia järjestelmiä (CPU ja laitteet). Näin ollen sillä voidaan emuloida alustasta riippumatta useita arkkitehtuureja. QEMU käyttää toimiessaan dynaamista koodin kääntämistä. Siihen on kehitetty myös lisäosa KQEMU, joka asennetaan isäntäkoneeseen. Lisäosan avulla QEMU voi toimia tehokkaammin käyttäen hyväkseen isäntäkoneen resursseja. (OpenSUSEa suomeksi 2010.) 36 4.5 VirtualBox VirtualBox on maailman suosituin avoimen lähdekoodin x86-virtualisointiohjelmisto. Siitä on olemassa kaksi versiota, GPL-lisensoitu vapaa versio sekä suljettu versio. Molemmat versiot ovat ilmaisia, mutta suljetussa versiossa on joitakin lisäominaisuuksia vapaaseen versioon verrattuna. Kaupallisessa käytössä ohjelma on maksullinen. VirtualBox toimii Linuxin lisäksi myös Windowsilla ja Mac OS X:llä. Vaikka kyseessä on ilmainen ohjelma, VirtualBoxin suorituskyky on hyvällä tasolla. Omaisuuksiltaan ohjelma muistuttaa hyvin paljon kaupallista VMwarea, mutta on paljon kevyempi ratkaisu. Sun Microsystems osti tämän, alun perin saksalaisen Innotek GmbH:n kehittämän ohjelmiston helmikuussa 2008. 4.6 LXC LXC (Linux Containers) on käyttöjärjestelmätason virtualisointimenetelmä, jonka avulla useita erillisiä virtuaalisia instansseja (containers) voidaan asentaa samaan järjestelmään. LXC:llä ei luoda varsinaisia virtuaalikoneita, vaan eräänlaisia virtuaalisia ympäristöjä, jotka muistuttavat chrootia, mutta niin sanottujen Kernel Control Groups:ien (cgroups) avulla ne eristetään toisistaan tehokkaammin. Kernel kontrolloi näitä instansseja. (SUSE Documentation Team 2012.) 4.7 OpenVZ OpenVZ (Open Virtuozzo) on käyttöjärjestelmätasoiseen virtualisointiin pohjautuva teknologia Linux-ympäristöön. Ratkaisu pohjautuu muunneltuun Linux-kerneliin, joka mahdollistaa fyysisen palvelimen ajamisen useina erillisinä instansseina (containers), VPS-virtuaalipalvelimina tai virtuaalisina ympäristöinä (Virtual Environment, VE). OpenVZ edellyttää, että sekä isäntä- että vieraskäyttöjärjestelmä ovat Linuxeja. Ohjelma on avointa lähdekoodia. Se sisältää ytimen, johon Parallels Inc.:n patentoima Parallels Virtuozzo Containers -niminen virtualisointiratkaisu pohjautuu. (Community ENTerprise Operating System 2010.) 37 4.8 Parallels Workstation Parallels Workstation on Parallels Inc.:n kehittämä kaupallinen virtualisointiohjelmisto. Sovellus on suunnattu Intel x86 -arkkitehtuuria tukeville tietokoneille, sekä Windows- että Linux-ympäristöön. Ohjelma mahdollistaa useiden virtuaalikoneiden luomisen ja samanaikaisen ajamisen. Kuten monet muutkin virtualisointiohjelmistot, myös Parallels Workstation käyttää hypervisor-teknologiaa. Parallels Workstation on laitteistoa emuloiva virtualisointisovellus. Tämä tarkoittaa sitä, että jokainen virtuaalikone toimii sille omalla prosessorilla, RAM-muistilla, CDasemalla, I/O-laitteilla ja kovalevyllä, eli kaikella, mitä fyysinen tietokone sisältää. Ohjelma virtualisoi kaikki laitteet virtuaalikoneen sisällä. Koska kaikki vieraskäyttöjärjestelmät käyttävät samoja laitteistoajureita riippumatta isäntäjärjestelmän oikeasta laitteistosta, ne ovat siirrettävissä eri tietokoneiden välillä. Virtuaalikoneen voi kopioida toiseen koneeseen sellaisenaan. 4.9 UML UML (User-mode Linux) on paravirtualisointiohjelma, jonka avulla erilaisia muokattuja Linuxeja ajetaan pääasiallisen Linux-asennuksen päällä. UML:ssä virtuaalikoneilla ei ole suoraa pääsyä rautatasolle, vaan se on yhteydessä kernelin kanssa. Virtuaalikone käynnistetään isäntäjärjestelmässä ja se näkyy siellä yksittäisenä prosessina. UML on testattu ja toimiva ratkaisu ja se tukee myös uusimpia kernelin versioita. (Teleware Oy 2008.) Se oli ensimmäinen virtualisointiteknologia Linuxille. Muihin tekniikoihin verrattuna UML on melko hidas virtualisointiratkaisu. 4.10 Linux-VServer Linux-VServer on käyttöjärjestelmätason virtualisointiratkaisu, eräänlainen VPSvirtuaalipalvelin-toteutus. Ratkaisu tukee muokkaamattomia Linux distribuutioita ja suurinta osaa Linuxin tukemista prosessoriarkkitehtuureista. VPS:t käyttävät suoraan isäntäjärjestelmän kutsuja, joten emulointia ei tarvita. Lisäksi ne voivat käyttää samaa tiedostojärjestelmää isäntäjärjestelmän kanssa. 38 Linux-VServer on kevyt ja suorituskyvyltään hyvä. Se edellyttää saman kernelin käyttöä isäntäjärjestelmän kanssa. Isännän kerneliin on lisäksi ajettava korjaustiedosto (patch), jotta ohjelma toimisi. (Petazzoni, Opdenacker 2010.) 4.11 Virtual Machine Manager Virtual Machine Manager (virt-manager) on käyttöliittymä virtuaalikoneiden hallintaan. Se on oletuksena asennettu moniin Linux-distribuutioihin kuten Debianiin, Fedoraan, Gentoo Linuxiin ja OpenSUSEen. Virtual Machine Manager sisältää samantyyppisen Graphical User Interfacen (GUI) kuin VMwaressa ja VirtualBoxissa. Se toimii rajapintana Xenille, KVM:lle tai QEMU:lle. Ohjelma käyttää libvirtvirtualisointirajapintaa kommunikoimaan näiden virtualisointiratkaisujen kanssa. Tulevaisuudessa se saattaa tukea myös muita virtualisointiohjelmia. Virtual Machine Manager on kevyt ja helppokäyttöinen. Tämä korostuu ennen kaikkea KVM:n kanssa, koska se on nykyään sisäänrakennettuna Linuxin ytimeen. Ohjelmalla voi luoda, muokata, käynnistää ja sammuttaa virtuaalikoneita, tarkastella virtuaalikoneiden statistiikkaa ja ajaa virtuaalikoneita sekä paikallisesti että etänä. 39 LÄHTEET Bolton, D. 2011. Definition of Virtualization. Saatavissa: http://cplus.about.com/od/glossar1/g/virtualization.htm [viitattu 26.10.2012]. Community ENTerprise Operating System. 14.4.2010. Installing and using OpenVZ on CentOS 5. Saatavissa: http://wiki.centos.org/HowTos/Virtualization/OpenVZ [viitattu 6.11.2012]. Dittner, R., Rule, D. 2007. The Best Damn Server Virtualization Book Period. Syngress. Ekurssit.net. Tallennus- ja verkkovirtualisointi. Saatavissa: http://www.ekurssit.net/kurssit/lk307_virtu/tallennusv.php [viitattu 30.10.2012]. Godber, A. 2007. Xen On Linux. Saatavissa: http://uberhip.com/godber/plug/Xen_Primer/index.html [viitattu 29.10.2012]. Hentunen, A. 28.9.2012. Virtualisointi: Käytännön kokemuksia järjestelmien virtualisoinnista. Saatavissa: http://hetky.ttlry.mearra.com/sites/hetky.ttlry.mearra.com/files/u80/Asko_Hentunen_ AKVA-seminaari_2012.pdf [viitattu 29.10.2012]. Hiltunen, J. 2010. Opinnäytetyö: Palvelimen virtualisointi. Saatavissa: http://publications.theseus.fi/bitstream/handle/10024/24102/Hiltunen_Jukka.pdf?sequ ence=1 [viitattu 26.10.2012]. Hämäläinen, P. 2007. Verkkovoimaa virtuaalisesti. Saatavissa: http://www.tietokone.fi/lukusali/artikkelit/2007tk13/virtuaali.htm [viitattu 29.10.2012]. Höök, V., Orola, E., Kosonen, T. 7.5.2009. Seminaarityö: UNIX. Saatavissa: http://www2.it.lut.fi/courses/08-09/CT20A2601/seminars/reports/Unix.pdf [viitattu 5.11.2012]. Knuutinen, J. 2008. x86-pohjaisten palvelimien virtualisointi. Saatavissa: https://publications.theseus.fi/bitstream/handle/10024/1712/Knuutinen_Jarkko.pdf?se quence=1 [viitattu 29.10.2012]. Laitinen, J. 26.4.2011. Opinnäytetyö: Virtualisoidun tietoverkon toteuttaminen. Saatavissa: https://publications.theseus.fi/bitstream/handle/10024/29014/Jani_Laitinen_tietoverko n_virtualisointi.pdf?sequence=1 [viitattu 26.10.2012]. 40 Microsoft Developer Network. 2009. Mapping Applications to the Cloud. Saatavissa: http://msdn.microsoft.com/en-us/library/dd430340.aspx [viitattu 29.10.2012]. Micro Aided Design Oy (M.A.D.). 2010. Sanasto. Saatavissa: http://www.mad.fi/mad/sanasto.html [viitattu 23.10.2012]. Mäntykoski, J. 14.12.2011. Opinnäytetyö: Ohjelmien virtualisointi VMwaren ThinApp-ohjelmalla. Saatavissa: http://publications.theseus.fi/bitstream/handle/10024/37530/Opinnaytetyo_jarmo_man tykoski_thinapp2.pdf?sequence=1 [viitattu 26.10.2012]. OpenSUSEa suomeksi. 19.12.2010. QEMU. Saatavissa: http://opensuse.fi/QEMU [viitattu 6.11.2012]. Paasi, J. 2011. Opinnäytetyö: Ohjeistus sovellusvirtualisointiin. Saatavissa: http://publications.theseus.fi/bitstream/handle/10024/29708/Paasi_Jaakko.pdf?sequen ce=1 [viitattu 30.10.2012]. Petazzoni, T., Opdenacker, M. 13.7.2010. Virtualization in Linux. Saatavissa: http://free-electrons.com/doc/virtualization.pdf [viitattu 6.11.2012]. Pitkänen, J. 2008. Tietokone: Päivän Softa: Microsoftilta maksutonta virtualisointia. Saatavissa: http://www.tietokone.fi/uutiset/2008/paivan_softa_microsoftilta_maksuton ta_virtualisointia [viitattu 26.10.2012]. Pulkkinen, M. MikroPC 19 / 2000, s. 87. Paperin emulointia. Saatavissa: http://mikropc.net/nettilehti/pdf/pc3011200087.pdf [viitattu 23.10.2012]. Päivinen, V. 28.11.2008. Insinöörityö: VMware Infrastructure -järjestelmän käyttöönotto. Saatavissa: https://publications.theseus.fi/bitstream/handle/10024/1224/Insinoorityo_Ville_Paivin en.pdf?sequence=1 [viitattu 4.11.2012]. Salokanto, H. 28.2.2010. Diplomityö: Sovelluskehitysympäristön virtualisoinnin tuomat edut ja haitat. Saatavissa: http://lib.tkk.fi/Dipl/2010/urn100144.pdf [viitattu 29.10.2012]. Shemesh, S. 2003. Wine Is Not an Emulator. Saatavissa: http://www.shemesh.biz/lectures/HaifuxWine.pdf [viitattu 5.11.2012]. Simula, T. 24.4.2009. Turvallista virtualisointia - ainakin toistaiseksi. Saatavissa: http://www.nixu.com/blogi/tagit/virtualisointi [viitattu 31.10.2012]. 41 SUSE Documentation Team. 18.5.2012. Virtualization with Linux Containers (LXC). Saatavissa: https://www.suse.com/documentation/sles11/singlehtml/lxc_quickstart/lxc_quickstart. html [viitattu 6.11.2012]. Teleware Oy. 12.2.2008. Linux-virtualisointi. Saatavissa: http://www.teleware.fi/Portals/1/Linux_Virtualisointi.pdf [viitattu 6.11.2012]. Varik, V. 2010. Opinnäytetyö: Työasemavirtualisointi. Saatavissa: https://publications.theseus.fi/bitstream/handle/10024/13168/ViljarVarikVDI.pdf?seq uence=1 [viitattu 30.10.2012]. Vuorinen, M. 24.11.2012. Insinöörityö: Palvelinvirtualisointi pienyrityksessä. Saatavissa: https://publications.theseus.fi/bitstream/handle/10024/35461/PalvelinvirtualisointiPK. pdf?sequence=1 [viitattu 26.10.2012]. VMware. 10.11.2007. Understanding Full Virtualization, Paravirtualization, and Hardware Assist. Saatavissa: http://www.vmware.com/resources/techresources/1008 [viitattu 29.10.2012]. WineHQ. 2012. AppDB: PowerPoint 2010 (32 bit). Saatavissa: http://appdb.winehq.org/objectManager.php?sClass=version&iId=22220 [viitattu 5.11.2012]. WineHQ. 2012. AppDB Statistics. Saatavissa: http://appdb.winehq.org/appdbStats.php [viitattu 5.11.2012]. WineHQ. 22.9.2012. Third Party Applications. Saatavissa: http://wiki.winehq.org/ThirdPartyApplications [viitattu 5.11.2012]. WineHQ. 22.9.2012. Wine History. Saatavissa: http://wiki.winehq.org/WineHistory [viitattu 4.11.2012]. WineHQ. 9.10.2012. Who's Who. Saatavissa: http://wiki.winehq.org/WhosWho [viitattu 5.11.2012]. WineHQ. 22.10.2012. Why Wine Is So Important. Saatavissa: http://wiki.winehq.org/ImportanceOfWine [viitattu 5.11.2012]. WineHQ. 12.7.2012. winetricks. Saatavissa: http://wiki.winehq.org/winetricks [viitattu 5.11.2012]. Liite 1 GPL GPL GPL GPL GPL GPL GPL GPL GPL GPL/proprietary GPL GPL proprietary GPL GPL proprietary GPL GPL/proprietary GPL proprietary GPL/proprietary proprietary GPL proprietary GPL proprietary GPL/proprietary proprietary proprietary proprietary proprietary proprietary proprietary proprietary proprietary proprietary UML rhype QEMU Linux-VServer L4Linux MoL LXC OpenVZ UML QEMU VirtualBox Linux-VServer L4Linux VMware OpenVZ LXCServer QEMU VMware Workstation/Player Linux-VServer VirtualBox VMware ESX LXC VMware Server OpenVZ LPAR VirtualBox VMware Workstation/Player Linux-VServer z/VM VMware VMware ESX LXCServer PHYP VMware VirtualBox Workstation/Player LPAR lv1Server VMware ESX z/VM VMware BEAT LPAR PHYP VMware Workstation/Player z/VM lv1 ESX VMware PHYP BEAT LPAR lv1 z/VM BEAT PHYP lv1 BEAT License GPL GPL License GPL GPL MoL L4Linux lguest OpenVZ Containers (OS virtualization) Containers (OS virtualization) GPL GPL License GPL GPL GPL Paravirtualization Paravirtualization Paravirtualization GPL rhype UML KVM QEMU Full Virtualization Full Virtualization Full Virtualization Containers (OS virtualization) License GPL UML KVM rhype MoL Xen lguest rhype KVM lguest Xen KVM Xen Containers (OS virtualization) L4Linux lguest MoL Xen Liite 1 Liite 1 Liite 1 Full Virtualization Paravirtualization Virtualisointiohjelmistoja Linuxille PPC PPC PPC PPC s390 PPC s390 PPC i686,s390 x86-64 PPC i686,s390 x86-64 PPC i686, x86-64 s390 PPC i686,s390 x86-64 i686,s390 x86-64 all where linux goes i686,s390 x86-64 all where linux goes fast fast fast fast very fast fast native very fast fast fast/very fast native fast medium/fast fast fast/very fast very fast medium/fast fast fast medium/fast native fast/very very fast medium/fast fast/very fast native native fast/very medium/fast nativefast fast/very nativefast medium/fast slow, medium with medium/fast native fast/very fastKQEMU i686, x86-64, IA64, PPC, ARM, MIPS, i686, x86-64 where linux goes SPARC all (KQEMU only i686/x86-64) all where linux goesSPARC i686, x86-64 i686, x86-64, IA64, PPC, medium medium/fast native slow slow, medium with KQEMU fast/very nativefast i686, x86-64, PPC, ARM, MIPS, i686,IA64, x86-64, PPC i686, x86-64 where linux goes SPARCall (KQEMU only i686/x86-64) i686, ARM i686, x86-64 i686, x86-64, IA64, PPC, all where linux goesSPARC medium fast native slow fastwith KQEMU slow, medium native i686, ARM PPC all where linux goesSPARC i686, x86-64, IA64, PPC, i686, x86-64, PPC, ARM, MIPS, i686,IA64, x86-64, PPC where linux goes SPARC all (KQEMU only i686/x86-64) fast medium slow/medium native fastwith slow paravirt fast, full virt medium slow, very medium KQEMU i686, x86-64, PPC, ARM, MIPS, i686,IA64, x86-64, PPC i686, x86-64, IA64, PPC, S390 SPARC (KQEMU only i686/x86-64) PPC i686, ARM i686 i686, x86-64, IA64, PPC, SPARC medium slow/medium fastfull virt medium paravirt very fast, Performance slow paravirt very fast, fastfull virt medium fastfull virt medium paravirt very fast, slow/medium Performance fastfull virt medium paravirt very fast, slow/medium paravirt very fast, full virt medium Performance paravirt very fast, full virt medium paravirt very fast, full virt medium Performance i686, ARM i686 PPC i686, x86-64, IA64, PPC Architectures i686, x86-64, IA64, PPC, i686, x86-64, PPC S390 PPC i686, x86-64, i686IA64, PPC Architectures i686, x86-64, PPC S390 i686, x86-64, IA64, PPC, i686IA64, PPC i686, x86-64, Architectures i686, x86-64, IA64, PPC, S390 i686, x86-64, IA64, PPC Architectures ? ? ? ? n/a (7) n/a (7) n/a (7) n/a (7) n/a (7) n/a (7) n/a (7) ? n/a (7) n/a (7) ? SMP Guests ? SMP Guests ? SMP Guests SMP Guests n/a (7) n/a (7) n/a (7) (8) n/a (7) n/a (8) (7) n/a (7) n/a (7) (8) n/a (7) n/a (8) CPU / Memory Hotplug CPU / Memory Hotplug CPU / Memory Hotplug CPU / Memory Hotplug Liite 1 used used on allon modern IBM System p Toshiba CellEB typically under LPAR used runs on Sony PS3 used Toshiba CellEB used on allon modern IBM System needs proprietary kernel modulesp used runs on Sony PS3 typically under LPAR needs proprietary kernel modules used on allRDP modern IBM System needs proprietary modulespproprietary kernel module GPL, andkernel USB support typically runs under LPAR needs proprietary kernel modules upstream since 2.6.29 kernel module GPL, RDP andkernel USB support needs proprietary modulesproprietary poor performance isolation since 2.6.29 needsupstream proprietary kernel modules live migration needs proprietary modulesproprietary poor performance isolation kernel module GPL, RDP andkernel USB support needsupstream proprietary kernel modules live migration since 2.6.29 upstream kernel modulepoor GPL,performance RDP and USB support proprietary isolation 32 bit only upstream since 2.6.29 live migration upstream research project poor performance isolation 32 bit only upstream live migration research project upstream full and para virt need VT / AMD-V, upstream upstream 32 bit VT only/ AMD-V full virt needs Notes upstream full and para virt need VT / AMD-V, upstream research project 32 bit VT only/ AMD-V full virt needs upstream Notes research project full and para virt need VT / AMD-V, upstream upstream full virt needs VT / AMD-V Notes full and para virt need VT / AMD-V, upstream full virt needs VT / AMD-V Notes used on Toshiba CellEB used on Sony PS3 Toshiba CellEB usedused on allon modern IBM System p used runs on Sony PS3 Lähde: http://virt.kernelnewbies.org/TechComparison typically under LPAR Standalone Host Standalone Host Standalone Host Standalone Host