[OpenBSD]

[Spis treści] [Sekcja 10 - Zarządzanie systemem] [Sekcja 12 - Pytania dotyczące poszczególnych platform]

11 - X Window System


Spis treści


11.1 - Wprowadzenie do X-ów X

X Window System (czasem po prostu nazywany "X", a czasem, niepoprawnie nazywany "X Windows") to środowisko dostarczające graficzne usługi dla OpenBSD i innych systemów Unix. Jednakże, samodzielnie, X-y dostarczają bardzo niewiele: konieczne jest także posiadanie "menadżera okien" (ang. "Window Manager"), właściwego interfejsu użytkownika. Większość "osobowości" ma wrażenie, że X-y należą bardziej do menadżera okien, niż do samych X-ów. OpenBSD dostarczany jest z wolną wesją menadżera okien fvwm(1), chociaż możesz korzystać z jednego z pozostałych menadżerów okien znajdujących się w pakietach. Aby otrzymać listę dostępnych menadżerów szukaj korzystając z klucza "window manager".

X-y zostały opracowane jako protokół "klient-serwer", chociaż ta terminologia jest czasem pogmatwana. Komputer z grafiką na ekranie jest "Serwerem X-ów". Aplikacja która kieruje do serwera X-ów to co ma być wyświetlone na ekranie jest "Klientem X-ów", nawet mimo tego, że może być to znacznie silniejszy komputer w centrum komputerowym. Model ten może być wykorzystany do wielkich, wymagających znacznych zasobów, aplikacji (klientów X-ów) pracujących na bardzo silnych maszynach i korzystających z serwerów X-ów działających na niewielkich, mało wydajnych komputerach biurowych.

Możliwe jest uruchomienie klienta X-ów w systemie bez żadnego graficznego wsparcia. Przykładowo, niektórzy mogą posiadać aplikacje (klienta X-ów) działającą na mvme88k, wyświetlającego wyjście na ekranie stacji alpha (serwerze X-ów). Ponieważ X jest dobrze zdefiniowanym, niezależnym od platformy protokołem, jest także możliwe uruchomienie graficznej aplikacji X na (przykładowo) stacji z Solarisem i użycie OpenBSD jako maszyny do wyświetlenia.

Klient i serwer mogą także działać na tej samej maszynie i w większości tej sekcji będziemy przyjmować takie założenie.

11.1.1 - Jak szybkiego komputera potrzebuję do uruchomienia X-ów?

Same X-y to całkiem duży program, jeżeli będziesz je włączał i wyłączał zalecany byłby szybki komputer. Jednakże, raz uruchomione, wykazują dobrą responsywność na bardzo skromnych komputerach. Aby otrzymać odpowiednią responsywność wyświetlania dla niektórych platform, nawet dla zwykłego tekstu, będziesz potrzebował uruchomionych X-ów. Platformy takie jak sparc czy sparc64, w zamierzeniu miały być używane z graficznym interfejsem użytkownika, zatem wydajność konsoli tekstowej jest słaba.

Zgodnie z tym co zostało powiedziane wcześniej, głównym założeniem uruchamiania X-ów jest uruchamianie w nim aplikacji. Niektóre programy są bardzo skromne, inne wydają się zabierać i używać całych zasobów systemowych (procesor i pamięć) jakie jesteś im w stanie dostarczyć. Oczywiście, niektórzy użytkownicy lubią używać X-ów do uruchamiania dużej liczby xterm(1)ów, co można wykonać na bardzo skromnym sprzęcie.

11.1.2 - Czy mogę uzyskać każdy rodzaj grafiki bez X-ów?

Zakładając że nie interesuje cię grafika ASCII, która wymaga pewnych sterowników (ang. "framebuffer console driver"). Niektóre systemy operacyjne dostarczają takie sterowniki, jednak obecnie nie istnieje żaden dla OpenBSD, ani tez nie istnieje specjalne zainteresowanie wśród developerów na utworzenie takiego.

11.2 - Konfiguracja X-ów

Konfiguracja X-ów różni się istotnie pomiędzy platformami. W każdym przypadku istnieją instrukcje ogólne oraz informacje zależne od platformy znajdujące się w pliku /usr/X11R6/README w zainstalowanym systemie.

Kilka platform sterownika "apertury" xf86(4) dla X-ów, który zapewnia dostęp do pamięci i portów I/O na karcie VGA, a także rejestrów konfiguracyjnych PCI wymaganych przez serwery X-ów. Sterownik ten musi zostać włączony zanim zostanie użyty albo poprzez twierdzącą odpowiedź na następujące pytanie podczas instalacji:

Do you expect to run the X window System [no]
albo poprzez zmianę wartości machdep.allowaperture na odpowiednią nie zerową wartość w /etc/sysctl.conf (odpowiednią dla twojej platformy) i restart maszyny (ten parametr sysctl nie może być zmieniony po całkowitym starcie systemu ze względu na pewne aspekty z zakresu bezpieczeństwa). Są pewne zagadnienia związanie z bezpieczeństwem, zatem nie włączaj tej opcji jeżeli jej nie potrzebujesz.

11.2.1 - alpha

/usr/X11R6/README dla platformy alpha.

Ustaw machdep.allowaperture=1 w /etc/sysctl.conf.

Obsługiwane są zarówno karty TGA jak i VGA. Zadna poźniejsza konfiguracja nie powinna być konieczna.

11.2.2 - amd64

/usr/X11R6/README dla amd64.

Ustaw machdep.allowaperture=2 w /etc/sysctl.conf.

X-y dla amd64 bardzo często konfigurują się automatycznie, zatem w wielu przypadkach nie są konieczne żadne późniejsze zmiany konfiguracji. Jeżeli jednak taka konfiguracja jest potrzebna skorzystaj z procesu X -configure opisanego poniżej.

11.2.3 - armish

Brak serwerów X-ów, dostępne są tylko aplikacje klienckie.

11.2.4 - hp300

/usr/X11R6/README dla hp300.

11.2.5 - hppa

Brak serwerów X-ów, dostępne są tylko aplikacje klienckie.

11.2.6 - i386

/usr/X11R6/README dla i386.

Ustaw machdep.allowaperture=2 w /etc/sysctl.conf.

Ze względu na nieprawdopodobną ilość dostępnych kart graficznych, myszy, klawiatur i innego sprzętu, konfiguracja X-ów w systemie i386 może być ekscytująca. Ekscytująca na tyle by poświęcić jej osobną sekcję w tym dokumencie.

Szczęśliwie, sprawy nie zawsze wyglądają tak źle jak sie wydają -- w wielu przypadkach X-y będą "po prostu działały" po wpisaniu polecenia "startx". W takich przypadkach, zasoby twojego komputera zostaną wykryte i ustawione zgodnie ze swoimi możliwościami, a X-y będą działały bardzo dobrze.

11.2.7 - landisk

Brak serwerów X-ów, dostępne są tylko aplikacje klienckie.

11.2.8 - luna88k

Brak serwerów X-ów, dostępne są tylko aplikacje klienckie.

11.2.9 - mac68k

/usr/X11R6/README dla mac68k.

Systemy Mac68k "po prostu działają" z X-ami, nie jest potrzebna dodatkowa konfiguracja.

Mysz: Standardowa myszka Macintisha posiada tylko jeden klawisz, co jest problemem, ponieważ X-y zakładają myszkę trzy-klawiszową. Niektóre myszki innych producentów pozwolą ci na uzyskanie drugiego klawisza który będzie działał pod X-ami. W przeciwnym przypadku zobacz stronę manuala Xmac68k(1) pod kątem emulacji klawiszy myszki.

11.2.10 - macppc

/usr/X11R6/README dla macppc.

Ustaw machdep.allowaperture=2 w /etc/sysctl.conf.

Obsługiwane systemy Macintosh PPC mogą być uruchomione w dwóch różnych trybach: "accelerated" i "framebuffer" (brak akceleracji).

W trybie "framebuffer" system pracuje z 8-bitami na pixel i rozdzielczość ekranu kontrolowana jest przez środowisko Macintosha, zatem prawdopodobnie będziesz chciał posiadać małą instalację systemu MacOS'a. Tryb ten posiada podstawową zaletę "działania" chociaż może być flustrująco nieelastyczny (przykładowo zmiana rozdzielczości może wymagać uruchomienia MacOS'a).

Jeżeli twój Macintosh posiada kartę graficzną opartą o chipset ATI, możesz skorzystać z trybu akcelerowanego X serwera, pozwalającego uzyskać lepszą wydajność i kontrolę w środowisku OpenBSD. Karty graficzne NVIDIA w niektórych systemach macppc mogą również w większości przypadków działać. Plik README zawiera szczegóły konfiguracji akcelerowanych sterowników, rozpocznij od przykładowego pliku konfiguracyjnego.

Podczas gdy plik README opisuje przypadek korzystania z jedno-klawiszowej myszy z X-ami, o ile nie korzystasz z laptopa, jest szczególnie zalecany zakup nowoczesnej myszki USB.

11.2.11 - mvme68k

Brak serwerów X-ów, dostępne są tylko aplikacje klienckie.

11.2.12 - mvme88k

Brak serwerów X-ów, dostępne są tylko aplikacje klienckie.

11.2.13 - sgi

Brak serwerów X-ów, dostępne są tylko aplikacje klienckie.

11.2.14 - sparc

/usr/X11R6/README dla sparc.

Z jednym obsługiwanym framebufferem żadna dodatkowa konfiguracja nie jest wymagana. Jeśli chcesz korzystać z konfiguracji wielo-monitorowej, zobacz podany poniżej plik README.

Rozdzielczość jest kontrolowana przez firmware przed uruchomieniem OpenBSD.

11.2.15 - sparc64

/usr/X11R6/README dla sparc64.

Istnieje kilka wersji tych maszyn zatem będziesz musiał określić jaką szynę systemową posiada twój komputer (PCI czy SBus), do jakiego portu podłączona jest myszka (zstty, com czy USB/PS2), oraz jaka jest karta graficzna. Rozpocznij z przykładowym xorg.conf z pliku README, a następnie zmodyfikuj go zgodnie z posiadanym sprzętem i potrzebami. Nie oczekuj, że przykładowy plik konfiguracyjny będzie działał bez modyfikacji

11.2.16 - vax

/usr/X11R6/README dla vax.

Obecnie X serwer działa tylko na VAXstation 4000 z framebufferami lcg(4) lub lcspx(4).

11.2.17 - zaurus

/usr/X11R6/README dla zaurus.

Konfiguracja jest zbędna, X-y "po prostu działają".

11.3 - Konfiguracja X-ów dla amd64 oraz i386

Różnorodność sprzętu dla tych platform czyni proces konfiguracji X-ów "zawiłym".

11.3.1 - Konfiguracja X.Org

X.Org uczynił znaczne udoskonalenia by ich serwery "po prostu działały". W wielu przypadkach, to Po Prostu Działa bez jakiegokolwiek pliku /etc/X11/xorg.conf. Nie zawsze jednak, ponieważ czasami musisz dostosować ustawienia tak by w końcu działało.

Istnieją trzy programy które można użyć do prawie automatycznego utworzenia pliku konfiguracyjnego dla serwerów X-ów X.Org i386. Niestety, żaden z nich nie gwarantuje utworzenia użytecznego pliku xorg.conf.

Jako dodatek do wyżej wymienionych programów, inną tradycyjną metodą na skonfigurowanie serwera X-ów, jest skorzystanie z ulubionej przeglądarki internetowej do poszukiwań kogoś innego kto już rozwiązał twój problem. Pomimo iż nie jest to zła metoda, nie będziemy tutaj na nią kłaść nacisku.

11.3.2 - Nasza przykładowa maszyna

Jako demonstrację konfiguracji X-ów, skorzystamy ze starego komputera Celeron 400MHz posiadającego slot AGP. Kartą graficzną jest stara karta AGP, wyświetlana w dmesg jako:
vga1 at pci1 dev 0 function 0 "3DFX Interactive Banshee" rev 0x03
Kiedyś była to high-endowa karta graficzna, z 16MB pamięci RAM, ale obecnie przeważnie nie jest wspierana przez współczense systemy operacyjne. Monitor podłączony do testowego komputera to Sony Multiscan G400 19" CRT, i było by miło uzyskać na nim rozdzielczość 1280x1024 z przyzwoitą jakością odświerzania i 24-bitową głębią kolorów.

Najpierw, po zakończeniu instalacji OpenBSD z X-ami (i upewnieniu się ze sterownik apertury został włączony w kernelu), zobaczmy co automatycznie wykrył i skonfigurował X.Org, w końcu, możemy mieć szczęście. Zatem, po prostu wykonujemy polecenie startx(1). Ekran zrobił się czarny na chwilę, później otrzymałem X-ową "szachownicę", kursor X-ów oraz okno xterm'a.

To działa!

Mniej więcej. Wprawdzie system jest w pełni funkcjonalny, wydaje się że nie obsługuje żadnej z możliwości monitora i oczywiste jest że działa w niskiej rozdzielczości (640x480). Mamy nadzieję poprawić ten wynik. Znacznie poprawić. Oznacza to także, że będziemy musieli stworzyć swój własny plik xorg.conf.

Skorzystajmy z polecenia "X -configure" aby wygenerować startowy plik xorg.conf. Musimy wykonać to jako root:

# X -configure
 [...]
Your xorg.conf file is /root/xorg.conf.new

To test the server, run 'X -config /root/xorg.conf.new'
Przy okazji, komunikat jest poważny -- korzystaj z pełnej ścieżki do twojego pliku xorg.conf.new, nawet jeśli znajduje się on w twoim bierzącym katalogu. Nie stosowanie się do tego wymogu sposowuje, że X(7) nie znajdzie tego pliku a tym samym milcząco skorzysta z domyślnej konfiguracji, która może nie mieć nic wspólnego z plikiem nad którym obecnie pracujesz. Może to spowodować opóźnienie podczas rozwiązania tego problemu. Zaufaj nam.

Zróbmy jak mówi i zobaczmy co uzyskaliśmy:

# X -config /root/xorg.conf.new
Teraz jedyne co otrzymaliśmy to czarny ekran. Sprawy nie wyglądają za dobrze...

Być może teraz jest najlepszy moment by omówić sposoby opuszczenia X-ów w sytuacjach w ktorych wystartują w podobny sposób. W zależności od preferencji:

Szczęśliwie dla nas CTRL-ALT-Backspace spełniło swoje zadanie i powróciliśmy do linii poleceń. Zatem możemy się teraz dowiedzieć co jest nie tak. Napierw, powinniśmy zobaczyć co o tym myśli Xorg, i co zostało zapisne w pliku /var/log/Xorg.0.log. W naszym przypadku wydaje się, że dla X-ów wszystko wyglada dobrze, nie pojawia się żaden oczywisty komunikat o błędzie w logu (linie zaczynające się na "(EE)" oznaczają błędy).

W takich przypadkach pomocna znajomość posiadanego sprzętu. Podłączenie innego spowodowało wyświetlenie komunikatu "Sync. Out of Range". Zatem najwyraźniej konfiguracja X-ów nie pozwala na uruchomienie z naszym monitorem, i może nie działać z ŻADNYM monitorem, jeżeli wybrany tryb graficzny nie jest możliwy do uzyskania na tej konkretnej karcie (pamiętajmy, że X-y sprawdzają chipset karty i to do czego jest potencjalnie zdolna, a nie to jak wykonał kartę producent). Różne monitory robią różne rzeczy gdy synchronizacja jest niewłaściwa, niektóre usiłują wyświetlić ile potrafią, inne wchodzą w tryb oszczędzania energii, niektóre wydają nieznośny dźwięk a inne wyświetlają użyteczny komunikat na ekranie. Ten monitor wydaje się nie należeć do żadnej z powyższych grup. Uważajmy zatem by nie korzystać z tych monitorów przy wstępnej konfiguracji X-ów.

Przeglądając wygenerowany plik xorg.conf.new, natrafimy na cos takiego:

Section "Monitor"
    #DisplaySize      370   270     # mm
    Identifier   "Monitor0"
    VendorName   "SNY"
    ModelName    "SONY CPD-G400"
### Comment all HorizSync and VertSync values to use DDC:
    HorizSync    30.0 - 107.0
    VertRefresh  48.0 - 120.0
    Option      "DPMS"
EndSection
Jako test spróbujmy użyć DDC ("Data Display Channel", system pozwalający monitorowi powiedziec komputerowi i karcie graficznej do czego jest zdolny), i zobaczmy co się stanie. Tym razem otrzymaliśmy deseń X-ów i przesuwający się kursor, czyli to czego oczekiwaliśmy wywołując X-y w ten sposób (kończymy pracę X-ów korzystając z podanej powyżej kombinacji CTRL-ALT-Backspace). Jest to (znowu) niska rozdzielczość, ale działa, zatem możemy być całkiem pewni że mamy problem z synchronizacją i rozdzielczością. Przywracamy poprzednie wartości "HorizSync" oraz "VertRefresh" ponieważ zweryfikowaliśmy te wartości ze znalezioną w Internecie specyfikacją monitora.

Spróbujmy wymusić na Xorg konkretną rozdzielczość i zobaczmy co nam się uda. W sekcji Section "Screen", będącej częścią pliku xorg.conf, chcemy dodać kilka linii. Dodane linie są przedstawione jako pogrubione:

Section "Screen"
     Identifier "Screen0"
     Device     "Card0"
     Monitor    "Monitor0"
        DefaultDepth   24
     SubSection "Display"
             Viewport   0 0
             Depth     1
     EndSubSection
     SubSection "Display"
             Viewport   0 0
             Depth     4
     EndSubSection
     SubSection "Display"
             Viewport   0 0
             Depth     8
     EndSubSection
     SubSection "Display"
             Viewport   0 0
             Depth     15
     EndSubSection
     SubSection "Display"
             Viewport   0 0
             Depth     16
     EndSubSection
     SubSection "Display"
             Viewport   0 0
             Depth     24
                Modes        "1280x1024"
     EndSubSection
EndSection
Podane dwie zmiany przekażą X-om że chcemy korzystać z 24-bitowej głębi kolorów i dla 24-bitowej głębi kolorów chcemy rozdzielczości 1280x1024. Ponieważ żadna inna rozdzielczość nie jest podana dla "Depth 24", system zostanie zostanie zmuszony do korzystania z podanej.

Testujemy podobnie jak wcześniej i... SUKCES! Orzymaliśmy coś co przypomina bardzo ładny obraz w wysokiej rozdzielczości. Zwróć uwagę że WSZYSTKO czego oczekujemy to wzór sieci (bardzo dobry jeżeli chcesz zobaczyć jak dobry jest twój monitor oraz do kalibracji monitorów LCD, nazywany "root weave") i dający się przesuwać kursor. W zamierzeniu nie jest obecnie funkcjonalny.

Teraz chcemy zainstalować plik xorg.conf tak by przekonać się jak dobrze nam poszło w użytkowym środowisku X-ów.

# cp xorg.conf.new /etc/X11/xorg.conf
Możemy teraz wykonać polecenie startx(1). Działa!

Prawdopodobnie dobrze było by również zweryfikować rozdzielczość i głębię kolorów czy odpowiada zamierzonym przez nas ustawieniom, a także czy pracujemy z porządnym odświerzaniem. Możemy się o tym przekonać przy pomocy programów: xrandr(1) oraz xdpyinfo(1). Pośród innych rzeczy, xdpyinfo(1) powie nam:

 [...]
screen #0:
  print screen:    no
  dimensions:    1280x1024 pixels (433x347 millimeters)
  resolution:    75x75 dots per inch
  depths (7):    24, 1, 4, 8, 15, 16, 32
  root window id:    0x44
  depth of root window:    24 planes
 [...]
Zatem, tak, pracujemy z rozdzielczością 1280x1024 w głębią 24-bitową.

xrandr(4) pokaże nam:

 SZ:    Pixels          Physical       Refresh
*0   1280 x 1024   ( 433mm x 347mm )  *85   75   60  
 1   1280 x 960    ( 433mm x 347mm )   85   60  
 [...]
Co oznacza że pracujemy z odświerzaniem 85Hz, i to powinno być bardzo komfortowe środowisko dla większości osób.

11.3.3 - Co jeśli to nie jest takie "proste"?

Czasem rzeczy po prostu nie pasują. Poniżej kilka porad.

11.4 - Uruchamianie X-ów

Istnieją dwie powszechne metody uruchamiania X-ów:

11.4.1 - Na rządanie:

Zaloguj się normalnie na konsolę i wpisz startx(1).

11.4.2 - Start systemu bezpośrednio do X-ów:

Jest to realizowane poprzez xdm(1) (X Display Manager). xdm(1) działa z uprawnieniami root'a, uruchamiając się z rc, i udostępnia ekran logowania. Po pomyślnym uwierzytelnieniu uruchamia sesję X-ów dla danego użytkownika. Jeśli lub gdy ta sesja musi zostać przerwana (włącznie z naciśnięciem CTRL-ALT-Backspace), xdm(1) powróci pokazując ponownie ekran logowania. Z tego powodu NIE próbuj uruchamiać xdm(1) z /etc/rc.conf.local aż do momentu gdy nie będziesz miał pewności że X-y działają tak jak sobie tego życzysz, lub twoja maszyna stanie się naprawdę trudna w zarządzaniu! (w najgorszym przypadku: uruchom system w trybie jednego użytkownika, podobnie jak w przypadku odzyskiwania hasła, i zmień linię xdm_flags w pliku /etc/rc.conf.local.)

Dla niektórych platform będziesz musiał wyłączyć konsolę getty(8) aby korzystać z xdm(1).

[Spis treści] [Sekcja 10 - Zarządzanie systemem] [Sekcja 12 - Pytanie dotyczące poszczególnych platform]


[back] www@openbsd.org
$OpenBSD$