59.DOC

(132 KB) Pobierz









Rozdział 59.
Projekt Wine









E:\Moje dokumenty\HELION\Linux Unleashed\Indeks\59.DOC              873










Rozdzia³ 59. ¨ Projekt Wine              873

Robert Pfister

W tym rozdziale:

u                                          Obecny stan projektu Wine             

u                                          Konfiguracja programu Wine              

u                                          Używanie programu Wine             

u                                          Zasady działania programu Wine

u                                          Gdzie kończy się Wine, a zaczyna MS-Windows?

u                                          Ograniczenia programu Wine             

Wine to skrót od słów Windows Emulator. Program ten pozwala na uruchamianie aplikacji przeznaczonych dla MS-Windows w środowisku X Window działającym w systemach UNIX-owych. Podobnie jak DOSemu, przy uruchamianiu programów dla Windows Wine wykorzystuje bezpośrednio możliwości oferowane przez architekturę procesorów 386 firmy Intel. Program Wine po prostu tłumaczy wszystkie wywołania funkcji MS-Windows na odpowiadające im wywołania funkcji systemowych UNIX-a i X Window. Podobnie jak w systemie OS/2, programy dla systemu Windows uruchamiane w środowisku Wine mogą korzystać z możliwości oferowanych przez system operacyjny. Wine jest po prostu jednym z wielu procesów użytkownika w systemie linuxowym, więc również jest zabezpieczony przed uszkodzeniem przez inne procesy. W systemie OS/2 ta właściwość nazywana jest po angielsku crash-protection, czyli zabezpieczenie przed załamaniem. Ponieważ wielozadaniowość jest podstawą systemu Linux, procesy Wine mogą współistnieć z innymi procesami, nie stwarzając problemów spotykanych przy pracy z systemem MS-Windows.

Obecny stan projektu Wine

Podobnie jak większość programów linuxowych, Wine jest tworzony przez grupę ochotników. Program Wine jest obecnie w fazie wczesnych testów. Tylko niektóre prostsze aplikacje MS Windows działają bez żadnych problemów. Mój ulubiony zestaw gier dla Windows, Pipe Dream firmy Lucas Arts, działa zupełnie zadawalająco pod kontrolą Wine.

Choć da się grać w Pipe Dream i inne proste gry, nie wszystko działa doskonale. Można zauważyć pewien spadek prędkości, zdarzają się również problemy z odświeżaniem ekranu.

Firma Sun Soft opracowała produkt dość podobny do Wine, o nazwie WABI, przeznaczony dla UNIX-owych stacji roboczych. WABI jest na rynku od 1994 roku i obsługuje nawet tak złożone aplikacje jak Microsoft Excel czy Lotus Smart Suite dla systemu Windows 3.11. Program WABI nie obsługuje jednak aplikacji systemu Windows 95. Można się spodziewać, że za jakiś czas program Wine będzie również dobrze sobie radził z aplikacjami Windows ogólnego przeznaczenia.

Konfiguracja Wine

Program Wine jest rozprowadzany tylko w postaci kodu źródłowego. Jeśli posiadasz odpowiednie oprogramowanie i nieco cierpliwości, konfigurowanie Wine nie powinno sprawić Ci większych kłopotów – nawet jeśli nie jesteś programistą.

Wymagania systemowe

Aplikacje Wine będą działać z rozsądną prędkością w każdym systemie linuxowym, w którym działa system X Window. Teoretycznie Wine powinien posiadać pewną przewagę nad systemem Windows, który jest zależny od środowiska MS-DOS. Mimo wszystko dane doświadczalne wskazują, że pod kontrolą obecnej wersji Wine aplikacje działają wolniej niż w środowisku Windows.

Aby wykorzystywać program Wine, trzeba posiadać zainstalowaną na partycji dostępnej dla Linuxa wersję systemu MS-Windows 3.1. Wygodnie jest również uruchamiać dostępne aplikacje MS-Windows z tych samych katalogów, w których są one zainstalowane w ich rodzimym środowisku DOS i Windows. Typowy użytkownik Linuxa posiada również zainstalowany system DOS i Windows, więc konfiguracja sprowadza się tylko do udostępnienia odpowiednich katalogów dla systemu Linux. Wersje jądra do 1.1.83 nie obsługują skompresowanych za pomocą programów stacker czy drvspace systemów plików MS-DOS.

 

Niektóre programy instalacyjne systemu Linux pozwalają na zainstalowanie partycji DOS-owej w jednym z podkatalogów systemu plików. Jeśli nie skonfigurowałeś partycji w ten sposób, powinieneś dodać do pliku /etc/fstab następujący wiersz:

/dev/hda1 /c MSDOS defaults

hda1 to nazwa partycji, która zawiera system MS-DOS[1], natomiast /c to podkatalog, w którym dostępny będzie tenże system. W tym przykładzie założyliśmy, że katalog /c został wcześniej utworzony – jeśli nie, należy to zrobić za pomocą polecenia mkdir.

Program Wine jest rozprowadzany w postaci kodu źródłowego, który przed użyciem musi zostać skompilowany. Potrzeba do tego około 10 MB wolnego miejsca na dysku. Sam kod źródłowy zajmuje ok. 3.5 MB. Aby skompilować Wine, będziesz potrzebował:

u                                          kompilatora GCC,

u                                          biblioteki LibC,

u                                          systemu X Window wraz z elementami dla programistów (ang. development),

u                                          wersji jądra nowszej niż 0.99.13

Skąd można załadować Wine

Nowe wersje systemu Wine opracowywane są średnio raz w tygodniu. Główne węzły FTP oferujące oprogramowanie linuxowe zwykle udostępniają najnowszą wersję Wine. Dla przykładu, w węźle sunsite.unc.edu programu Wine należy szukać w katalogu /pub/Linux/ALPHA/Wine. Kolejne wersje tego programu opatrzone są numerami opartymi na dacie ich powstania – na przykład wersja Wine-950727 pochodzi z 27 lipca 1995 roku. Nowsze wersje mają oczywiście bardziej aktualne daty. Więcej informacji można znaleźć na stronie WWW pod adresem

 

http://daedalus.dra.hmg.gb/gale/wine/wine.html.

Jak zainstalować Wine

W przeciwieństwie do programu DOSemu, program Wine nie musi być instalowany w żadnym konkretnym katalogu. Dla wygody warto utworzyć dowiązanie symboliczne o nazwie np. /usr/wine do katalogu, w którym Wine jest faktycznie zainstalowany (dajmy na to /usr/src/Wine950122), wydając polecenie ln w następujący sposób:

 

ln -s /usr/src/Wine950122 /usr/wine

Kod źródłowy programu Wine rozprowadzany jest w postaci spakowanego archiwum programu tar. Aby je rozpakować, należy wydać polecenie o następującej formie:

 

tar -zxvf nazwapliku.tar.gz

Jak skonfigurować Wine przed kompilacją

Kod źródłowy programu Wine przed kompilacją wymaga skonfigurowania. Skrypt o nazwie Configure pozwala zautomatyzować ten proces, pobierając od użytkownika potrzebne informacje i na ich podstawie tworząc właściwe pliki konfiguracyjne. Konfiguracja Wine składa się z trzech zasadniczych etapów:

1.                                       konfiguracja procesu kompilacji,

2.                                       podanie parametrów czasu wykonania,

3.                                       automatyczna konfiguracja dostosowująca Wine do konkretnego systemu.

Skrypt konfiguracyjny zadaje następujące pytania:

 

Build Wine as emulator or library (E/L) [E]?
Short filenames (Y/N) [N]?
Use the XPM library (Y/N) [N]?
Language [En/De/No] ?
Global configfile name /usr/local/etc/wine.conf

(czy skompilować Wine jako bibliotekę, czy emulator, czy używać krótkich nazw plików, czy wykorzystać bibliotekę XPM, jakiego użyć języka i jaką nazwę ma mieć globalny plik konfiguracyjny?). Bezpiecznie jest zaakceptować sugerowane wartości domyślne wciskając Enter w odpowiedzi na każde z pytań. Podane parametry są zapisywane do globalnego pliku konfiguracyjnego o nazwie autoconf.h. Jeśli konieczna okaże się ich modyfikacja, należy ponownie uruchomić skrypt Configure, dzięki czemu można uniknąć błędów mogących powstać podczas ręcznej edycji pliku autoconf.h.

Wstępna konfiguracja parametrów czasu wykonania za pomocą skryptu Configure

Pytania zadawane w tej części procesu konfiguracyjnego odnoszą się do odpowiednich wpisów w globalnym pliku konfiguracyjnym /usr/local/etc/wine.conf. Poszczególne pytania są dość oczywiste:

 

Which directory do you want to use as A:
(który katalog ma być traktowany jako napęd A:)
Which directory do you want to use as C:
(który katalog ma być traktowany jako napęd C:)

W odpowiedzi na nie należy podać nazwy katalogów, w których są zamontowane DOS-owe dyski A: i C:. Jeśli na przykład partycja zawierająca system MS-Windows zamontowana jest w katalogu /c, właśnie ten katalog należy wskazać w odpowiedzi na drugie pytanie. Jeśli nie planujesz używać stacji dyskietek, nie musisz przejmować się faktem, że napęd A: nie będzie prowadził do prawidłowego katalogu.

Następne pytania dotyczą ścieżek dostępu do katalogów systemowych – katalogu Windows, katalogu System, katalogu, w którym mają być przechowywane pliki tymczasowe i ścieżek przeszukiwania dla programów i bibliotek DLL.

 

Where is the Windows directory 'c:\windows'
Where is the System directory 'c:\windows\system'
Where should Windows apps store temp files 'c:\windows\temp'
Which path should be used to find progs/DLL's 'c:\windows;c:\windows\system'

Podane tu ścieżki dostępu powinny odpowiadać ścieżkom używanym w systemie MS-Windows. Ponieważ domyślnie system ten instalowany jest w katalogu c:\windows, podpowiadane odpowiedzi będą w większości przypadków odpowiednie.

Następne pytanie dotyczy ścieżki dostępu do pliku sysres.dll, zawierającego zasoby systemu Wine, takie jak obrazki czy okienka dialogowe wyświetlane podczas pracy Wine.

 

Where is sysres.dll '/usr/wine/sysres.dll'

Również tu w większości przypadków nie są potrzebne żadne modyfikacje.

Podobnie jak w programie DOSemu, w Wine porty szeregowe i równoległe mogą zostać powiązane z dowolnymi zainstalowanymi w systemie Linux portami podobnego typu. Najprościej jest powiązać porty COM i LPT w taki sam sposób, jak są one skonfigurowane w systemie DOS:

 

Where is COM1" CF_Com1 '/dev/cua0'
Where is COM2" CF_Com2 '/dev/cua1'
Where is LPT1" CF_Lpt1 '/dev/lp0'

Następne pytanie dotyczy nazwy pliku, w którym rejestrowane będą komunikaty generowane podczas pracy Wine. Wybranie pliku o nazwie CON spowoduje przesyłanie ich do standardowego urządzenia wyjściowego, czyli najczęściej konsoli – takie rozwiązanie umożliwia przekierowanie ich do dowolnego pliku podczas uruchamiania Wine.

 

Log messages to which file (CON = stdout) 'CON'

Domyślnie Wine generuje mnóstwo komunikatów, które mogą nieco zwalniać jego działanie. Jeśli chcesz tego uniknąć, możesz skierować je do urządzenia /dev/null, podając jego nazwę zamiast nazwy pliku.

Następnie wyświetlana jest długa lista typów komunikatów i pytanie:

 

Exclude which messages from the log 'WM_SIZE;WM_TIMER'

Jeśli nie zależy Ci na informacjach o stanie systemu Wine, możesz pozostawić wartość domyślną. Poszczególne klasy komunikatów o błędach mogą być osobno włączane i wyłączane, mogą również być przekierowywane z wiersza poleceń.

Na koniec skrypt Configure wyświetla zawartość globalnego pliku konfiguracyjnego utworzonego na podstawie dostarczonych informacji i daje możliwość edytowania go za pomocą domyślnego edytora tekstów:

 

Do you want to edit it using vi (Y/N) [N]?

Można oczywiście później edytować utworzony plik dowolnym edytorem tekstów, dlatego w tym miejscu można zrezygnować z tej możliwości.

Automatyczna konfiguracja

Po utworzeniu pliku wine.conf skrypt Configure rozpoczyna modyfikowanie kodu źródłowego za pomocą programu xmkmf. Jest to program, który służy do generowania plików makefile dla X Window – tworzy on plik Makefile na podstawie informacji zapisanych w pliku Imakefile, biorąc pod uwagę szczegóły konfiguracji konkretnego systemu X Window.

Tworzenie pliku wykonywalnego

Aby utworzyć plik wykonywalny programu Wine, wystarczy wydać polecenie

 

make

Najtrudniejsza część konfiguracji Wine jest już za tobą. Mimo tego to właśnie kompilacja zabiera najwięcej czasu – w systemie opartym na procesorze Pentium z zegarem 90 MHz trwa ona około ośmiu minut. Aby program mógł zostać poprawnie skonsolidowany, potrzebne będą biblioteki –lXext, więc zainstaluj je najpierw z dysku CD-ROM.

Używanie programu Wine

Używanie Wine sprowadza się do wydania polecenia

 

wine nazwa_programu

Można również konfigurować ten program za pomocą rozlicznych opcji podawanych w wierszu poleceń, pozwalających na przykład na uruchomienie debugera umożliwiającego wyszukiwanie usterek tkwiących w tym programie.

Parametry konfiguracyjne

Globalny plik konfiguracyjny programu Wine o nazwie wine.conf można zwykle znaleźć w katalogu /usr/local/etc. Zapisane w nim parametry są w większości oparte na informacjach podanych podczas wcześniejszej konfiguracji i są zorganizowane w sposób przypominający format plików .ini używanych w systemie Windows. Poniżej przedstawiamy przykładową zawartość tego pliku, wraz z krótkimi komentarzami.

Poniższe wpisy określają, do których katalogów systemu Linux prowadzić będą DOS-owe litery dysków:

 

[drives]
A=/a
C=/c

Następne parametry określają położenie plików systemu Windows i Wine:

 

[wine]
Windows=:\windows
System=c:\windows\system
Temp=c:\temp
Path=c:\windows;c:\windows\system
SystemResources=/users/wine/wine950122/sysres.dll

Kolejna sekcja dotyczy odwzorowania czcionek MS-Windows i czcionek systemu X (gwiazdka jest używana jako symbol wieloznaczny w nazwach czcionek systemu X).

 

[fonts]
system=*-helvetica
mssansserif=*-helvetica
msserif=*-times
fixedsys=*-fixed
arial=*-helvetica
helv=*-helvetica
roman=*-times
default=*-*

Fragmenty przedstawione poniżej definiują odwzorowania odpowiednich portów szeregowych i równoległych systemu Linux na ich DOS-owe odpowiedniki.

 

[serialports]
Com1=/dev/cua0
Com2=/dev/cua1

[parallelports]
Lpt1=/dev/lp0

Poniższe parametry określają klasy rejestrowanych komunikatów diagnostycznych i miejsce, w którym mają one być zapisywane.

 

[spy]
File=CON
Exclude=WM_SIZE;WM_TIMER

Opcje dostępne z wiersza poleceń

Wiersz poleceń przy uruchamianiu programu Wine ma następujący format:

 

wine opcje_wine program opcje_programu

na przykład:

 

bash# /usr/wine/wine –debugmsg +all /c/windows/winmine.exe

Dostępne opcje zostały zebrane w tabeli 59.1.

Tabela 59.1. Opcje programu Wine dostępne z wiersza poleceń

...
Zgłoś jeśli naruszono regulamin