KYMENLAAKSON AMMATTIKORKEAKOULU Tietoverkkotekniikka Wine API sekä virtualisointiohjelmistot Linux Lukukausi: Kevät 2014 Teemu Metso Jussi Kujala Ti12_TiVe Ti12_TiVe Työ valmistui: 8.4.2014 Selostus palautettu: 24.4.2014 1
SISÄLLYS 1. Wine 1.1 Historia 1.2 Käyttö 2. MUITA VIRTUALISOINTI YMPÄRISTÖJÄ LINUXISSA 2.1 OpenVZ 2.2 Xen 2.3 Kernel based Virtual Machine (KVM) 2.4 QEMU 2.5. Linux VServer 2.6. VMware 2.7 VirtualBox 3 LÄHTEET 2
1. Wine Wine (Wine Is Not an Emulator) on avoimen lähdekoodin sovellus jonka avulla voidaan ajaa windowsille tehtyjä ohjelmia unixin kaltaisissa käyttöjärjestelmissä. Wine ei siis ole emulaattori vaan yhteensopivuuskerros joka jäljittelee Windowsin ominaisuuksia tarjoamalla vaihtoehtoisia toteutuksia Windowsissa käytettäville DLL kirjastoille. Wine on kirjoitettu blackbox takaisinmallinnuksen avulla jotta mahdollisilta tekijänoikeus ongelmilta vältyttäisiin. Jotkin yritykset ovat myös kehittäneet Wineä omiin tarkoituksiin kuten Transgamingin Cedega ja Codewaversin CrossOver Games ovat peleille suunniteltuja versioita sekä Codeweaversin CrossOver Office on taas hyötyohjelmille suunniteltu versio. Transgamingin Cedegan kehitys on lopetettu, mutta sen kehitys jatkuu GameTree Linuxin alla. CrossOver Officen nimi vaihdettiin CrossOver Linuxiin ja siihen lisättiin CrossOver gamesin ominaisuuksia jolloin ei tarvita kuin yksi ohjelma. 1.1 Historia Wine projektia aloitettiin kehittämään vuonna 1993 Bob Amstadtin ja Eric Youngdalen toimesta tarkoituksena ajaa Windows ohjelmia Linuxissa. Vuonna 1994 Alexandre Julliard siirtyi Bob Armstadtin tilalle johtamaan projektia. Aluksi Winen oli tarkoitus ajaa vain Windows 3.x:n ohjelmia, mutta ajan kuluessa ja teknologian kehittyessä painopiste on siirtynyt 32 ja 64 bittisten Windows ohjelmien ajamiseen. Wine projektin kehitys on osoittautunut kehittäjille erittäin hankalaksi ja aikaa vieväksi lähinnä puutteellisten tai väärien Windows API dokumenttien takia. 12 vuoden kehitystyön jälkeen, vuonna 2005 lokakuussa Winestä julkaistiin viimein virallinen beta versio versionumerolla 0.9. Vakaa versio 1.0 Winestä julkaistiin vasta vuoden 2008 kesäkuussa eli 15 vuoden kehitystyön jälkeen. Sen jälkeen vakaita versioita on tullut tiheämmin, versio 1.2 julkaistiin heinäkuussa 2010, versio 1.4 maaliskuussa 2012 ja versio 1.6 heinäkuussa 2013. Kehitysversiot Winestä julkaistaan noin kahden viikon välein. 3
1.2 Käyttö Winen asennus onnistuu Fedorassa helposti komennolla sudo yum install wine. Wine luo virtuaalisen C aseman jonne Windows ohjelmat asennetaan. Itse ohjelman asennus voidaan suorittaa graafisesti klikkaamalla Windows ohjelman asennuspaketin kuvaa hiiren oikealla ja valitsemalla Avaa sovelluksella > Wine Windows Program Loader tai komentoriviltä komennolla wine [haluttu asennuspaketti]. Asennettujen ohjelmien ajaminen komentoriviltä onnistuu samalla tavalla eli wine [ohjelman nimi]. Kaikki Windows ohjelmat eivät välttämättä kumminkaan toimi täysin oikein Winen kautta, ovat ne luokiteltu toimivuuden perusteella Platinum, gold, silver, bronze ja garbage luokkiin. Listat löytyvät osoitteesta http://appdb.winehq.org ja määrittävät ohjelmat seuraavasti: Platinum: Ohjelmat jotka asentuvat ja toimivat virheettömästi ilman minkäänlaista konfigurointia Wineen. Gold: Ohjelmat jotka toimivat täydellisesti pienen konfiguroinnin jälkeen. Silver: Ohjelmat joissa on pieniä vikoja, mutta eivät vaikuta tavalliseen käyttöön. Bronze: Ohjelmat missä on vikoja jotka saattavat vaikuttavat tavalliseen käyttöön. Garbage: Nämä ohjelmat eivät käytännössä toimi Winellä ollenkaan. Esimerkiksi notepad++ joka on Platinum luokan sovellus eli toimii täydellisesti Winen kautta ilman, että wineä tarvitsisi konfiguroida. Jos Notepad++ suoritetaan komentorivin kautta tarvitaan komentoon polku minne notepad++ on asennettu esim. wine /home/[user]/.wine/drive_c/polku/missä/notepad++/sijaitsee/notepad++.exe tai wine C:\polku\missä\notepad++\sijaitsee\notepad++.exe 4
Kuva.1. Notepad++ Fedorassa. Jos Wineä jostain syystä joutuu konfiguroimaan onnistuu se winecfg komennolla. Winecfg:llä voidaan muokata muun muassa asetuksia kuten mitä kirjastoja käytetään, millä windows versiolla tiettyä ohjelmaa ajetaan, levyjen lisääminen tai poistaminen sekä grafiikka ja ääniasetusten muokkaus. Kuva 2. winecfg ja windows version valinta. 5
2. MUITA VIRTUALISOINTI YMPÄRISTÖJÄ LINUXISSA 2.1 OpenVZ Käyttöjärjestelmä tason virtualisointi tekniikka perustuu Linux ytimeen ja käyttöjärjestelmään. OpenVZ on kontti pohjainen virtualisointi Linuxille. OpenVZ luo useita turvallisia, eristettyjä Linux astioita (jotka tunnetaan myös VES tai VPSs) yhdellä fyysisellä palvelimella, mikä mahdollistaa paremman palvelimen käyttöasteen ja varmistaa, että sovellukset eivät ole ristiriidassa. Jokainen kontti suoritetaan täsmälleen kuten stand alone palvelin, kontti voidaan käynnistää uudelleen itsenäisesti säilyttäen rootin salasanan, käyttäjät, IP osoitteet, muisti, prosessit, tiedostot, sovellukset, järjestelmä kirjastot ja asetustiedostot. 2.2 Xen Virtuaalikoneen seuranta 32/64 bittisille Intel / AMD (IA 64) ja PowerPC 970 arkkitehtuureille. Se mahdollistaa useiden asiakkaiden käyttöjärjestelmien toteuttamisen samalla tietokonelaitteistolla samanaikaisesti. XEN sisältyy seuraaviin Linux ohjelmistoihin: Debian, Ubuntu, CentOS, RHEL, Fedora ja monet muut. Xen 1.0 julkaistiin virallisesti vuonna 2004, minkä jälkeen lähiaikoina Xen 2.0. Samaan aikaan, Ian Pratt ja useita muita teknologia johtajilta tuli mukana Xen projektiryhmä. Toiminta tässä ohjelmassa perustuu paravirtualisointiin. Tämä taas edellyttää virtualisoitujen käyttöjärjestelmien muokkausta. Xenilä on myös mahdollista rautatasoinen täysvirtualisointi uudella raudalla. Kuva 3. OpenVZ ja Xen virtualisointien perjaatteet. 6
2.3 Kernel based Virtual Machine (KVM) KVM on täysi virtualisointi ratkaisu Linux x86 laitteistolle, joka sisältää virtualisointi laajennukset (Intel VT tai AMD V). Se koostuu ladattavasta kernel moduulista (kvm.ko), joka tarjoaa ytimen virtualisoinnin ja prosessorin moduulin (kvm intel.ko tai kvm amd.ko). KVM edellyttää myös muunnetun QEMU:n. KVM:llä voi ajaa monia Linux tai Windows virtuaalikoneita muokkaamattomina. Jokaisella virtuaalikoneella on oma virtualisoitu laitteisto: verkkokortti, levy, näytönohjain, jne. KVM on avoimen lähdekoodin ohjelmisto. KVM toimii laitteistotason virtualisointia. KVM ei tarvitse erillistä hypervisoria. KVM muodostaa hypervisorin isäntäkoneen käyttöjärjestelmästä. 2.4 QEMU QEMU on avoimen lähdekoodin virtualisointiohjelma. QEMU:ssa on kaksi osaa: emulaattori ja virtualisointi. QEMU:lla pystyy virtualisoimaan melkein kaikkia käyttöjärjestelmiä. Ohjelma pystyy myös emuloimaan kokonaisia järjestelmiä. QEMU käyttää dynaamista koodin kääntämistä. QEMU:ssa on myös lisäosa KQEMU. Lisäosa pitää asentaa isäntäkoneeseen. Lisäosan avulla QEMU kykenee käyttämään isäntäkonetta tehokkaammin. 7
Kuva 4. KVM ja QEMU virtualisointien perjaatteet. 2.5. Linux VServer Linux VServer tunnetaan käyttöjärjestelmätason virtualisointi ratkaisuna se on ns. VPS virtuaalipavelin. Muokkaamattomat Linux distribuutiot ja suurinosa Linuxin tukemista prosessoreista toimivat tässä toteutuksessa. VPS:ssä ei tarvita emulointia, sillä ne käyttävät isäntäjärjestelmän kutsuja. Ne pystyvät myös käyttämään samaa tiedostojärjestelmää isäntäohjelman kanssa. VServer on todella kevyt ja siinä riittää suoritustehoa paljon edellyttäen saman kernelin käyttöä isäntäjärjestelmän kanssa. Ohjelman toimivuuden kannalta tulisi ajaa korjaustiedosto isännän kerneliin. 2.6. VMware VMware on paras yhtiö virtualisoinnissa. VMware on kaupallinen ja käyttää suljettua lähdekoodia virtualisointiohjelmisto. Se on suuriin virtualisointi ratkaisuihin paras vaihtoehto.vmwarella pystyy virtualisoimaan kaikki x86 prosessoria käyttävät käyttöjärjestelmät. VMwaresta löytyy useita erilaisia versioita. VMware Fusion on työasemalle asennettava virtuaalikoneohjelmisto Mac OS X:lle. VMware ESX on Linux pohjaa käyttävä käyttöjärjestelmä. Siinä isäntäkyttöjärjestelmästä saa verkkopalvelut virtuaaliikoneiden ylläpitoon. Kernel hoitaa tässä tapauksessa ainoastaan virtuaalikoneiden toimintallisuuden sekä resurssien hallinnan. Siinä toimii Console Operating System, joka hoitaa käyttöjärjestelmien palvelut ja hallinnan. 8
Kuva 5. VMwaren virtualisointi laajuudesta. 2.7 VirtualBox Suosituin avoimen lähdekoodin virtualisointiohjelmisto. VirtualBoxista on olemassa kaksi versiota: vapaa versio, jossa on GPL lisenssi ja suljettu versio. Molemmat ovat ilmaisia, mutta suljetusta versiosta löytyy lisäominaisuuksia. VirtualBox toimii Linuxin lisäksi myös Windowsissa sekä Mac OS X:ssä. VirtualBox on hyvin samankaltainen kuin VMware, mutta paljon kevyempi käyttää. 9
Kuva 6. XP käyttöjärjestelmä VirtualBoxissa. 10
3 LÄHTEET WineHQ. 2014. Wine. Saatavissa: http://wiki.winehq.org [ Viitattu: 23.4.2014 ] WineHQ. 2014. Wine Application Database. Saatavissa http://appdb.winehq.org/ [Viitattu 23.4.2014] Petazzoni. 2014.Virtualization in Linux. Saatavissa: http://free electrons.com/doc/virtualization.pdf [ Viitattu: 23.4.2014 ] OpenSUSE. 2014. QEMU. Saatavissa: http://opensuse.fi/qemu [ Viitattu: 23.4.2014 ] LinuxWiki. 2014. VMware. Saatavissa: http://linux.fi/wiki/vmware [ Viitattu 8.4.2014 ] Cyberciti. 2014. Top 10 Linux Virtualization Software. Saatavissa: http://www.cyberciti.biz/tips/linux virtualization software.html [ Viitattu: 8.4.2014 ] 11