Seznamte se s WINE

25. 4. 2001
Doba čtení: 5 minut

Sdílet

Pokud nevystačíte s nativními un*xovými aplikacemi, může vám pomoci WINE. V tomto článku se na něj podrobněji podíváme.

Začneme tím, co WINE není. Podle názvu WINE není emulátor (Wine Is Not an Emulator ). WINE je totiž implementace Microsoft Windows API pro UNIXy. Protože se blíží verze 1.0, pravděpodobně o WINE ještě hodně uslyšíme.

Co? Implementace Windows API?

Velmi zjednodušeně rečeno WINE je program, který umožňuje spouštění nezměněných Windowsovských programů na Linuxu, *BSD a Solarisu, ovšem pouze na procesorech i386 kompatibilních (třeba Pentium, AMD K6, AMD K7 atd.). WINE nepotřebuje ke svému běhu nainstalovaná Windows, ale pokud je máte, umí využít nainstalované DLL knihovny a programy. Nyní WINE obsahuje asi 90% API Windows.

A jak WINE funguje?

Teoreticky je to docela jednoduché: WINE načte Windowsovský exe soubor, přelouská hlavičku, která je jiná než u ELF binárních souborů používaných na Linuxu, a začne vykonávat nativní instrukce pro procesor i386. Pokud narazí na volání Windows API, které má implementované, použije svoji implementaci, která zase použije odpovídající API Linuxu, X11, nebo window manageru. Pokud funkci nemá implementovanou nativně, použije tu z volané DLL knihovny. Takže program krásně běží. Může se stát, že se program pokusí šáhnout přímo někam na hardware a to mu WINE nedovolí, v tu chvíli je nejspíš s programem konec. To se mi stalo u několika her, které vypadaly, že poběží jedna radost, ale pokusily se zkontrolovat, že jsou spouštěny z CDčka (ochrana proti pirátům? ), v tu chvíli byl konec, třeba se dožadovaly vložení CD, i když v mechanice bylo. Z tohoto vyplývá, že nejspíš nebudou fungovat programy používající VxD ovladače, což ale dnes až tak nevadí, protože ty by většinou neběhaly ani pod Windows NT.

Výsledky WINE

Programy, co jsem zkoušel a fungovaly mi bez instalace Windows: Microsoft Excel, WinZip, Netscape Navigator, Delphi 3.0, StarCraft, Unreal, MDK a spousta dalších.

Naopak nefungoval mi: Internet Explorer, nepovedlo se mi ho nainstalovat, ale prý pokud máte instalaci Windows, tak funguje. Microsoft Word, ten taky má fungovat. Microsoft Flight Simulator, Commandos a spousta dalších.

Nicméně pokud chcete WINE kvůli jednomu specifickému programu, podívejte se na: http://www.wi­nehq.com/Apps/qu­ery.cgi, kde najdete výsledky pokusů se spoustou různých programů. Pokud Vás zajímají nejvíce hry, pak se podívejte na: http://www.li­nuxgames.com/WI­NE. A také na stránky firmy TransGaming. Firma TransGaming se totiž rozhodla pro své zákazníky zfunkčnit jakoukoliv hru pro Windows tím, že implementuje všechny DirectX API, která hra používá. Kdo dá firmě TransGaming nějaké peníze a stane se tak jejím zákazníkem, může hlasovat o tom, která hra bude další na řadě při zprovozňování.

Díky tomu, že WINE není emulátor, ale používá nativní kód nebo odpovídjící nativní funkce, je běh programů pod WINE až neuvěřitelně rychlý (umí například i využít i 3D akceleraci, pokud ji máte pod X windows zprovozněnou ). Třeba hra StarCraft běží jen o něco málo pomaleji než pod Windows a hra Unreal byla na Celeronu 433 se 128MB RAM bez 3D akcelerace ještě docela použitelná. Ve chvíli, kdy bude vypuštěna verze 1.0, která nebude obsahovat kód pro ladění, by vše mělo fungovat stejně rychle jako pod Windows.

Poslední výhodou WINE je, že pád jednoho programu by neměl shodit jiné programy puštěné pod WINE. Může se stát, že nějaká hra zablokuje myš a klávesnici, ale pak je vždy možné zmačknout CTRL+ALT+F1, dostat se ke konzoli příkazem „killall wine“ se problémového programu zbavit, a pak se do X windows vrátit.

Kde WINE najdu?

Wine se dá stáhnout buď z http://www.wi­nehq.com/downlo­ad.shtml, kde mají odkazy jak na zdrojáky, tak na balíčky RPM. Pokud nechcete WINE kompilovat, doporučuji balíček od CodeWeavers, který navíc obsahuje třeba grafického průvodce konfigurací a jiné vychytávky.

Pokud se rozhodnete WINE zkompilovat, stáhněte si soubor Wine-20010305.tar.gz nebo novější. To dlouhe číslo je datum (rok, měsíc, den) vytažení tohoto souboru z CVS.

Potom rozbalte třeba příkazem:

tar -xv –use=gzip -f Wine-20010305.tar.gz

cd wine-20010305

Spusťte konfigurační skript s patřičnýmy parametry (pokud neznáte možnosti, použijte „./configure –help“

./configure

Spusťte kompilaci příkazem:

make

a jděte na kafe. Až bude hotovo, spusťte instalaci:

make install

Nyní Vás čeká konfigurace Windows. Pokud Windows nemáte nainstalované vůbec, vytvořte si někde adresář, co bude pro Windows disk C. Může to být na jakékoliv partition (pokud vím; nicméně ext2 funguje určitě). V tomto adresáři vytvořte adresáře:

windows, windowssystem a temp

Potom si otevřete soubour ~/.wine/config a pozmněňte ho tak, aby odpovídal Vašemu systému. Je to poměrně jednoduché, nicméně zde je HOWTO.

Pokud nyní chcete WINE vyzkoušet, sežeňte si Windowsovský program a spusťte ho příkazem:

wine jmeno.exe

Docela užitečné jsou i příkazy:

ps -Al | grep wine

killall wine

První zkontroluje, jestli wine ještě někde běží, a druhý ho zruší. Někdy totiž WINE při pádu Windowsowského programu někde zapomene některé ze svých vláken (procesů).

Závěr

Už nyní je WINE velmi použitelný zvláště s některými aplikacemi a má několik výhod oproti produktům podobného zaměření: je úplně zadarmo, není sice šířen pod GPL, ale pod licencí podobné licenci X Windows, a nepotřebujete licenci pro Windows. Běh programů je mnohem rychlejší než třeba pod VMware a je podstatně méně náročný na pamět. Pro vývojáře programů pro Windows nabízí WINE navíc tzv. WineLib, což

bitcoin_skoleni

jsou knihovny a hlavičkové soubory umožňující kompilaci programů pro Windows napsaných v C a C++ pro většinu UNIXů na jakémkoliv procesoru (tj. třeba i pro Apple Mac s Mac OS X nebo SGI IRIX ).

Pokud se podaří ho dovést do verze 1.0, může se snadno stát onou poslední kapkou, která doposud chyběla k masovému rozšíření Linuxu. K tomu mu zatím chybí o něco větší úspěšnost a o něco snazší použití. Nicméně stále sleduji vývoj a těším se na dobu, kdy mi bude fungovat jakýkoliv program, na který si vzpomenu. Nakonec se chci ještě omluvit za to, že všechny odkazy vedou na stránky v angličtině.

Autor článku