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