- předchozí článek - následující článek - obsah - úvodní stránka -

Linuxové noviny 01/2000

Vmware pro Linux

Petr Olšák, 10. listopadu 1999

V tomto článku bych chtěl přiblížit své dojmy při instalaci a provozu programu vmware. Věc najdete na http://www.vmware.com/ a jedná se o program, který vytvoří kompletní virtuální počítač. Virtuální hardware tohoto počítače si můžete naeditovat a v textovém konfiguračním souboru propojit se skutečnými možnostmi reálného počítače a reálného operačního systému. Virtuální stroj nabízí kompletní virtuální BIOS a lze do něj instalovat zřejmě libovolný operační systém pro PCčka včetně aplikací. Uživatelsky se jeví tento virtuální stroj jako okénko na ploše X Window Systému, ve kterém se odehrává vše, co bychom viděli na obrazovce námi naeditovaného počítače. Můžeme tam instalovat druhý Linux včetně kompletního X serveru a kochat se pohledem na to, že máme Linux v Linuxu. Nebo tam můžeme mít i jiný operační systém, jako je například MS Woknous.

Pro úplnost dodávám, že program vmware je k dispozici i pro MS Woknous NT/2000 jako vnější operační systém a rovněž do něj lze instalovat libovolný vnitřní PCčkový operační systém. Touto variantou jsem se dále nezabýval a zaměřil jsem se na variantu MS Woknous 98 v Linuxu. Než se pustím do popisování zážitků z obrovského množství velebných modrých bootů tohoto pro mě exotického operačního systému uvnitř Xového okénka, popíšu možnosti vmware ve verzi 1.1.1.

Instalace a konfigurace vmware

V dokumentaci k programu se píše, že program lze použít pro jádra 2.0.x při jednom procesoru a pro jádra 2.2.x při více procesorech. Přiznám se, že mi závislost verze jádra na počtu procesorů připadá v dokumentaci poněkud nejapná.

Instalace na RedHatu prostřednictvím rpm proběhla bez problémů. Na Slackwaru jsem instaloval z taru a spuštěním skriptu install. Zde chtěla instalace tvrdošijně ukládat startovací skript do /etc/rc.d/init.d/ a nedala pokoj, dokud jsem jí ten adresář (společně s mnoha dalšími adresáři rc[0123456].d) provizorně nevytvořil. Pak jsem musel ručně zařadit startovací skript do rc.local. V dokumentaci se dále píše, co vše je potřeba v jádru mít. Přitom tam chybí to nejdůležitější: že je potřeba podporovat moduly. Zřejmě tvůrci počítají s tím, že všechna jádra mají podporu modulů. Určitě to není pravda, protože aspoň já si často a s oblibou kompiluji kompaktní jádra bez modulů.

Program vmware umožňuje naeditovat na virtuální IDE sběrnice naší nové hračky až čtyři virtuální disky. Každý z nich může být implementován jako soubor ve vnějším operačním systému nebo jako partition skutečného IDE disku. Partition SCSI disku zatím není podporována a virtuální SCSI sběrnice také ne. Já jsem měl v kompu jen SCSI disky, takže jsem na virtuální IDE kšandu jako "master" navěsil disk reprezentovaný souborem. V takovém případě jsme omezeni velikostí 2 GB na jeden disk (protože s většími soubory by mohla být ve vnějším operačním systému potíž). To ovšem pro experimentování úplně postačí.

Disk reprezentovaný souborem má několik příjemných vlastností. Především při jeho zavedení vzniká ve vnějším systému soubor poměrně malé velikosti. Teprve poté, co do virtuálního disku začne vnitřní systém zapisovat, můžeme ve vnějším systému pozorovat narůstání velikosti tohoto souboru. Dále si po zaparkování vnitřního systému můžeme říci, že to, co se na virtuální disk zapsalo, je v dané chvíli to pravé, co tam chceme mít a změníme práva k souboru reprezentujícímu disk na "pouze ke čtení". Program vmware v takovém případě umožní reprezentovat disk tímto výchozím souborem a dále si zakládá při každém startu virtuálního stroje přírůstkový soubor, kam ukládá data, která zapisuje na virtuální disk vnitřní systém. Tomuto systému se tedy disk jeví nadále jako zapisovatelný a nepozná žádné změny. Přírůstkový soubor se po ukončení aktivity virtuálního stroje může automaticky mazat (nonpersistent mode). V tomto případě můžeme vnitřní systém típnout uprostřed činnosti a při novém startu naběhne zcela stejně jako prve a nebude zdlouhavě kontrolovat svůj souborový systém. Druhou možností je zachovat přírůstkový soubor pro příští start (undoable mode). Při příštím startu se program zeptá, zda je možné sloučit přírůstkový soubor s výchozím (a vytvořit nový výchozí soubor), nebo zda se má přírůstkový soubor zachovat a použít pro tento běh bez slučování nebo zda se má přírůstkový soubor ignorovat a využít jen výchozí. Nevýhodou je, že je to hned na začátku poměrně komplikovaná otázka, kterou průměrný uživatel těžko chápe. Navíc se program zeptá v těžko srozumitelné angličtině (viz obrázek na další straně).

Dále je vhodné (zvláště pro instalaci vnitřního systému) konfigurovat CD ROM. Ten se objeví ve vnitřním systému jako standardní ATAPI IDE zařízení. V konfiguračním souboru mu přiřadíme například /dev/cdrom, což prakticky může být třeba CDčko SCSI. Analogicky navážeme virtuální floppy mechaniku na /dev/fd0.

[ vmware 1 ]

Také se musíme rozhodnout, kolik přidělíme virtuálnímu stroji operační paměti. Není vhodné nastavit více paměti, než máme skutečně. Je potřeba též počítat s tím, že budeme virtuální stroj pouštět současně vícekrát. vmware je vybaven pojistkou: lze nastavit, kolik paměti mohou všechny současně běžící virtuální stroje obsadit maximálně. Pokus o překročení tohoto limitu způsobí, že se další virtuální stroj odmítne spustit. Já jsem přidělil vnitřnímu systému 48 MB paměti. Protože máme na našem kalkulátoru 800 MB skutečné paměti, virtuální stroj lze spouštět asi desetkrát a ještě zbude polovina paměti na provoz mnoha dalších méně paměťově náročných aplikací.

Myší kurzor se nám uvězní uvnitř okénka v okamžiku, kdy ve virtuálním stroji provedeme nějakou aktivitu. Vnitřní systém myš detekuje a pracuje s ní jako s běžnou myší. vmware nabízí trojkombinaci Alt-Ctrl-Escape na osvobození myši, abychom mohli pracovat s jinými aplikacemi ve vnějším systému. Další možností je instalace tzv. vmtools do vnitřního systému. Je to prográmek, který vydá vnitřnímu systému povel, aby pustil myš, kdykoli se kurzor dostane na okraj virtuální obrazovky. Pak se dá myš jednoduše osvobodit pouhým vystrčením kurzoru mimo okénko.

Jediný kanál, kterým může vnitřní operační systém přistupovat k souborům vnějšího systému a komunikovat s ostatními počítači v síti je virtuální síťová karta. Ta se jeví jako AMD PCNET Ethernet Adapter na PCI (ačkoli ve skutečném kompu třeba žádnou síťovou kartu nemáme). Dá se vytvořit oddělená virtuální síť jen pro současně běžící virtuální stroje a pro vnější operační systém. Ten dostane prostřednictvím speciálního modulu jádra další síťové rozhraní vmnet1, které neroutuje do skutečné sítě, ale může tam všem virtuálním strojům nabízet služby (například sambu). V této variantě nabízí vmware do virtuální sítě vlastní DHCP server. Druhá varianta umožní propojit virtuální síť současně běžících programů vmware se skutečnou sítí tak, že zavedený modul jádra propojí síťové aktivity virtuálních strojů s některým skutečným rozhraním naší sítě. Trochu déle mi trvalo, než jsem přišel na to, že konfigurace IP routingu není potřeba a že vše funguje samo od sebe. Každý nově startovaný virtuální stroj si vymyslí novou jedinečnou hardwarovou adresu virtuální síťové karty, takže na nás leží jen konfigurace DHCP serveru pro Linux, aby virtuální stroje dostaly přiděleno též jednoznačné IP. IP pakety z vnější sítě určené pro virtuální stroje začnou samy procházet naší skutečnou síťovou kartou až k té virtuální. Neptejte se mě, proč.

Instalace vnitřního systému

Musím se přiznat, že jsem viděl instalaci MS Woknous poprvé v životě a doufám, že ten zážitek nebudu muset opakovat. Po zasunutí CDčka a startu virtuálního stroje můžeme ve virtuálním BIOSu nastavit, že se bude z CDčka bootovat. Pak bootujeme virtuální stroj a následujeme instrukce, které se postupně objevují v okénku na obrazovce. Vnitřní systém provádí rozdělení virtuálního disku na oddíly. Tzv. formátování disku a kontrola jeho povrchu nám vyloudí na tváři úsměv. Vnitřní systém je dokonale zblbnut a domnívá se, že skutečně vykonává nějakou hardwarovou práci. V určitém okamžiku dokonce systém píše "instaluji nový hardware". To už jsem se smál naplno.

Instalace MS Woknous 98 trvá asi 98 minut. Je zajímavé, že po skoro celou dobu to nenechá uživatele v klidu. Člověk nemůže jednoduše přejít k jiné aplikaci vnějšího systému a dělat rozumnou práci. Ta instalace po něm neustále v různých časových odstupech něco chce. Za velmi vtipné považuji, že asi v 50. minutě (tedy zhruba v půlce cesty) je potřeba zadat příšerně dlouhý kód licenčního čísla. Po dobu instalace to asi pětkrát bootuje.

Po absolvování instalačního martýria se doporučuje instalovat do Woknous ještě vmtools nejen proto, aby nám systém pouštěl na okraji obrazovky myš. V tomto balíku je navíc ovladač grafického adaptéru pro Woknous, který je optimalizován na vlastnosti virtuální grafiky ve vmware. Pak můžeme vybírat ve vnitřním systému různá rozlišení obrazovky. Důsledkem takových změn je pouze změna velikosti okénka.

Za geniální považuji skutečnost, že virtuální hardwarové prostředí je stejné ve všech virtuálních strojích. Vnitřní systém a jeho aplikace se dají tedy instalovat jen jednou. Pak se prostě vezme soubor reprezentující virtuální disk, udělá se gzip, šoupne se to do sítě nebo na ZIPovou disketu, na jiném kompu se zcela jiným skutečným hardwarem se udělá gunzip a vmware s vnitřním systémem okamžitě jede. Taková instalace pak netrvá ani dvě minuty! Zde si ovšem musíme dát pozor na to, abychom nebyli označováni za softwarové piráty. K tomu se vrátím na konci tohoto článku.

Provoz virtuálního stroje

Aby bylo lze vmware vůbec spustit, je potřeba vyplnit na http://www.vmware.com/ dotazník. Obratem přijde elektronickou poštou licenční soubor opravňující k provozu na jeden měsíc. Ten je třeba mít v adresáři ~/.vmware, tj. licence je vázaná na uživatele.

Před prvním spuštěním je třeba založit adresář, přejít do něj a tam spustit vmware. Program se zeptá na nejdůležitější konfigurační parametry a uloží do aktuálního adresáře konfigurační soubor, založí tam soubory realizující virtuální disky a soubor s obsahem virtuální CMOSky. V tomto adresáři vzniká také log, přírůstkové a zamykací soubory.

Uživatel si může založit více adresářů s virtuálními stroji různých parametrů (různé konfigurace, různé disky a různé CMOSky). Do každého takového stroje si může zkusit instalovat jiný operační systém. Pak spouští jednotlivé virtuální stroje jako vmware /cesta/ke/konf/souboru. Konfigurační soubor lze vytvářet a modifikovat pohodlně tzv. konfiguračním editorem přímo z programu vmware.

Celé okénko vlastního virtuálního stroje je plně grafické. Veškeré fonty vnitřního systému jsou tedy skutečně starostí jen tohoto vnitřního systému. S fonty použitého X serveru to nemá nic společného. Počeštěná Woknous tedy fungují skutečně poločesky poloanglicky (tak, jak normálně). České nebo počeštěné aplikace uvnitř Woknous nedělají problémy jiné, než normální problémy známé z nativních Woknous.

Ani klávesnice nedělá problémy. vmware je optimalizováno na XFree86 servery s PCčkovými klávesnicemi, u nichž přebírá skutečné kódy kláves. Není tedy třeba se bát konverze na keysymy, která může být přes xmodmap zkreslena. Naopak, pokud pracujeme v X serveru s exotickou klávesnicí, vmware se přeorientuje na keysymy. V tom případě lze editovat mapovací tabulku z keysymů do vnitřní reprezentace kódů virtuální PCčkové klávesnice.

[ vmware 2 ]

Virtuální stroj lze spouštět na vzdálených X serverech jako každou jinou X aplikaci. Pokud ale síť jen mírně zadrhává, jsou znát prodlevy. Mezi kliknutím myši a vybalením nabídky, které má okamžitě následovat, může uplynout nějaká doba. V režimu vzdáleného X serveru tedy asi nelze pracovat s aplikacemi, které zobrazují plynulý nebo prudký pohyb. Hráčům střílaček by zřejmě tento režim nevyhovoval.

Pokud máte virtuální stroj na lokálním X serveru, prodlevy nejsou skoro patrné. Navíc v tomto případě máte možnost přejít do tzv. "Full screen" módu. Při něm se usadí celá grafika virtuálního stroje do následujícího volného grafického terminálu (dosažitelného například pomocí Alt-Ctrl-F8). Nyní je už grafika dokonce akcelerovaná a rozdíl v rychlosti mezi provozem nativního operačního systému a systému uvnitř virtuálního stroje není vůbec znát.

Ve "full screen" módu jsou rozlišení obrazovky a opakovací kmitočty monitoru pevně dány konfigurací X serveru. V této pevně dané ploše je někde uprostřed (při menším rozlišení grafiky vnitřního systému) vidět aktivní plocha virtuálního stroje. Změníme-li rozlišení virtuální grafiky na shodné se skutečnou, roztáhne se aktivní plocha na celou obrazovku. Kmitočty monitoru nemá vnitřní systém nárok měnit, ačkoli si myslí, že to dělá.

Při bootu vnitřního systému jede procesor naplno. V případě MS Woknous 98 zůstává plné zatížení procesoru i při zobrazení okénka pro přihlášení uživatele. To považuji za chybu tohoto systému, kterou navíc nelze odhalit bez použití vmware, protože v době přihlášení nelze ještě spouštět měřáky procesoru ve vnitřním systému. Teprve po přihlášení a inicializaci všech Explorerů, Wordů a ikonek na ploše se vnitřní operační systém zklidní. vmware si pak bere méně než 5 % procesoru. MS Woknous zůstávají ale stále mírně neklidné: virtuální kontrolka IDE rozhraní k CD ROM mechanice neustále poblikává. Zřejmě ten systém každou vteřinu kontroluje, zda tam nepřibylo nějaké CDčko, na kterém je nutné spustit autorun.

Viděl jsem spouštět vmware na jiném než XFree86 serveru a ukázalo se, že problémy mohou nastat. Především program prohlásil, že bude mít potíže s endianitou tohoto X serveru a navíc s barevnou hloubkou, která byla jen jeden byte na pixel. Pak nabootoval vnitřní systém a v okénku se začaly dít různé duhové věci a barevné šmouhy v místech, kudy procházel kurzor myši. Aplikace se sice ovládat daly, ale vyžadovalo to velkou dávku fantazie od uživatele. Ten X server byl XWinPro. Osobně považuji za masochismus lézt z Woknous do Linuxu jen proto, aby v něm byly spuštěny zase Woknous.

Provoz více virtuálních strojů najednou

Máme-li v kompu dost paměti, můžeme spouštět více Woknousítek najednou. Může je též spouštět více uživatelů současně na různých X serverech. Aby uživatel nebyl zdržován instalací vnitřního systému a abychom ušetřili místo na disku, rozhodl jsem se sdílet mezi uživateli výchozí soubor reprezentující virtuální disk. Ten je pro uživatele read-only a je sdílen pomocí hard linků. Soft link nevyhovuje, protože vmware se snaží vytvářet přírůstkové soubory nikoli v adresáři, kde je soft link, ale v adresáři, kam soft link ukazuje. My přitom potřebujeme, aby každý uživatel měl svůj jedinečný přírůstkový soubor.

Pro uživatele jsem vytvořil skriptík s názvem win98, který zjistí, zda už uživatel má věci konfigurovány. Pokud ne, udělá potřebnou práci:

#!/bin/bash
if [ ! -d ~/.vmware ] ; then
  echo creating default configuration ...
  mkdir ~/vmware ~/.vmware
  mkdir ~/vmware/win98
  ln /home/vmware/license ~/.vmware/license
  cp /home/vmware/preferences\
     ~/.vmware/preferences
  ln /home/vmware/win98.dsk\
     ~/vmware/win98/win98.dsk
  cp /home/vmware/win98.cfg\
     ~/vmware/win98/win98.cfg
  cp /home/vmware/win98.nvram\
     ~/vmware/win98/win98.nvram
fi
vmware -x vmware/win98/win98.cfg

Sdílení jedné CD ROM mechaniky je možné, ale sdílení společné floppy mechaniky nikoli. Proto bylo potřeba vyhodit flopinu z konfiguračního souboru a ve virtuálním BIOSu zařídit, aby se z ní hned na počátku nesnažil program bootovat.

Na Linuxu běží DHCP server, který přiděluje jednotlivým virtuálním strojům jednoznačné IP. Takže TCP/IP spojení k virtuálním strojům je zcela bez problémů. Bohužel, Woknous 98 mají kdesi uvnitř ještě jeden parametr, který je označován jako název stroje. Protože systémy bootují ze sdíleného virtuálního disku, je tento název stejný. Ve druhých a dalších současně spuštěných Woknous to zařve tak, jak ukazuje další obrázek. Důsledkem toho je, že TCP/IP je OK, ale Microsoftí síť je v těchto Woknousech paralyzována (například nejsou dosažitelné svazky ze samby).

[ vmware 3 ]

Odmítl jsem zatím problém systémově řešit (například programem, který by na základě aktuálního času náhodně generoval název počítače a zapisoval jej při bootu do míst, kde to ty Woknousy hledají). Pokud bude chtít bez problémů pracovat více uživatelů, musejí si vymyslet každý své jméno, poklikat po obrázcích ve Woknous, vložit na určité místo zvolené jméno a zachovat svůj přírůstkový soubor i pro příští start virtuálního stroje.

Poznámky k licencím

Je třeba respektovat současně licenci k programu vmware a licenci k použitému vnitřnímu operačnímu systému a k aplikacím v něm instalovaným.

Program vmware bohužel není GPL. Pokud by byl, označil bych jej za naprosto skvělou věc. Licence koncového uživatele (označovaná zkratkou EULA) obsahuje obvyklá omezení známá z jiných komerčně šířených produktů. Měsíc si s tím můžeme hrát a pak je potřeba věc koupit nebo si s ní přestat hrát. Pro akademické použití to stojí $99, jinak je to dražší.

Nejhorší je, že se mi nepodařilo zjistit, co je možné za částku $99 s programem dělat. EULA je koncipována jako licence pro jednoho uživatele na jednom stroji. Znamená to, že když mám na jednom stroji 200 uživatelů, musím to kupovat 200 krát? Většina těch uživatelů si to spustí jen z legrace nebo z nostalgie, aby se podívala, jak vypadají MS Woknous v okénku. Rutinně to využívat nebudou. Takové kruté omezení použití programu na jednoho uživatele není pro většinu komerčních programů obvyklé. Když se program instaluje, pak bývá samozřejmé, že jej mohou používat všichni uživatelé počítače, na kterém byla instalace provedena.

Položil jsem tedy dotaz na info@vmware.com, ale ani po zopakování tohoto dotazu jsem se nedočkal odpovědi. Zřejmě ani sami tvůrci nemají zcela jasno, jak licencovat program, který díky tomu, že se jedná o X aplikaci, umožňuje obrovskou flexibilitu použití různým skupinám uživatelů. Ti mohou program spouštět současně na více X serverech bez závislosti na tom, kde je fyzicky instalován.

Protože jsem nedostal odpověď, vytvořil jsem si vlastní interpretaci licence: Jedna licence se vztahuje k jedné fyzické instalaci a k jednomu pracovnímu uživateli, jehož účet může být zřízen jen proto, aby z něj šlo spouštět vmware. Nyní záleží jen na tom, kolika lidem bude známo heslo od tohoto účtu. To si myslím, že není omezeno. Onen pracovní uživatel, který dejme tomu program koupil za $99, může přece půjčit svůj účet komukoli.

Všiml jsem si, že testovací 30denní verze má licenční soubor psaný na jméno, ovšem tento soubor se dá "půjčovat". Lze jej umístit do domovského adresáře jakéhokoli uživatele a program pracuje. Jméno uživatele, na kterého je program licencován, se pouze objeví v záhlaví rámečku X aplikace.

Dále je třeba se zabývat otázkou licence vnitřního operačího systému. Tento úkol jsem zadal kolegům, kteří tento systém používají i jako vnější, protože jsem se sám četbou této licence nechtěl rozčilovat. Výsledek je nemastný neslaný. Jedny Woknous mohou být instalovány na jednom počítači a může se u nich střídat více uživatelů. Licence jaksi samozřejmě předpokládá, že se tito uživatelé budou u té jedné instalace střídat na jediném počítači. Program vmware a protokol XDMCP nás od takového omezení osvobozuje.

Kdybychom tedy instalovali MS Woknous jedinkrát do virtuálního stroje a datová reprezentace instalace by byla v read-only souboru na disku fyzicky umístěna jenom jednou (ale díky hard-linkům viditelná libovolným počtem uživatelů z různých míst), pak zřejmě neporušujeme licenci. Nyní to bude současně používat více uživatelů na různých X serverech - fenomén, se kterým licence vůbec nepočítá. Pokud si řekneme "co není zakázáno, je dovoleno", pak se domnívám, že takové použití je v souladu s licencí jednak MS Woknous a jednak všech aplikací, které jsou v nich instalovány.

Zajímalo by mě, co na to říkají právníci. Rád se nechám poučit. Do soudního sporu s Microsoftem kvůli tomu, že používáme jednu instalaci MS Woknous na více X serverech, se mi ale vůbec nechce. V takovém případě bych raději provedl unlink všech linků na soubor win98.dsk a tím způsobil rychlou likvidaci tohoto operačního systému včetně všech jeho aplikací. My totiž na použití Microsoftích produktů nejsme závislí.

Shrnutí

Za dobu mého experimentování se program vmware choval zcela bezchybně. Je vidět, že programování a testování produktu udělali autoři s největší pečlivostí už ve verzi 1.1.1. Dokumentace by potřebovala v některých místech upřesnit, ale jinak i ta se vymyká šedivému průměru. Za podstatnou nevýhodu považuji nevyjasněnost licencí na víceuživatelských počítačích a v síťovém prostředí. Domnívám se, že ani právníci, kteří pro komerční firmy texty těch licencí vymýšlejí, mnohdy nemají zcela jasno, o co jde.

[ vmware 4 ]

Na posledním obrázku vidíme pracovní plochu X serveru s okénky několika aplikací. V pozadí vlevo se krčí Netscape a vpravo nahoře je vmware s vnitřním systémem MS Woknous98. V tomto systému je spuštěn Explorer a v něm vidíme stejné URL (www.alt-f4.cz), jako ve zmíněném Netscape. Píšou tam, že používáme zapovězený operační systém a že bychom s tím měli něco dělat, zatímco v Netscape vidíme text poněkud odlišný. Vpravo dole mezitím bootuje virtuální stroj ještě jednou. Je zachycena pozoruhodná část bootu, která mě nejvíce zaujala. Z ní je totiž patrno, že MS Woknous 98 nezapře své předky a jsou stále úzce svázány s DOSem! Bohužel se mi nepodařilo zachytit situaci, kde je vidět feftina místo češtiny. Nekecám, skutečně i takové věci jsou u draze koupených počeštěných systémů možné.

Co z obrázku není vidět: Netscape je spuštěn na jiném počítači než oba programy vmware. Uživatel sedí navíc u zcela jiného počítače, přičemž okenní manažer je spuštěn zase odjinud. V xtermu, který na nás pokukuje černou plochou vpravo dole, je spuštěn ssh sun2.dante.de a jsou tam v provozu testy nově připravovaného CDčka TeXu. Já přitom vůbec nevím, ve kterém městě ten sun2 skutečně leží, protože jsem byl ve škole vždy horší v zeměpise. To považuji za svobodné použití sítě, které by nemělo být komplikováno špatnými komerčními licencemi. *


- předchozí článek - následující článek - obsah - úvodní stránka -