Linux/Emulátory pro Linux

Emulátory a virtualizační nástroje

editovat

Emulátory se liší od virtualizačních nástrojů především v tom, že emulují buď API operačního systému, nebo celý virtuální stroj. Tj. vytvářejí aplikaci či hostovanému operačnímu systému iluzi že má k dispozici vše co potřebuje pro svou práci, aniž by jí dovolovaly přímo sahat na hardware hostitelského systému. Na rozdíl od virtualizace která naopak sdílení hardwarových prostředků umožňuje.

Emulace je oproti virtualizaci náročnější na výkon stroje a jeho systémové prostředky, na druhou poskytuje komfort plynulé práce v rámci různých operačních systémů, aniž by bylo nutné mezi nimi přepínat.

Využití emulátorů

editovat
  • Když je nutné pracovat s programy, které nejsou portovány pro GNU/Linux
  • Když vyvíjíte na GNU/Linuxu software určený pro jinou platformu
  • Chcete bezpečně vyzkoušet jinou distribuci nebo operační systém

Hardwarové nároky

editovat

Samozřejmě platí pravidlo čím výkonnější stroj, tím efektivnější práce s emulátorem. Některé z emulátorů mají nároky na výkon stroje tak vysoké, že jejich reálný provoz zcela postrádá smysl. Než trávit dlouhé chvíle čekáním je pak lepší místo emulátoru pořídit samostatný stroj.

Většinu z uvedených emulátorů jsem otestoval na dvou strojích. Jeden s Celeronem PIV 2400MHz a druhý s Athlonem 2700XP+ To co bylo na prvním na hranici použitelnosti se dalo na druhém normálně používat i k práci.

Rozdělení emulátorů

editovat

Softwarové emulátory - které emulují prostředí operačního systému

Hardwarové emulátory - které fungují jako virtuální stroj

Mezi softwarové emulátory patří Dosemu nebo Wine.

Hardwarové emulátory lze rozdělit ještě na dvě skupiny a to

  • Hardwarové emulátory co částečně využívají architektury procesoru počítače - Win4Lin, Basilisk II, Executor, MOL
  • Hardwarové emulátory, které emulují CPU počítače - Bochs, Qemu, VMware, PearPC

http://nlp.fi.muni.cz/projekty/emuwin/

Emuluje : prostředí DOSu

http://www.dosemu.org/

Poslední aktualizace v květnu 2007

Emuluje : stroj s procesorem PC (x86), využívá instrukcí procesoru x86

http://plex86.sourceforge.net/

Momentálně nevyvíjený, poslední aktualizace v prosinci 2003

Emuluje : virtuální stroj s jedním, nebo i více procesory PC (x86), využívá instrukcí procesoru x86

http://bochs.sourceforge.net/

Poslední aktualizace v únoru 2004

Subjektivní hodnocení

Bochs je emulátor virtuálního stroje, tudíž pro instalaci jiného OS je nutno mít i příslušnou licenci. Testoval jsem jej s Windows98se. Instalace systému Trvala cca dvakrát tak dlouho jako u Qemu. Ze všech emulátorů PC které jsem zkoušel měl tento nejkomplikovanější nastavení konfiguračního souboru. Co do funkčnosti a uživatelského rozhraní se dá srovnávat s komerčním emulátorem VMware, ale pro vlastní provoz mi přišel trochu pomalý.

Emuluje : virtuální stroj s jedním, nebo i více procesory PC (x86), PPC (PowerPC), Sparc. Na platformě PC využívá instrukcí procesoru x86

http://fabrice.bellard.free.fr/qemu/

http://qemu.org/

Poslední aktualizace 7. února 2007

Subjektivní hodnocení

Qemu je emulátor virtuálního stroje, tudíž pro instalaci jiného OS je nutno mít i příslušnou licenci. Z Operačních systémů MS Windows mi v něm nejlépe jely win98se. Vyšší verze jely sice také ale bez jaderného modulu pomalu. Uživatelské rozhraní qemu je poněkud nezvyklé (skrytá konzole), co mi však mi přišlo jako hodně dobré, byla uživatelská jednoduchost při vlastním spouštění a provozu emulátoru.

Qemu akcelerátor

Od února 2005 je možné použít pro Qemu jaderný akcelerátor, který by měl údajně zrychlit virtuální stroj z 5 - 10 násobného zpomalení oproti skutečnému stroji na 1 až 2 násobné. Tento akcelerátor byl uvolněn pod GPL licencí počátekm února 2007. Použití tohoto akcelerátoru však má několik háčků:

  • Akcelerátor je možné přidat pouze do verze kompilované z cvs
  • Pro kompilaci jaderného modulu je nutno mít stejnou verzi překladače gcc, jakou bylo kompilováno jádro. Bohužel qemu v současné době nelze zkompilovat překladačem gcc-4.x (pouze gcc-3.x)
  • Dokud nebyl uvolněn modul kqemu pod GPL licencí, vznikal alternativní akcelerátor qvm86 pod GPL na adrese ovšem jeho vývoj byl ukončen.

Vyzkoušel jsem jaderný akcelerátor a mohu potvrdit že skutečně došlo k výraznému zlepšení výkonu emulátoru. Bohužel jsem měl možnost s akcelerátorem otestovat pouze různá Live CD, protože najíždění Win98se mi tehdy končilo chybovou hláškou. Podle toho co jsem našel na internetu by tento problém neměl vzniknout při nové instalaci. (Pravděpodobně se s jaderným modulem tehdy dohadoval umravňovací patch..)

Pozor, záleží na tom aby jaderný modul byl kompilován stejným kompilátorem jako samotné jádro, jinak totiž bude qemu najíždět bez podpory tohoto modulu. Také je třeba si dát pozor aby bylo qemu kompilováno s podporou jaderného modulu (což u většiny distribucí není).

Připojení obrazu disku z qemu

mount -o loop,offset=32256 obraz_disku.img /pripojny/bod/

Nejjednodušší spuštění qemu

qemu obraz_disku.img -m 256 -nics 0

(Vypnuto používání sítě a velikost používané paměti zvětšena na 256MB)

Otestování vypáleného LiveCD pomocí Qemu

qemu -cdrom /dev/cdrom -boot d

(Pokud chcete otestovat obraz LiveCD ještě před vypálením napište místo cesty k zařízení cdrom cestu ke staženému iso obrazu)

Problémy

  • Win98 jako guest na Linuxu

Vůbec první doporučená věc je nainstalovat do Windows patch, který jim "vysvětlí" že CPU nemají jen pro sebe. Jinak procesor pojede neustále na 100%. Windows 9x totiž nekorektně pracují s procesorovou instrukcí HLT, v důsledku čehož "kradou" cykly procesoru, aniž by něco dělaly.

Po rebootu se nainstalované Windows zakousnou - nedbat na to, zabít qemu, spustit znova do normálního režimu
Po spuštění se grafika Windows rozhasí a zatuhnou - nedbat na to, zabít qemu, spustit znova do normálního režimu
Po startu grafika Windows najede ve 256 barvách - nevím, nepřišel jsem zatím na to proč to, ale pomohlo odebrání grafických ovladačů, ukončit bez restartu a po spuštění je doinstalovat znova - ovšem POZOR! nepomohlo vždy.

VirtualBox

editovat

Emuluje : virtuální stroj s jedním, nebo i více procesory PC (x86), PPC (PowerPC), Sparc. Na platformě PC využívá instrukcí procesoru x86

http://www.virtualbox.org/

Poslední aktualizace 7. února 2007

Podle informací na webu by tento emulátor měl podporovat všechny 32-bitové operační systémy postavené na instrukcích x86

Emuluje : virtuální PC

http://www.vmware.com/

Komerční aplikace

VMware je emulátor virtuálního stroje, tudíž pro instalaci jiného OS je nutno mít i příslušnou licenci. Oproti Qemu, které je k dispozici zdarma, lze velice kladně hodnotit uživatelské rozhraní, jeho možnosti které nabízí ale především bezproblémovou kompilaci jaderných modulů. Pozor! Pokud používáte vlastnoručně kompilované jádro, je kromě samotné instalace nutné ještě doinstalovat patch any_to_any. Ten můžete stáhnout např. z http://ftp.cvut.cz/vmware/

  • pro zrychlení grafických aplikací a vůbec optimalizaci běhu hostovaného systému je dobré dodržet dvě zásady
    1. zvolit patřičný OS při vytváření virtuálního stroje
    2. nainstalovat do hostovaného stroje vmware-tools jsou součástí instalace (/usr/lib/vmware/isoimages)

existuje několik verzí VMware, základní jsou:

  1. VMware Workstation
    • instaluje se do běžného operačního systému (Linux,Win)
    • určeno k emulaci na jednom počítači (vývoj SW, testovací prostředí)
    • umožňuje emulovat celé síťové prostředí
    • v aktuální verzi (5) lze vytvářet libovolné množství tzv. "snapshotů" tedy zakonzervovat stav hostovaného OS
    • udávaná výkonnost je kolem 80%
  2. VMware Player [1]
    • to samé jako VMware Workstation, ale:
      • systém se nedá nainstalovat
      • umí použít už jednou vyrobený image z "VMware Workstation"
    • je free
  3. VMware GSX server
    • instaluje se do běžného OS (Linux, Win)
    • Uživatelé se k serveru připojují pomocí konzole (běh více virtuálních strojů současně, podpora až 64 procesorů, přidělování zdrojů)
    • lze použít s konzolí pro správu
    • aktuální verze (4) podporuje jeden snapshot
    • efektivnost taktéž 80%
  4. VMware ESX server
    • NEINSTALUJE SE DO OS, má své vlastní ovladače i jádro
    • podpora všech významných výrobců HW (HP, IBM ...)
    • lze použít s konzolí pro správu
    • podporuje v-motion (přesunutí běžícího systému na jiný HW...na video streamu to ani nepoznáte...jeden ping je o malinko delší)
    • efektivita kolem 90%
    • jedním z rozdílů mezi GSX a ESX serverem je také to, že ESX by měl umožňovat kontrolu systémových prostředků, nemůže se vám pak stát jako u GSX serveru, že vám jeden virtuální stroj vytíží celý systém natolik, že začne shazovat jiné virtuální stroje.

Win4Lin

editovat

Emuluje : virtuální PC, využívá instrukcí procesoru x86

http://www.netraverse.com/downloads/

Komerční aplikace

Subjektivní hodnocení

Win4Lin má jednu nepříjemnou vlastnost, že vyžaduje opatchované jádro. To učinit sice není žádný problém, nicméně na Debianu se mi to (zatím) nepodařilo. Takže mám zkušenosti pouze z Mandrakelinuxu.

Tam není s Win4Lin (téměř) problém. To téměř je zcela na místě, neboť aby bylo možné nainstalovat úpravu jádra pro spouštění Win4Lin, je nutné mít i odpovídající jádro. Paradoxně bylo téměř pravidlem, že zatímco byl balík pro Win4Lin pro jádro např. 2.6.8-10mdk tak na webu už bylo jádro verze 2.6.8-10mdk nahrazeno jádrem 2.6.8-12mdk, takže instalace selhala kvůli závislostem. Nicméně, občas se to podařilo. Pak však ztroskotalo spouštění, neboť patch nebyl zkompilován s podporou filesystému Reiserfs který používám. Takže usmálo-li se na mne štěstí a vše najelo, pak proběhla instalace Win4Lin bez problému. Stáhla se i aktualizovaná verze (v instalačním rpm balíku) a mohu konstatovat, že takhle švihat pak pod Win4Lin jsem Windows98se na žádném stroji nikdy neviděl.

Radost mi však zkalila omezená podpora DirectX, ovšem musím poznamenat, že s běžnými aplikacemi MS Office, Photoshop a jiné nebyl žádný problém a vše fungovalo super. Příjemné také bylo, že Win4Lin využívá přímo souborový systém Linuxu (nikoliv tedy obraz disku, jako virtualizéry), takže bylo možno k souborům přistupovat přímo z linuxových aplikací.

Emuluje : stroj s procesorem PowerPC

http://pearpc.sourceforge.net/

Subjektivní hodnocení

Pearpc je emulátor procesoru PowerPC, a lze na něj nainstalovat operační systémy určené pro tento procesor např. Mac OS X nebo Morphix.Upozorňuji, že pro instalaci jiného OS je nutno mít i příslušnou licenci. Testoval jsem jej s Mac OS X 10.1 Jaguar. Instalace systému proběhla bez problémů, ale bylo nutno předtím zkompilovat verzi z CVS. Verzi z distribuce (Debian) se mi nepodařilo rozchodit (i když možná po tréningu s CVS verzí by to už šlo) a stabilní verze Pearpc nějak divně vykreslovala. Výsledkem jsem však byl příjemně překvapen.

Pearpc svým rozhraním i způsobem použití připomíná Qemu - čistý příkazový řádek a jednoduché okno se spuštěným hostovaným OS. Mac se mi líbil i tím, že na rozdíl od Windows v Qemu nebo Win4Lin Pro nemrhal výkonem procesoru.

Emuluje : prostředí OS Windows (ve skutečnosti nejde o emulátor v pravém smyslu slova - vytváří prostředí pro běh programů pro Windows)

http://www.winehq.com/

Cedega (WineX)

editovat

Emuluje : prostředí OS Windows, se specializací na hry

  • funguje výborně na většinu 3D hry (včetně Half Life 2!)
  • na http://www.transgaming.com/ najdete seznam her co někdo kdy rozběhl případně problémy
  • momentálně se musíte registrovat (cca $30USD) a pak si můžete stáhnout balíčky + support po mailu

CrossOver Office

editovat

Emuluje : prostředí OS Windows, se specializací na kancelářský balík MS Office

  • podporuje pluginy do Mozilly jako Flash 7, QuickTime atd..
  • pěkny GUI na stahování updatů a fontů
  • podpora i pro Adobe Produkty (nyní možná i Macromedia)

Executor

editovat

Emuluje : prostředí MACu

http://www.ardi.com/executor.php

MOL - Mac-On-Linux

editovat

Emuluje : prostředí MACu

http://www.maconlinux.org/

Emuluje : prostředí počítače Commodore 64

Emulátor počítače Commodore 64

http://unusedino.de/ec64/

Emuluje : prostředí počítače ZX-spectrum

Emulátor počítače ZX-spectrum

http://www.zx-spectrum.net/xzx/

Odkazy na další emulátory pro Linux

http://www.linux.org/apps/all/System/Emulators.html